diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a80de32e..9fd4c1bb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,7 @@ - [\#346](https://github.com/cosmos/evm/pull/346) Add eth_createAccessList method and implementation - [\#502](https://github.com/cosmos/evm/pull/502) Add block time in derived logs. - [\#633](https://github.com/cosmos/evm/pull/633) go-ethereum metrics are now emitted on a separate server. default address: 127.0.0.1:8100. +- [\#650](https://github.com/cosmos/evm/pull/650) Make staking precompile queries return the full validators' description structure. ### STATE BREAKING diff --git a/contracts/hardhat.config.js b/contracts/hardhat.config.js index e170ff747..c0e738237 100644 --- a/contracts/hardhat.config.js +++ b/contracts/hardhat.config.js @@ -4,6 +4,13 @@ module.exports = { compilers: [ { version: "0.8.20", + settings: { + optimizer: { + enabled: true, + runs: 100, + }, + viaIR: true, + }, }, // This version is required to compile the werc9 contract. { diff --git a/contracts/solidity/ERC20MinterBurnerDecimals.json b/contracts/solidity/ERC20MinterBurnerDecimals.json index 7e1c5bd80..d26af3b43 100644 --- a/contracts/solidity/ERC20MinterBurnerDecimals.json +++ b/contracts/solidity/ERC20MinterBurnerDecimals.json @@ -701,8 +701,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162003c3638038062003c368339818101604052810190620000379190620005f6565b828281600590816200004a9190620008db565b5080600690816200005c9190620008db565b5050506000600760006101000a81548160ff0219169083151502179055506200009e6000801b620000926200017b60201b60201c565b6200018360201b60201c565b620000df7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620000d36200017b60201b60201c565b6200018360201b60201c565b620001207f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a620001146200017b60201b60201c565b6200018360201b60201c565b620001617f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848620001556200017b60201b60201c565b6200018360201b60201c565b62000172816200019960201b60201c565b505050620009c2565b600033905090565b620001958282620001b760201b60201c565b5050565b80600760016101000a81548160ff021916908360ff16021790555050565b620001c98282620001f560201b60201c565b620001f08160016000858152602001908152602001600020620002e660201b90919060201c565b505050565b6200020782826200031e60201b60201c565b620002e257600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002876200017b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000316836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200038860201b60201c565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200039c83836200040260201b60201c565b620003f7578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620003fc565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200048e8262000443565b810181811067ffffffffffffffff82111715620004b057620004af62000454565b5b80604052505050565b6000620004c562000425565b9050620004d3828262000483565b919050565b600067ffffffffffffffff821115620004f657620004f562000454565b5b620005018262000443565b9050602081019050919050565b60005b838110156200052e57808201518184015260208101905062000511565b60008484015250505050565b6000620005516200054b84620004d8565b620004b9565b90508281526020810184848401111562000570576200056f6200043e565b5b6200057d8482856200050e565b509392505050565b600082601f8301126200059d576200059c62000439565b5b8151620005af8482602086016200053a565b91505092915050565b600060ff82169050919050565b620005d081620005b8565b8114620005dc57600080fd5b50565b600081519050620005f081620005c5565b92915050565b6000806000606084860312156200061257620006116200042f565b5b600084015167ffffffffffffffff81111562000633576200063262000434565b5b620006418682870162000585565b935050602084015167ffffffffffffffff81111562000665576200066462000434565b5b620006738682870162000585565b92505060406200068686828701620005df565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006e357607f821691505b602082108103620006f957620006f86200069b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000724565b6200076f868362000724565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007bc620007b6620007b08462000787565b62000791565b62000787565b9050919050565b6000819050919050565b620007d8836200079b565b620007f0620007e782620007c3565b84845462000731565b825550505050565b600090565b62000807620007f8565b62000814818484620007cd565b505050565b5b818110156200083c5762000830600082620007fd565b6001810190506200081a565b5050565b601f8211156200088b576200085581620006ff565b620008608462000714565b8101602085101562000870578190505b620008886200087f8562000714565b83018262000819565b50505b505050565b600082821c905092915050565b6000620008b06000198460080262000890565b1980831691505092915050565b6000620008cb83836200089d565b9150826002028217905092915050565b620008e68262000690565b67ffffffffffffffff81111562000902576200090162000454565b5b6200090e8254620006ca565b6200091b82828562000840565b600060209050601f8311600181146200095357600084156200093e578287015190505b6200094a8582620008bd565b865550620009ba565b601f1984166200096386620006ff565b60005b828110156200098d5784890151825560018201915060208501945060208101905062000966565b86831015620009ad5784890151620009a9601f8916826200089d565b8355505b6001600288020188555050505b505050505050565b61326480620009d26000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80635c975abb11610104578063a217fddf116100a2578063d539139311610071578063d53913931461057d578063d547741f1461059b578063dd62ed3e146105b7578063e63ab1e9146105e7576101da565b8063a217fddf146104cf578063a457c2d7146104ed578063a9059cbb1461051d578063ca15c8731461054d576101da565b80638456cb59116100de5780638456cb59146104475780639010d07c1461045157806391d148541461048157806395d89b41146104b1576101da565b80635c975abb146103dd57806370a08231146103fb57806379cc67901461042b576101da565b8063282c51f31161017c578063395093511161014b578063395093511461036b5780633f4ba83a1461039b57806340c10f19146103a557806342966c68146103c1576101da565b8063282c51f3146102f75780632f2ff15d14610315578063313ce5671461033157806336568abe1461034f576101da565b806318160ddd116101b857806318160ddd1461025d5780631cf2c7e21461027b57806323b872dd14610297578063248a9ca3146102c7576101da565b806301ffc9a7146101df57806306fdde031461020f578063095ea7b31461022d575b600080fd5b6101f960048036038101906101f491906120ab565b610605565b60405161020691906120f3565b60405180910390f35b61021761067f565b604051610224919061219e565b60405180910390f35b61024760048036038101906102429190612254565b610711565b60405161025491906120f3565b60405180910390f35b610265610734565b60405161027291906122a3565b60405180910390f35b61029560048036038101906102909190612254565b61073e565b005b6102b160048036038101906102ac91906122be565b6107bc565b6040516102be91906120f3565b60405180910390f35b6102e160048036038101906102dc9190612347565b6107eb565b6040516102ee9190612383565b60405180910390f35b6102ff61080a565b60405161030c9190612383565b60405180910390f35b61032f600480360381019061032a919061239e565b61082e565b005b61033961084f565b60405161034691906123fa565b60405180910390f35b6103696004803603810190610364919061239e565b610866565b005b61038560048036038101906103809190612254565b6108e9565b60405161039291906120f3565b60405180910390f35b6103a3610920565b005b6103bf60048036038101906103ba9190612254565b61099a565b005b6103db60048036038101906103d69190612415565b610a18565b005b6103e5610a2c565b6040516103f291906120f3565b60405180910390f35b61041560048036038101906104109190612442565b610a43565b60405161042291906122a3565b60405180910390f35b61044560048036038101906104409190612254565b610a8c565b005b61044f610aac565b005b61046b6004803603810190610466919061246f565b610b26565b60405161047891906124be565b60405180910390f35b61049b6004803603810190610496919061239e565b610b55565b6040516104a891906120f3565b60405180910390f35b6104b9610bbf565b6040516104c6919061219e565b60405180910390f35b6104d7610c51565b6040516104e49190612383565b60405180910390f35b61050760048036038101906105029190612254565b610c58565b60405161051491906120f3565b60405180910390f35b61053760048036038101906105329190612254565b610ccf565b60405161054491906120f3565b60405180910390f35b61056760048036038101906105629190612347565b610cf2565b60405161057491906122a3565b60405180910390f35b610585610d16565b6040516105929190612383565b60405180910390f35b6105b560048036038101906105b0919061239e565b610d3a565b005b6105d160048036038101906105cc91906124d9565b610d5b565b6040516105de91906122a3565b60405180910390f35b6105ef610de2565b6040516105fc9190612383565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610678575061067782610e06565b5b9050919050565b60606005805461068e90612548565b80601f01602080910402602001604051908101604052809291908181526020018280546106ba90612548565b80156107075780601f106106dc57610100808354040283529160200191610707565b820191906000526020600020905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b60008061071c610e80565b9050610729818585610e88565b600191505092915050565b6000600454905090565b61076f7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861076a610e80565b610b55565b6107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a5906125eb565b60405180910390fd5b6107b88282611051565b5050565b6000806107c7610e80565b90506107d4858285611220565b6107df8585856112ac565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b610837826107eb565b61084081611525565b61084a8383611539565b505050565b6000600760019054906101000a900460ff16905090565b61086e610e80565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d29061267d565b60405180910390fd5b6108e5828261156d565b5050565b6000806108f4610e80565b90506109158185856109068589610d5b565b61091091906126cc565b610e88565b600191505092915050565b6109517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61094c610e80565b610b55565b610990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098790612772565b60405180910390fd5b6109986115a1565b565b6109cb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66109c6610e80565b610b55565b610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0190612804565b60405180910390fd5b610a148282611604565b5050565b610a29610a23610e80565b82611051565b50565b6000600760009054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a9e82610a98610e80565b83611220565b610aa88282611051565b5050565b610add7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ad8610e80565b610b55565b610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390612896565b60405180910390fd5b610b2461175b565b565b6000610b4d82600160008681526020019081526020016000206117be90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060068054610bce90612548565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfa90612548565b8015610c475780601f10610c1c57610100808354040283529160200191610c47565b820191906000526020600020905b815481529060010190602001808311610c2a57829003601f168201915b5050505050905090565b6000801b81565b600080610c63610e80565b90506000610c718286610d5b565b905083811015610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90612928565b60405180910390fd5b610cc38286868403610e88565b60019250505092915050565b600080610cda610e80565b9050610ce78185856112ac565b600191505092915050565b6000610d0f600160008481526020019081526020016000206117d8565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610d43826107eb565b610d4c81611525565b610d56838361156d565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610e795750610e78826117ed565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906129ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90612a4c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161104491906122a3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790612ade565b60405180910390fd5b6110cc82600083611857565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90612b70565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161120791906122a3565b60405180910390a361121b83600084611867565b505050565b600061122c8484610d5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112a65781811015611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90612bdc565b60405180910390fd5b6112a58484848403610e88565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612c6e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138190612d00565b60405180910390fd5b611395838383611857565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390612d92565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161150c91906122a3565b60405180910390a361151f848484611867565b50505050565b61153681611531610e80565b61186c565b50565b61154382826118f1565b61156881600160008581526020019081526020016000206119d190919063ffffffff16565b505050565b6115778282611a01565b61159c8160016000858152602001908152602001600020611ae290919063ffffffff16565b505050565b6115a9611b12565b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6115ed610e80565b6040516115fa91906124be565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a90612dfe565b60405180910390fd5b61167f60008383611857565b806004600082825461169191906126cc565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161174391906122a3565b60405180910390a361175760008383611867565b5050565b611763611b5b565b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117a7610e80565b6040516117b491906124be565b60405180910390a1565b60006117cd8360000183611ba5565b60001c905092915050565b60006117e682600001611bd0565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611862838383611be1565b505050565b505050565b6118768282610b55565b6118ed5761188381611c39565b6118918360001c6020611c66565b6040516020016118a2929190612ef2565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e4919061219e565b60405180910390fd5b5050565b6118fb8282610b55565b6119cd57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611972610e80565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006119f9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ea2565b905092915050565b611a0b8282610b55565b15611ade57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a83610e80565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611b0a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f12565b905092915050565b611b1a610a2c565b611b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5090612f78565b60405180910390fd5b565b611b63610a2c565b15611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90612fe4565b60405180910390fd5b565b6000826000018281548110611bbd57611bbc613004565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b611bec838383612026565b611bf4610a2c565b15611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b906130a5565b60405180910390fd5b505050565b6060611c5f8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611c66565b9050919050565b606060006002836002611c7991906130c5565b611c8391906126cc565b67ffffffffffffffff811115611c9c57611c9b613107565b5b6040519080825280601f01601f191660200182016040528015611cce5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611d0657611d05613004565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d6a57611d69613004565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611daa91906130c5565b611db491906126cc565b90505b6001811115611e54577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611df657611df5613004565b5b1a60f81b828281518110611e0d57611e0c613004565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611e4d90613136565b9050611db7565b5060008414611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f906131ab565b60405180910390fd5b8091505092915050565b6000611eae838361202b565b611f07578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611f0c565b600090505b92915050565b6000808360010160008481526020019081526020016000205490506000811461201a576000600182611f4491906131cb565b9050600060018660000180549050611f5c91906131cb565b9050818114611fcb576000866000018281548110611f7d57611f7c613004565b5b9060005260206000200154905080876000018481548110611fa157611fa0613004565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611fdf57611fde6131ff565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612020565b60009150505b92915050565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61208881612053565b811461209357600080fd5b50565b6000813590506120a58161207f565b92915050565b6000602082840312156120c1576120c061204e565b5b60006120cf84828501612096565b91505092915050565b60008115159050919050565b6120ed816120d8565b82525050565b600060208201905061210860008301846120e4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561214857808201518184015260208101905061212d565b60008484015250505050565b6000601f19601f8301169050919050565b60006121708261210e565b61217a8185612119565b935061218a81856020860161212a565b61219381612154565b840191505092915050565b600060208201905081810360008301526121b88184612165565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121eb826121c0565b9050919050565b6121fb816121e0565b811461220657600080fd5b50565b600081359050612218816121f2565b92915050565b6000819050919050565b6122318161221e565b811461223c57600080fd5b50565b60008135905061224e81612228565b92915050565b6000806040838503121561226b5761226a61204e565b5b600061227985828601612209565b925050602061228a8582860161223f565b9150509250929050565b61229d8161221e565b82525050565b60006020820190506122b86000830184612294565b92915050565b6000806000606084860312156122d7576122d661204e565b5b60006122e586828701612209565b93505060206122f686828701612209565b92505060406123078682870161223f565b9150509250925092565b6000819050919050565b61232481612311565b811461232f57600080fd5b50565b6000813590506123418161231b565b92915050565b60006020828403121561235d5761235c61204e565b5b600061236b84828501612332565b91505092915050565b61237d81612311565b82525050565b60006020820190506123986000830184612374565b92915050565b600080604083850312156123b5576123b461204e565b5b60006123c385828601612332565b92505060206123d485828601612209565b9150509250929050565b600060ff82169050919050565b6123f4816123de565b82525050565b600060208201905061240f60008301846123eb565b92915050565b60006020828403121561242b5761242a61204e565b5b60006124398482850161223f565b91505092915050565b6000602082840312156124585761245761204e565b5b600061246684828501612209565b91505092915050565b600080604083850312156124865761248561204e565b5b600061249485828601612332565b92505060206124a58582860161223f565b9150509250929050565b6124b8816121e0565b82525050565b60006020820190506124d360008301846124af565b92915050565b600080604083850312156124f0576124ef61204e565b5b60006124fe85828601612209565b925050602061250f85828601612209565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061256057607f821691505b60208210810361257357612572612519565b5b50919050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f68617665206275726e657220726f6c6520746f206275726e0000000000000000602082015250565b60006125d5603883612119565b91506125e082612579565b604082019050919050565b60006020820190508181036000830152612604816125c8565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612667602f83612119565b91506126728261260b565b604082019050919050565b600060208201905081810360008301526126968161265a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126d78261221e565b91506126e28361221e565b92508282019050808211156126fa576126f961269d565b5b92915050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f686176652070617573657220726f6c6520746f20756e70617573650000000000602082015250565b600061275c603b83612119565b915061276782612700565b604082019050919050565b6000602082019050818103600083015261278b8161274f565b9050919050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000602082015250565b60006127ee603883612119565b91506127f982612792565b604082019050919050565b6000602082019050818103600083015261281d816127e1565b9050919050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f686176652070617573657220726f6c6520746f20706175736500000000000000602082015250565b6000612880603983612119565b915061288b82612824565b604082019050919050565b600060208201905081810360008301526128af81612873565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612912602583612119565b915061291d826128b6565b604082019050919050565b6000602082019050818103600083015261294181612905565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129a4602483612119565b91506129af82612948565b604082019050919050565b600060208201905081810360008301526129d381612997565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a36602283612119565b9150612a41826129da565b604082019050919050565b60006020820190508181036000830152612a6581612a29565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ac8602183612119565b9150612ad382612a6c565b604082019050919050565b60006020820190508181036000830152612af781612abb565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b5a602283612119565b9150612b6582612afe565b604082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612bc6601d83612119565b9150612bd182612b90565b602082019050919050565b60006020820190508181036000830152612bf581612bb9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c58602583612119565b9150612c6382612bfc565b604082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cea602383612119565b9150612cf582612c8e565b604082019050919050565b60006020820190508181036000830152612d1981612cdd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612d7c602683612119565b9150612d8782612d20565b604082019050919050565b60006020820190508181036000830152612dab81612d6f565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612de8601f83612119565b9150612df382612db2565b602082019050919050565b60006020820190508181036000830152612e1781612ddb565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612e5f601783612e1e565b9150612e6a82612e29565b601782019050919050565b6000612e808261210e565b612e8a8185612e1e565b9350612e9a81856020860161212a565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612edc601183612e1e565b9150612ee782612ea6565b601182019050919050565b6000612efd82612e52565b9150612f098285612e75565b9150612f1482612ecf565b9150612f208284612e75565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612f62601483612119565b9150612f6d82612f2c565b602082019050919050565b60006020820190508181036000830152612f9181612f55565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612fce601083612119565b9150612fd982612f98565b602082019050919050565b60006020820190508181036000830152612ffd81612fc1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b600061308f602a83612119565b915061309a82613033565b604082019050919050565b600060208201905081810360008301526130be81613082565b9050919050565b60006130d08261221e565b91506130db8361221e565b92508282026130e98161221e565b91508282048414831517613100576130ff61269d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006131418261221e565b9150600082036131545761315361269d565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613195602083612119565b91506131a08261315f565b602082019050919050565b600060208201905081810360008301526131c481613188565b9050919050565b60006131d68261221e565b91506131e18361221e565b92508282039050818111156131f9576131f861269d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122085be590fcd27af24982116d9f60fa42a00c725b7ba15ba740f13e78af698fedf64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80635c975abb11610104578063a217fddf116100a2578063d539139311610071578063d53913931461057d578063d547741f1461059b578063dd62ed3e146105b7578063e63ab1e9146105e7576101da565b8063a217fddf146104cf578063a457c2d7146104ed578063a9059cbb1461051d578063ca15c8731461054d576101da565b80638456cb59116100de5780638456cb59146104475780639010d07c1461045157806391d148541461048157806395d89b41146104b1576101da565b80635c975abb146103dd57806370a08231146103fb57806379cc67901461042b576101da565b8063282c51f31161017c578063395093511161014b578063395093511461036b5780633f4ba83a1461039b57806340c10f19146103a557806342966c68146103c1576101da565b8063282c51f3146102f75780632f2ff15d14610315578063313ce5671461033157806336568abe1461034f576101da565b806318160ddd116101b857806318160ddd1461025d5780631cf2c7e21461027b57806323b872dd14610297578063248a9ca3146102c7576101da565b806301ffc9a7146101df57806306fdde031461020f578063095ea7b31461022d575b600080fd5b6101f960048036038101906101f491906120ab565b610605565b60405161020691906120f3565b60405180910390f35b61021761067f565b604051610224919061219e565b60405180910390f35b61024760048036038101906102429190612254565b610711565b60405161025491906120f3565b60405180910390f35b610265610734565b60405161027291906122a3565b60405180910390f35b61029560048036038101906102909190612254565b61073e565b005b6102b160048036038101906102ac91906122be565b6107bc565b6040516102be91906120f3565b60405180910390f35b6102e160048036038101906102dc9190612347565b6107eb565b6040516102ee9190612383565b60405180910390f35b6102ff61080a565b60405161030c9190612383565b60405180910390f35b61032f600480360381019061032a919061239e565b61082e565b005b61033961084f565b60405161034691906123fa565b60405180910390f35b6103696004803603810190610364919061239e565b610866565b005b61038560048036038101906103809190612254565b6108e9565b60405161039291906120f3565b60405180910390f35b6103a3610920565b005b6103bf60048036038101906103ba9190612254565b61099a565b005b6103db60048036038101906103d69190612415565b610a18565b005b6103e5610a2c565b6040516103f291906120f3565b60405180910390f35b61041560048036038101906104109190612442565b610a43565b60405161042291906122a3565b60405180910390f35b61044560048036038101906104409190612254565b610a8c565b005b61044f610aac565b005b61046b6004803603810190610466919061246f565b610b26565b60405161047891906124be565b60405180910390f35b61049b6004803603810190610496919061239e565b610b55565b6040516104a891906120f3565b60405180910390f35b6104b9610bbf565b6040516104c6919061219e565b60405180910390f35b6104d7610c51565b6040516104e49190612383565b60405180910390f35b61050760048036038101906105029190612254565b610c58565b60405161051491906120f3565b60405180910390f35b61053760048036038101906105329190612254565b610ccf565b60405161054491906120f3565b60405180910390f35b61056760048036038101906105629190612347565b610cf2565b60405161057491906122a3565b60405180910390f35b610585610d16565b6040516105929190612383565b60405180910390f35b6105b560048036038101906105b0919061239e565b610d3a565b005b6105d160048036038101906105cc91906124d9565b610d5b565b6040516105de91906122a3565b60405180910390f35b6105ef610de2565b6040516105fc9190612383565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610678575061067782610e06565b5b9050919050565b60606005805461068e90612548565b80601f01602080910402602001604051908101604052809291908181526020018280546106ba90612548565b80156107075780601f106106dc57610100808354040283529160200191610707565b820191906000526020600020905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b60008061071c610e80565b9050610729818585610e88565b600191505092915050565b6000600454905090565b61076f7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861076a610e80565b610b55565b6107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a5906125eb565b60405180910390fd5b6107b88282611051565b5050565b6000806107c7610e80565b90506107d4858285611220565b6107df8585856112ac565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b610837826107eb565b61084081611525565b61084a8383611539565b505050565b6000600760019054906101000a900460ff16905090565b61086e610e80565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d29061267d565b60405180910390fd5b6108e5828261156d565b5050565b6000806108f4610e80565b90506109158185856109068589610d5b565b61091091906126cc565b610e88565b600191505092915050565b6109517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61094c610e80565b610b55565b610990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098790612772565b60405180910390fd5b6109986115a1565b565b6109cb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66109c6610e80565b610b55565b610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0190612804565b60405180910390fd5b610a148282611604565b5050565b610a29610a23610e80565b82611051565b50565b6000600760009054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a9e82610a98610e80565b83611220565b610aa88282611051565b5050565b610add7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610ad8610e80565b610b55565b610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390612896565b60405180910390fd5b610b2461175b565b565b6000610b4d82600160008681526020019081526020016000206117be90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060068054610bce90612548565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfa90612548565b8015610c475780601f10610c1c57610100808354040283529160200191610c47565b820191906000526020600020905b815481529060010190602001808311610c2a57829003601f168201915b5050505050905090565b6000801b81565b600080610c63610e80565b90506000610c718286610d5b565b905083811015610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad90612928565b60405180910390fd5b610cc38286868403610e88565b60019250505092915050565b600080610cda610e80565b9050610ce78185856112ac565b600191505092915050565b6000610d0f600160008481526020019081526020016000206117d8565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610d43826107eb565b610d4c81611525565b610d56838361156d565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610e795750610e78826117ed565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906129ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d90612a4c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161104491906122a3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b790612ade565b60405180910390fd5b6110cc82600083611857565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90612b70565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161120791906122a3565b60405180910390a361121b83600084611867565b505050565b600061122c8484610d5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112a65781811015611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90612bdc565b60405180910390fd5b6112a58484848403610e88565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612c6e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138190612d00565b60405180910390fd5b611395838383611857565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390612d92565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161150c91906122a3565b60405180910390a361151f848484611867565b50505050565b61153681611531610e80565b61186c565b50565b61154382826118f1565b61156881600160008581526020019081526020016000206119d190919063ffffffff16565b505050565b6115778282611a01565b61159c8160016000858152602001908152602001600020611ae290919063ffffffff16565b505050565b6115a9611b12565b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6115ed610e80565b6040516115fa91906124be565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a90612dfe565b60405180910390fd5b61167f60008383611857565b806004600082825461169191906126cc565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161174391906122a3565b60405180910390a361175760008383611867565b5050565b611763611b5b565b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117a7610e80565b6040516117b491906124be565b60405180910390a1565b60006117cd8360000183611ba5565b60001c905092915050565b60006117e682600001611bd0565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611862838383611be1565b505050565b505050565b6118768282610b55565b6118ed5761188381611c39565b6118918360001c6020611c66565b6040516020016118a2929190612ef2565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e4919061219e565b60405180910390fd5b5050565b6118fb8282610b55565b6119cd57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611972610e80565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006119f9836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611ea2565b905092915050565b611a0b8282610b55565b15611ade57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611a83610e80565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611b0a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611f12565b905092915050565b611b1a610a2c565b611b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5090612f78565b60405180910390fd5b565b611b63610a2c565b15611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90612fe4565b60405180910390fd5b565b6000826000018281548110611bbd57611bbc613004565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b611bec838383612026565b611bf4610a2c565b15611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b906130a5565b60405180910390fd5b505050565b6060611c5f8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611c66565b9050919050565b606060006002836002611c7991906130c5565b611c8391906126cc565b67ffffffffffffffff811115611c9c57611c9b613107565b5b6040519080825280601f01601f191660200182016040528015611cce5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611d0657611d05613004565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d6a57611d69613004565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611daa91906130c5565b611db491906126cc565b90505b6001811115611e54577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611df657611df5613004565b5b1a60f81b828281518110611e0d57611e0c613004565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611e4d90613136565b9050611db7565b5060008414611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f906131ab565b60405180910390fd5b8091505092915050565b6000611eae838361202b565b611f07578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611f0c565b600090505b92915050565b6000808360010160008481526020019081526020016000205490506000811461201a576000600182611f4491906131cb565b9050600060018660000180549050611f5c91906131cb565b9050818114611fcb576000866000018281548110611f7d57611f7c613004565b5b9060005260206000200154905080876000018481548110611fa157611fa0613004565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611fdf57611fde6131ff565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612020565b60009150505b92915050565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61208881612053565b811461209357600080fd5b50565b6000813590506120a58161207f565b92915050565b6000602082840312156120c1576120c061204e565b5b60006120cf84828501612096565b91505092915050565b60008115159050919050565b6120ed816120d8565b82525050565b600060208201905061210860008301846120e4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561214857808201518184015260208101905061212d565b60008484015250505050565b6000601f19601f8301169050919050565b60006121708261210e565b61217a8185612119565b935061218a81856020860161212a565b61219381612154565b840191505092915050565b600060208201905081810360008301526121b88184612165565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121eb826121c0565b9050919050565b6121fb816121e0565b811461220657600080fd5b50565b600081359050612218816121f2565b92915050565b6000819050919050565b6122318161221e565b811461223c57600080fd5b50565b60008135905061224e81612228565b92915050565b6000806040838503121561226b5761226a61204e565b5b600061227985828601612209565b925050602061228a8582860161223f565b9150509250929050565b61229d8161221e565b82525050565b60006020820190506122b86000830184612294565b92915050565b6000806000606084860312156122d7576122d661204e565b5b60006122e586828701612209565b93505060206122f686828701612209565b92505060406123078682870161223f565b9150509250925092565b6000819050919050565b61232481612311565b811461232f57600080fd5b50565b6000813590506123418161231b565b92915050565b60006020828403121561235d5761235c61204e565b5b600061236b84828501612332565b91505092915050565b61237d81612311565b82525050565b60006020820190506123986000830184612374565b92915050565b600080604083850312156123b5576123b461204e565b5b60006123c385828601612332565b92505060206123d485828601612209565b9150509250929050565b600060ff82169050919050565b6123f4816123de565b82525050565b600060208201905061240f60008301846123eb565b92915050565b60006020828403121561242b5761242a61204e565b5b60006124398482850161223f565b91505092915050565b6000602082840312156124585761245761204e565b5b600061246684828501612209565b91505092915050565b600080604083850312156124865761248561204e565b5b600061249485828601612332565b92505060206124a58582860161223f565b9150509250929050565b6124b8816121e0565b82525050565b60006020820190506124d360008301846124af565b92915050565b600080604083850312156124f0576124ef61204e565b5b60006124fe85828601612209565b925050602061250f85828601612209565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061256057607f821691505b60208210810361257357612572612519565b5b50919050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f68617665206275726e657220726f6c6520746f206275726e0000000000000000602082015250565b60006125d5603883612119565b91506125e082612579565b604082019050919050565b60006020820190508181036000830152612604816125c8565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612667602f83612119565b91506126728261260b565b604082019050919050565b600060208201905081810360008301526126968161265a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126d78261221e565b91506126e28361221e565b92508282019050808211156126fa576126f961269d565b5b92915050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f686176652070617573657220726f6c6520746f20756e70617573650000000000602082015250565b600061275c603b83612119565b915061276782612700565b604082019050919050565b6000602082019050818103600083015261278b8161274f565b9050919050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000602082015250565b60006127ee603883612119565b91506127f982612792565b604082019050919050565b6000602082019050818103600083015261281d816127e1565b9050919050565b7f45524332304d696e7465724275726e6572446563696d616c733a206d7573742060008201527f686176652070617573657220726f6c6520746f20706175736500000000000000602082015250565b6000612880603983612119565b915061288b82612824565b604082019050919050565b600060208201905081810360008301526128af81612873565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612912602583612119565b915061291d826128b6565b604082019050919050565b6000602082019050818103600083015261294181612905565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129a4602483612119565b91506129af82612948565b604082019050919050565b600060208201905081810360008301526129d381612997565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a36602283612119565b9150612a41826129da565b604082019050919050565b60006020820190508181036000830152612a6581612a29565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ac8602183612119565b9150612ad382612a6c565b604082019050919050565b60006020820190508181036000830152612af781612abb565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b5a602283612119565b9150612b6582612afe565b604082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612bc6601d83612119565b9150612bd182612b90565b602082019050919050565b60006020820190508181036000830152612bf581612bb9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c58602583612119565b9150612c6382612bfc565b604082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cea602383612119565b9150612cf582612c8e565b604082019050919050565b60006020820190508181036000830152612d1981612cdd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612d7c602683612119565b9150612d8782612d20565b604082019050919050565b60006020820190508181036000830152612dab81612d6f565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612de8601f83612119565b9150612df382612db2565b602082019050919050565b60006020820190508181036000830152612e1781612ddb565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612e5f601783612e1e565b9150612e6a82612e29565b601782019050919050565b6000612e808261210e565b612e8a8185612e1e565b9350612e9a81856020860161212a565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612edc601183612e1e565b9150612ee782612ea6565b601182019050919050565b6000612efd82612e52565b9150612f098285612e75565b9150612f1482612ecf565b9150612f208284612e75565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612f62601483612119565b9150612f6d82612f2c565b602082019050919050565b60006020820190508181036000830152612f9181612f55565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612fce601083612119565b9150612fd982612f98565b602082019050919050565b60006020820190508181036000830152612ffd81612fc1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b600061308f602a83612119565b915061309a82613033565b604082019050919050565b600060208201905081810360008301526130be81613082565b9050919050565b60006130d08261221e565b91506130db8361221e565b92508282026130e98161221e565b91508282048414831517613100576130ff61269d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006131418261221e565b9150600082036131545761315361269d565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613195602083612119565b91506131a08261315f565b602082019050919050565b600060208201905081810360008301526131c481613188565b9050919050565b60006131d68261221e565b91506131e18361221e565b92508282039050818111156131f9576131f861269d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122085be590fcd27af24982116d9f60fa42a00c725b7ba15ba740f13e78af698fedf64736f6c63430008140033", + "bytecode": "0x60406080815234620005715762001f80803803806200001e8162000576565b9283398101606082820312620005715781516001600160401b039190828111620005715781620000509185016200059c565b9160209182850151828111620005715786916200006f9187016200059c565b9401519360ff851685036200057157835182811162000488576005918254916001968784811c9416801562000566575b8785101462000467578190601f9485811162000512575b508790858311600114620004aa576000926200049e575b5050600019600383901b1c191690871b1783555b805193841162000488576006548681811c911680156200047d575b86821014620004675784938382116200040d575b505084918311600114620003a35760009262000397575b5050600019600383901b1c191690831b176006555b60ff19806007541660075560008052600082528460002033600052825260ff856000205416156200035c575b600080528282526200017e33866000206200060e565b507f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a680600052600083528560002033600052835260ff8660002054161562000321575b600052828252620001d633866000206200060e565b507f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a80600052600083528560002033600052835260ff86600020541615620002e6575b6000528282526200022e33866000206200060e565b507f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8489081600052600083528560002033600052835260ff86600020541615620002aa575b50600052526200028633836000206200060e565b5061ff006007549160081b169061ff00191617600755516118c490816200069c8239f35b81600052600083528560002033600052835283866000209182541617905533338260008051602062001f60833981519152600080a43862000272565b80600052600083528560002033600052835285600020848382541617905533338260008051602062001f60833981519152600080a462000219565b80600052600083528560002033600052835285600020848382541617905533338260008051602062001f60833981519152600080a4620001c1565b6000805260008252846000203360005282528460002083828254161790553333600060008051602062001f608339815191528180a462000168565b01519050388062000127565b90859350601f198316916006600052856000209260005b87828210620003f65750508411620003dc575b505050811b016006556200013c565b015160001960f88460031b161c19169055388080620003cd565b8385015186558997909501949384019301620003ba565b90919293506006600052856000209084808701821c8301938888106200045d575b9187968a93969594929601901c01915b8281106200044d575062000110565b600081558695508891016200043e565b935082936200042e565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000fc565b634e487b7160e01b600052604160045260246000fd5b015190503880620000cd565b90899350601f1983169187600052896000209260005b8b828210620004fb5750508411620004e1575b505050811b018355620000e1565b015160001960f88460031b161c19169055388080620004d3565b8385015186558d97909501949384019301620004c0565b909150856000528760002085808501881c8201928a86106200055c575b918b918695949301891c01915b8281106200054c575050620000b6565b600081558594508b91016200053c565b925081926200052f565b93607f16936200009f565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176200048857604052565b919080601f84011215620005715782516001600160401b0381116200048857602090620005d2601f8201601f1916830162000576565b92818452828287010111620005715760005b818110620005fa57508260009394955001015290565b8581018301518482018401528201620005e4565b919060018301600090828252806020526040822054156000146200069557845494680100000000000000008610156200068157600186018082558610156200066d57836040949596828552602085200155549382526020522055600190565b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b83526041600452602483fd5b5092505056fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610d3a5750816306fdde0314610c99578163095ea7b314610c6f57816318160ddd14610c515781631cf2c7e214610b9b57816323b872dd14610b5e578163248a9ca314610b34578163282c51f314610af95781632f2ff15d14610a45578163313ce56714610a2057816336568abe1461098e578163395093511461093e5781633f4ba83a1461083057816340c10f191461069957816342966c681461067b5781635c975abb1461065757816370a082311461061f57816379cc6790146105ef5781638456cb59146104e75781639010d07c146104a657816391d148541461046057816395d89b411461037b578163a217fddf14610360578163a457c2d7146102b8578163a9059cbb14610287578163ca15c8731461025f578163d539139314610224578163d547741f146101e257508063dd62ed3e1461019a5763e63ab1e91461016f57600080fd5b346101965781600319360112610196576020905160008051602061182f8339815191528152f35b5080fd5b5034610196578060031936011261019657806020926101b7610df6565b6101bf610e11565b6001600160a01b0391821683526003865283832091168252845220549051908152f35b9190503461022057806003193601126102205761021d91356102186001610207610e11565b938387528660205286200154610e27565b611187565b80f35b8280fd5b505034610196578160031936011261019657602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b9050346102205760203660031901126102205760209282913581526001845220549051908152f35b5050346101965780600319360112610196576020906102b16102a7610df6565b6024359033611231565b5160018152f35b9050823461035d578260031936011261035d576102d3610df6565b918360243592338152600360205281812060018060a01b038616825260205220549082821061030c576020856102b185850387336113f1565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b80fd5b50503461019657816003193601126101965751908152602090f35b91905034610220578260031936011261022057805191836006549060019082821c928281168015610456575b6020958686108214610443575084885290811561042157506001146103e6575b6103e286866103d8828b038361114f565b5191829182610dca565b0390f35b929550600683528583205b82841061040e57505050826103e2946103d89282010194386103c7565b80548685018801529286019281016103f1565b60ff191687860152505050151560051b83010192506103d8826103e2386103c7565b634e487b7160e01b845260229052602483fd5b93607f16936103a7565b9050346102205781600319360112610220578160209360ff92610481610e11565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b9050346102205781600319360112610220576020926104d191358152600184528260243591206116b5565b905491519160018060a01b039160031b1c168152f35b90503461022057826003193601126102205760008051602061182f83398151915283528260205281832033845260205260ff82842054161561059d576007549060ff8216610567575060ff1916600117600755513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b6020608492519162461bcd60e51b83528201526039602482015260008051602061186f833981519152604482015278686176652070617573657220726f6c6520746f20706175736560381b6064820152fd5b5050346101965736600319011261035d5761021d61060b610df6565b6024359061061a8233836114f3565b61158b565b5050346101965760203660031901126101965760209181906001600160a01b03610647610df6565b1681526002845220549051908152f35b50503461019657816003193601126101965760209060ff6007541690519015158152f35b8390346101965760203660031901126101965761021d90353361158b565b919050346102205780600319360112610220576106b4610df6565b90602435907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68552602092858452818620338752845260ff8287205416156107de576001600160a01b031693841561079d5760ff6007541661074957918593918361072f8360008051602061184f833981519152965461120e565b90558585526002835280852082815401905551908152a380f35b83608492519162461bcd60e51b8352820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b83606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b815162461bcd60e51b81528086018590526038602482015260008051602061186f8339815191526044820152771a185d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60421b6064820152608490fd5b90503461022057826003193601126102205760008051602061182f83398151915283528260205281832033845260205260ff8284205416156108e8576007549060ff8216156108ae575060ff1916600755513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b606490602084519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b6020608492519162461bcd60e51b8352820152603b602482015260008051602061186f83398151915260448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152fd5b5050346101965780600319360112610196576102b1602092610987610961610df6565b338352600386528483206001600160a01b0382168452865291849020546024359061120e565b90336113f1565b839150346101965782600319360112610196576109a9610e11565b90336001600160a01b038316036109c5579061021d9135611187565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b50503461019657816003193601126101965760209060ff60075460081c169051908152f35b91905034610220578060031936011261022057610aae9135906001610a68610e11565b92808652602090868252610a80838589200154610e27565b80875286825283872094838060a01b031694858852825260ff848820541615610ab2575b86525283206116cd565b5080f35b8087528682528387208588528252838720805460ff1916841790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a80a4610aa4565b505034610196578160031936011261019657602090517f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8488152f35b90503461022057602036600319011261022057816020936001923581528085522001549051908152f35b505034610196576060366003190112610196576020906102b1610b7f610df6565b610b87610e11565b60443591610b968333836114f3565b611231565b905034610220578160031936011261022057610bb5610df6565b917f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84884528360205280842033855260205260ff818520541615610bff578361021d6024358561158b565b906020608492519162461bcd60e51b83528201526038602482015260008051602061186f8339815191526044820152773430bb3290313ab93732b9103937b632903a3790313ab93760411b6064820152fd5b90503461022057826003193601126102205760209250549051908152f35b5050346101965780600319360112610196576020906102b1610c8f610df6565b60243590336113f1565b91905034610220578260031936011261022057805191836005549060019082821c928281168015610d30575b602095868610821461044357508488529081156104215750600114610cf5576103e286866103d8828b038361114f565b929550600583528583205b828410610d1d57505050826103e2946103d89282010194386103c7565b8054868501880152928601928101610d00565b93607f1693610cc5565b849134610220576020366003190112610220573563ffffffff60e01b81168091036102205760209250635a05180f60e01b8114908115610d7c575b5015158152f35b637965db0b60e01b811491508115610d96575b5083610d75565b6301ffc9a760e01b14905083610d8f565b60005b838110610dba5750506000910152565b8181015183820152602001610daa565b60409160208252610dea8151809281602086015260208686019101610da7565b601f01601f1916010190565b600435906001600160a01b0382168203610e0c57565b600080fd5b602435906001600160a01b0382168203610e0c57565b6000818152602090808252604092838220338352835260ff848320541615610e4f5750505050565b835167ffffffffffffffff919033606082018481118382101761113b578752602a825285820192873685378251156111275760308453825191600192831015611113576078602185015360295b8381116110a9575061106757908751946080860190868210908211176110535788526042855286850195606036883785511561103f5760308753855182101561103f5790607860218701536041915b818311610fd157505050610f8f57938593610f7593610f66604894610f3d76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b99610f8b9b519a8b978801525180926037880190610da7565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610da7565b0103602881018552018361114f565b5162461bcd60e51b815291829160048301610dca565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f8116601081101561102b576f181899199a1a9b1b9c1cb0b131b232b360811b901a611001858961168e565b5360041c92801561101757600019019190610eeb565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b87526041600452602487fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f811660108110156110ff576f181899199a1a9b1b9c1cb0b131b232b360811b901a6110d7838761168e565b5360041c9080156110eb5760001901610e9c565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526032600452602489fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90601f8019910116810190811067ffffffffffffffff82111761117157604052565b634e487b7160e01b600052604160045260246000fd5b9060406111c492600090808252816020528282209360018060a01b03169384835260205260ff83832054166111c7575b8152600160205220611752565b50565b8082528160205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46111b7565b9190820180921161121b57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0390811691821561139e571691821561134d5760ff600754166112f557600082815260026020526040812054918083106112a1576040828260008051602061184f83398151915295876020965260028652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b039081169182156114a257169182156114525760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260038252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b038083166000526003602052604060002090821660005260205260406000205492600019840361152b575b50505050565b8084106115465761153d9303916113f1565b38808080611525565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b0316801561163f5760ff600754166112f557806000526002602052604060002054918083106115ef5760208160008051602061184f83398151915292600095858752600284520360408620558060045403600455604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b90815181101561169f570160200190565b634e487b7160e01b600052603260045260246000fd5b805482101561169f5760005260206000200190600090565b9190600183016000908282528060205260408220541560001461174c57845494600160401b8610156117385783611728611711886001604098999a018555846116b5565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b906001820190600092818452826020526040842054908115156000146118275760001991808301818111611813578254908482019182116110eb578082036117de575b505050805480156117ca578201916117ad83836116b5565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6117fe6117ee61171193866116b5565b90549060031b1c928392866116b5565b90558652846020526040862055388080611795565b634e487b7160e01b87526011600452602487fd5b505050509056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332304d696e7465724275726e6572446563696d616c733a206d75737420a2646970667358221220ce1ae6525e01655a7cc9c91e11284a74018763a1d850a7c67f6a12c52b68836964736f6c634300081400332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610d3a5750816306fdde0314610c99578163095ea7b314610c6f57816318160ddd14610c515781631cf2c7e214610b9b57816323b872dd14610b5e578163248a9ca314610b34578163282c51f314610af95781632f2ff15d14610a45578163313ce56714610a2057816336568abe1461098e578163395093511461093e5781633f4ba83a1461083057816340c10f191461069957816342966c681461067b5781635c975abb1461065757816370a082311461061f57816379cc6790146105ef5781638456cb59146104e75781639010d07c146104a657816391d148541461046057816395d89b411461037b578163a217fddf14610360578163a457c2d7146102b8578163a9059cbb14610287578163ca15c8731461025f578163d539139314610224578163d547741f146101e257508063dd62ed3e1461019a5763e63ab1e91461016f57600080fd5b346101965781600319360112610196576020905160008051602061182f8339815191528152f35b5080fd5b5034610196578060031936011261019657806020926101b7610df6565b6101bf610e11565b6001600160a01b0391821683526003865283832091168252845220549051908152f35b9190503461022057806003193601126102205761021d91356102186001610207610e11565b938387528660205286200154610e27565b611187565b80f35b8280fd5b505034610196578160031936011261019657602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b9050346102205760203660031901126102205760209282913581526001845220549051908152f35b5050346101965780600319360112610196576020906102b16102a7610df6565b6024359033611231565b5160018152f35b9050823461035d578260031936011261035d576102d3610df6565b918360243592338152600360205281812060018060a01b038616825260205220549082821061030c576020856102b185850387336113f1565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b80fd5b50503461019657816003193601126101965751908152602090f35b91905034610220578260031936011261022057805191836006549060019082821c928281168015610456575b6020958686108214610443575084885290811561042157506001146103e6575b6103e286866103d8828b038361114f565b5191829182610dca565b0390f35b929550600683528583205b82841061040e57505050826103e2946103d89282010194386103c7565b80548685018801529286019281016103f1565b60ff191687860152505050151560051b83010192506103d8826103e2386103c7565b634e487b7160e01b845260229052602483fd5b93607f16936103a7565b9050346102205781600319360112610220578160209360ff92610481610e11565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b9050346102205781600319360112610220576020926104d191358152600184528260243591206116b5565b905491519160018060a01b039160031b1c168152f35b90503461022057826003193601126102205760008051602061182f83398151915283528260205281832033845260205260ff82842054161561059d576007549060ff8216610567575060ff1916600117600755513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b6020608492519162461bcd60e51b83528201526039602482015260008051602061186f833981519152604482015278686176652070617573657220726f6c6520746f20706175736560381b6064820152fd5b5050346101965736600319011261035d5761021d61060b610df6565b6024359061061a8233836114f3565b61158b565b5050346101965760203660031901126101965760209181906001600160a01b03610647610df6565b1681526002845220549051908152f35b50503461019657816003193601126101965760209060ff6007541690519015158152f35b8390346101965760203660031901126101965761021d90353361158b565b919050346102205780600319360112610220576106b4610df6565b90602435907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68552602092858452818620338752845260ff8287205416156107de576001600160a01b031693841561079d5760ff6007541661074957918593918361072f8360008051602061184f833981519152965461120e565b90558585526002835280852082815401905551908152a380f35b83608492519162461bcd60e51b8352820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b83606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b815162461bcd60e51b81528086018590526038602482015260008051602061186f8339815191526044820152771a185d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60421b6064820152608490fd5b90503461022057826003193601126102205760008051602061182f83398151915283528260205281832033845260205260ff8284205416156108e8576007549060ff8216156108ae575060ff1916600755513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b606490602084519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b6020608492519162461bcd60e51b8352820152603b602482015260008051602061186f83398151915260448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152fd5b5050346101965780600319360112610196576102b1602092610987610961610df6565b338352600386528483206001600160a01b0382168452865291849020546024359061120e565b90336113f1565b839150346101965782600319360112610196576109a9610e11565b90336001600160a01b038316036109c5579061021d9135611187565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b50503461019657816003193601126101965760209060ff60075460081c169051908152f35b91905034610220578060031936011261022057610aae9135906001610a68610e11565b92808652602090868252610a80838589200154610e27565b80875286825283872094838060a01b031694858852825260ff848820541615610ab2575b86525283206116cd565b5080f35b8087528682528387208588528252838720805460ff1916841790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a80a4610aa4565b505034610196578160031936011261019657602090517f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8488152f35b90503461022057602036600319011261022057816020936001923581528085522001549051908152f35b505034610196576060366003190112610196576020906102b1610b7f610df6565b610b87610e11565b60443591610b968333836114f3565b611231565b905034610220578160031936011261022057610bb5610df6565b917f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84884528360205280842033855260205260ff818520541615610bff578361021d6024358561158b565b906020608492519162461bcd60e51b83528201526038602482015260008051602061186f8339815191526044820152773430bb3290313ab93732b9103937b632903a3790313ab93760411b6064820152fd5b90503461022057826003193601126102205760209250549051908152f35b5050346101965780600319360112610196576020906102b1610c8f610df6565b60243590336113f1565b91905034610220578260031936011261022057805191836005549060019082821c928281168015610d30575b602095868610821461044357508488529081156104215750600114610cf5576103e286866103d8828b038361114f565b929550600583528583205b828410610d1d57505050826103e2946103d89282010194386103c7565b8054868501880152928601928101610d00565b93607f1693610cc5565b849134610220576020366003190112610220573563ffffffff60e01b81168091036102205760209250635a05180f60e01b8114908115610d7c575b5015158152f35b637965db0b60e01b811491508115610d96575b5083610d75565b6301ffc9a760e01b14905083610d8f565b60005b838110610dba5750506000910152565b8181015183820152602001610daa565b60409160208252610dea8151809281602086015260208686019101610da7565b601f01601f1916010190565b600435906001600160a01b0382168203610e0c57565b600080fd5b602435906001600160a01b0382168203610e0c57565b6000818152602090808252604092838220338352835260ff848320541615610e4f5750505050565b835167ffffffffffffffff919033606082018481118382101761113b578752602a825285820192873685378251156111275760308453825191600192831015611113576078602185015360295b8381116110a9575061106757908751946080860190868210908211176110535788526042855286850195606036883785511561103f5760308753855182101561103f5790607860218701536041915b818311610fd157505050610f8f57938593610f7593610f66604894610f3d76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b99610f8b9b519a8b978801525180926037880190610da7565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610da7565b0103602881018552018361114f565b5162461bcd60e51b815291829160048301610dca565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f8116601081101561102b576f181899199a1a9b1b9c1cb0b131b232b360811b901a611001858961168e565b5360041c92801561101757600019019190610eeb565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b87526041600452602487fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f811660108110156110ff576f181899199a1a9b1b9c1cb0b131b232b360811b901a6110d7838761168e565b5360041c9080156110eb5760001901610e9c565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526032600452602489fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90601f8019910116810190811067ffffffffffffffff82111761117157604052565b634e487b7160e01b600052604160045260246000fd5b9060406111c492600090808252816020528282209360018060a01b03169384835260205260ff83832054166111c7575b8152600160205220611752565b50565b8082528160205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46111b7565b9190820180921161121b57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0390811691821561139e571691821561134d5760ff600754166112f557600082815260026020526040812054918083106112a1576040828260008051602061184f83398151915295876020965260028652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b039081169182156114a257169182156114525760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260038252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b038083166000526003602052604060002090821660005260205260406000205492600019840361152b575b50505050565b8084106115465761153d9303916113f1565b38808080611525565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b0316801561163f5760ff600754166112f557806000526002602052604060002054918083106115ef5760208160008051602061184f83398151915292600095858752600284520360408620558060045403600455604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b90815181101561169f570160200190565b634e487b7160e01b600052603260045260246000fd5b805482101561169f5760005260206000200190600090565b9190600183016000908282528060205260408220541560001461174c57845494600160401b8610156117385783611728611711886001604098999a018555846116b5565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b906001820190600092818452826020526040842054908115156000146118275760001991808301818111611813578254908482019182116110eb578082036117de575b505050805480156117ca578201916117ad83836116b5565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6117fe6117ee61171193866116b5565b90549060031b1c928392866116b5565b90558652846020526040862055388080611795565b634e487b7160e01b87526011600452602487fd5b505050509056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332304d696e7465724275726e6572446563696d616c733a206d75737420a2646970667358221220ce1ae6525e01655a7cc9c91e11284a74018763a1d850a7c67f6a12c52b68836964736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/solidity/WATOM.json b/contracts/solidity/WATOM.json index 2597ca7c9..10fef632c 100644 --- a/contracts/solidity/WATOM.json +++ b/contracts/solidity/WATOM.json @@ -173,8 +173,8 @@ "type": "receive" } ], - "bytecode": "0x60806040526040518060400160405280600c81526020017f577261707065642041746f6d0000000000000000000000000000000000000000815250600090816200004a91906200033c565b506040518060400160405280600581526020017f5741544f4d000000000000000000000000000000000000000000000000000000815250600190816200009191906200033c565b506012600260006101000a81548160ff021916908360ff160217905550348015620000bb57600080fd5b5062000423565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200014457607f821691505b6020821081036200015a5762000159620000fc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000185565b620001d0868362000185565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200021d620002176200021184620001e8565b620001f2565b620001e8565b9050919050565b6000819050919050565b6200023983620001fc565b62000251620002488262000224565b84845462000192565b825550505050565b600090565b6200026862000259565b620002758184846200022e565b505050565b5b818110156200029d57620002916000826200025e565b6001810190506200027b565b5050565b601f821115620002ec57620002b68162000160565b620002c18462000175565b81016020851015620002d1578190505b620002e9620002e08562000175565b8301826200027a565b50505b505050565b600082821c905092915050565b60006200031160001984600802620002f1565b1980831691505092915050565b60006200032c8383620002fe565b9150826002028217905092915050565b6200034782620000c2565b67ffffffffffffffff811115620003635762000362620000cd565b5b6200036f82546200012b565b6200037c828285620002a1565b600060209050601f831160018114620003b457600084156200039f578287015190505b620003ab85826200031e565b8655506200041b565b601f198416620003c48662000160565b60005b82811015620003ee57848901518255600182019150602085019450602081019050620003c7565b868310156200040e57848901516200040a601f891682620002fe565b8355505b6001600288020188555050505b505050505050565b610bdf80620004336000396000f3fe6080604052600436106100745760003560e01c806370a082311161004e57806370a082311461010757806395d89b4114610144578063a9059cbb1461016f578063d0e30db0146101ac57610083565b806306fdde03146100885780632e1a7d4d146100b3578063313ce567146100dc57610083565b36610083576100816101b6565b005b600080fd5b34801561009457600080fd5b5061009d61025c565b6040516100aa91906107a8565b60405180910390f35b3480156100bf57600080fd5b506100da60048036038101906100d59190610805565b6102ea565b005b3480156100e857600080fd5b506100f16104c0565b6040516100fe919061084e565b60405180910390f35b34801561011357600080fd5b5061012e600480360381019061012991906108c7565b6104d3565b60405161013b9190610903565b60405180910390f35b34801561015057600080fd5b506101596104eb565b60405161016691906107a8565b60405180910390f35b34801561017b57600080fd5b506101966004803603810190610191919061091e565b610579565b6040516101a39190610979565b60405180910390f35b6101b46101b6565b005b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461020591906109c3565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516102529190610903565b60405180910390a2565b6000805461026990610a26565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610a26565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561036c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036390610aa3565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103bb9190610ac3565b9250508190555060003373ffffffffffffffffffffffffffffffffffffffff16826040516103e890610b28565b60006040518083038185875af1925050503d8060008114610425576040519150601f19603f3d011682016040523d82523d6000602084013e61042a565b606091505b505090508061046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590610b89565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65836040516104b49190610903565b60405180910390a25050565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b600180546104f890610a26565b80601f016020809104026020016040519081016040528092919081815260200182805461052490610a26565b80156105715780601f1061054657610100808354040283529160200191610571565b820191906000526020600020905b81548152906001019060200180831161055457829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f490610aa3565b60405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064c9190610ac3565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106a291906109c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107069190610903565b60405180910390a36001905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610752578082015181840152602081019050610737565b60008484015250505050565b6000601f19601f8301169050919050565b600061077a82610718565b6107848185610723565b9350610794818560208601610734565b61079d8161075e565b840191505092915050565b600060208201905081810360008301526107c2818461076f565b905092915050565b600080fd5b6000819050919050565b6107e2816107cf565b81146107ed57600080fd5b50565b6000813590506107ff816107d9565b92915050565b60006020828403121561081b5761081a6107ca565b5b6000610829848285016107f0565b91505092915050565b600060ff82169050919050565b61084881610832565b82525050565b6000602082019050610863600083018461083f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061089482610869565b9050919050565b6108a481610889565b81146108af57600080fd5b50565b6000813590506108c18161089b565b92915050565b6000602082840312156108dd576108dc6107ca565b5b60006108eb848285016108b2565b91505092915050565b6108fd816107cf565b82525050565b600060208201905061091860008301846108f4565b92915050565b60008060408385031215610935576109346107ca565b5b6000610943858286016108b2565b9250506020610954858286016107f0565b9150509250929050565b60008115159050919050565b6109738161095e565b82525050565b600060208201905061098e600083018461096a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109ce826107cf565b91506109d9836107cf565b92508282019050808211156109f1576109f0610994565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610a3e57607f821691505b602082108103610a5157610a506109f7565b5b50919050565b7f696e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610a8d601483610723565b9150610a9882610a57565b602082019050919050565b60006020820190508181036000830152610abc81610a80565b9050919050565b6000610ace826107cf565b9150610ad9836107cf565b9250828203905081811115610af157610af0610994565b5b92915050565b600081905092915050565b50565b6000610b12600083610af7565b9150610b1d82610b02565b600082019050919050565b6000610b3382610b05565b9150819050919050565b7f6661696c656420746f20776974686472617720746f2073656e64657200000000600082015250565b6000610b73601c83610723565b9150610b7e82610b3d565b602082019050919050565b60006020820190508181036000830152610ba281610b66565b905091905056fea264697066735822122014f0a4d9153d63cb6dc8f136b21822a5a614c67112f2585958b7709a2948685f64736f6c63430008140033", - "deployedBytecode": "0x6080604052600436106100745760003560e01c806370a082311161004e57806370a082311461010757806395d89b4114610144578063a9059cbb1461016f578063d0e30db0146101ac57610083565b806306fdde03146100885780632e1a7d4d146100b3578063313ce567146100dc57610083565b36610083576100816101b6565b005b600080fd5b34801561009457600080fd5b5061009d61025c565b6040516100aa91906107a8565b60405180910390f35b3480156100bf57600080fd5b506100da60048036038101906100d59190610805565b6102ea565b005b3480156100e857600080fd5b506100f16104c0565b6040516100fe919061084e565b60405180910390f35b34801561011357600080fd5b5061012e600480360381019061012991906108c7565b6104d3565b60405161013b9190610903565b60405180910390f35b34801561015057600080fd5b506101596104eb565b60405161016691906107a8565b60405180910390f35b34801561017b57600080fd5b506101966004803603810190610191919061091e565b610579565b6040516101a39190610979565b60405180910390f35b6101b46101b6565b005b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461020591906109c3565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040516102529190610903565b60405180910390a2565b6000805461026990610a26565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610a26565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561036c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036390610aa3565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103bb9190610ac3565b9250508190555060003373ffffffffffffffffffffffffffffffffffffffff16826040516103e890610b28565b60006040518083038185875af1925050503d8060008114610425576040519150601f19603f3d011682016040523d82523d6000602084013e61042a565b606091505b505090508061046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590610b89565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65836040516104b49190610903565b60405180910390a25050565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b600180546104f890610a26565b80601f016020809104026020016040519081016040528092919081815260200182805461052490610a26565b80156105715780601f1061054657610100808354040283529160200191610571565b820191906000526020600020905b81548152906001019060200180831161055457829003601f168201915b505050505081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156105fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f490610aa3565b60405180910390fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461064c9190610ac3565b9250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106a291906109c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107069190610903565b60405180910390a36001905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610752578082015181840152602081019050610737565b60008484015250505050565b6000601f19601f8301169050919050565b600061077a82610718565b6107848185610723565b9350610794818560208601610734565b61079d8161075e565b840191505092915050565b600060208201905081810360008301526107c2818461076f565b905092915050565b600080fd5b6000819050919050565b6107e2816107cf565b81146107ed57600080fd5b50565b6000813590506107ff816107d9565b92915050565b60006020828403121561081b5761081a6107ca565b5b6000610829848285016107f0565b91505092915050565b600060ff82169050919050565b61084881610832565b82525050565b6000602082019050610863600083018461083f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061089482610869565b9050919050565b6108a481610889565b81146108af57600080fd5b50565b6000813590506108c18161089b565b92915050565b6000602082840312156108dd576108dc6107ca565b5b60006108eb848285016108b2565b91505092915050565b6108fd816107cf565b82525050565b600060208201905061091860008301846108f4565b92915050565b60008060408385031215610935576109346107ca565b5b6000610943858286016108b2565b9250506020610954858286016107f0565b9150509250929050565b60008115159050919050565b6109738161095e565b82525050565b600060208201905061098e600083018461096a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109ce826107cf565b91506109d9836107cf565b92508282019050808211156109f1576109f0610994565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610a3e57607f821691505b602082108103610a5157610a506109f7565b5b50919050565b7f696e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000610a8d601483610723565b9150610a9882610a57565b602082019050919050565b60006020820190508181036000830152610abc81610a80565b9050919050565b6000610ace826107cf565b9150610ad9836107cf565b9250828203905081811115610af157610af0610994565b5b92915050565b600081905092915050565b50565b6000610b12600083610af7565b9150610b1d82610b02565b600082019050919050565b6000610b3382610b05565b9150819050919050565b7f6661696c656420746f20776974686472617720746f2073656e64657200000000600082015250565b6000610b73601c83610723565b9150610b7e82610b3d565b602082019050919050565b60006020820190508181036000830152610ba281610b66565b905091905056fea264697066735822122014f0a4d9153d63cb6dc8f136b21822a5a614c67112f2585958b7709a2948685f64736f6c63430008140033", + "bytecode": "0x6080604052346100cb57600061001581546100d0565b601f81116100a1575b5060186b577261707065642041746f6d60a01b01815560019061004182546100d0565b90601f8211610075575b600a645741544f4d60d81b0183556002805460ff191660121790556040516105c1908161010b8239f35b82815282601f60208320930160051c8301925b83811061009657505061004b565b828155018390610088565b818052601f60208320910160051c8101905b8181106100c0575061001e565b8281556001016100b3565b600080fd5b90600182811c92168015610100575b60208310146100ea57565b634e487b7160e01b600052602260045260246000fd5b91607f16916100df56fe60806040908082526004918236101561002b575b505050361561002157600080fd5b6100296104f2565b005b600092833560e01c92836306fdde0314610399575082632e1a7d4d14610287578263313ce5671461026557826370a082311461022d57826395d89b411461014857508163a9059cbb146100a3575063d0e30db01461008a578080610013565b806003193601126100a05761009d6104f2565b80f35b80fd5b9050346101445780600319360112610144576020916100c06104b4565b8260243591338452600386526100db8383862054101561053b565b338452600386528184206100f084825461057e565b90556001600160a01b031680845260038652922080546101119083906104cf565b905582519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843392a35160018152f35b5080fd5b91503461022957826003193601126102295780519183600180549182821c92828116801561021f575b602095868610821461020c57508488529081156101ea57506001146101b0575b6101ac86866101a2828b0383610433565b519182918261046b565b0390f35b9295508083528583205b8284106101d757505050826101ac946101a2928201019438610191565b80548685018801529286019281016101ba565b60ff191687860152505050151560051b83010192506101a2826101ac38610191565b634e487b7160e01b845260229052602483fd5b93607f1693610171565b8280fd5b8382346101445760203660031901126101445760209181906001600160a01b036102556104b4565b1681526003845220549051908152f35b83823461014457816003193601126101445760209060ff600254169051908152f35b915034610229576020908160031936011261039557823592338552600383526102b58483872054101561053b565b338552600383528185206102ca85825461057e565b90558480808087335af13d15610390573d67ffffffffffffffff811161037d57835190610300601f8201601f1916870183610433565b815286853d92013e5b1561033c5750907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6591519283523392a280f35b82606492519162461bcd60e51b8352820152601c60248201527f6661696c656420746f20776974686472617720746f2073656e646572000000006044820152fd5b634e487b7160e01b875260418352602487fd5b610309565b8380fd5b9250346103955783600319360112610395578354600181811c9186908281168015610429575b602095868610821461020c57508488529081156101ea57506001146103ef576101ac86866101a2828b0383610433565b8080949750528583205b82841061041657505050826101ac946101a2928201019438610191565b80548685018801529286019281016103f9565b93607f16936103bf565b90601f8019910116810190811067ffffffffffffffff82111761045557604052565b634e487b7160e01b600052604160045260246000fd5b6020808252825181830181905290939260005b8281106104a057505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161047e565b600435906001600160a01b03821682036104ca57565b600080fd5b919082018092116104dc57565b634e487b7160e01b600052601160045260246000fd5b336000526003602052604060002061050b3482546104cf565b90556040513481527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c60203392a2565b1561054257565b60405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b6044820152606490fd5b919082039182116104dc5756fea26469706673582212201392bc3199ab613bc84b097477ac2e199bb1c5bc21a129f158f3f057cb757d7064736f6c63430008140033", + "deployedBytecode": "0x60806040908082526004918236101561002b575b505050361561002157600080fd5b6100296104f2565b005b600092833560e01c92836306fdde0314610399575082632e1a7d4d14610287578263313ce5671461026557826370a082311461022d57826395d89b411461014857508163a9059cbb146100a3575063d0e30db01461008a578080610013565b806003193601126100a05761009d6104f2565b80f35b80fd5b9050346101445780600319360112610144576020916100c06104b4565b8260243591338452600386526100db8383862054101561053b565b338452600386528184206100f084825461057e565b90556001600160a01b031680845260038652922080546101119083906104cf565b905582519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843392a35160018152f35b5080fd5b91503461022957826003193601126102295780519183600180549182821c92828116801561021f575b602095868610821461020c57508488529081156101ea57506001146101b0575b6101ac86866101a2828b0383610433565b519182918261046b565b0390f35b9295508083528583205b8284106101d757505050826101ac946101a2928201019438610191565b80548685018801529286019281016101ba565b60ff191687860152505050151560051b83010192506101a2826101ac38610191565b634e487b7160e01b845260229052602483fd5b93607f1693610171565b8280fd5b8382346101445760203660031901126101445760209181906001600160a01b036102556104b4565b1681526003845220549051908152f35b83823461014457816003193601126101445760209060ff600254169051908152f35b915034610229576020908160031936011261039557823592338552600383526102b58483872054101561053b565b338552600383528185206102ca85825461057e565b90558480808087335af13d15610390573d67ffffffffffffffff811161037d57835190610300601f8201601f1916870183610433565b815286853d92013e5b1561033c5750907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6591519283523392a280f35b82606492519162461bcd60e51b8352820152601c60248201527f6661696c656420746f20776974686472617720746f2073656e646572000000006044820152fd5b634e487b7160e01b875260418352602487fd5b610309565b8380fd5b9250346103955783600319360112610395578354600181811c9186908281168015610429575b602095868610821461020c57508488529081156101ea57506001146103ef576101ac86866101a2828b0383610433565b8080949750528583205b82841061041657505050826101ac946101a2928201019438610191565b80548685018801529286019281016103f9565b93607f16936103bf565b90601f8019910116810190811067ffffffffffffffff82111761045557604052565b634e487b7160e01b600052604160045260246000fd5b6020808252825181830181905290939260005b8281106104a057505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161047e565b600435906001600160a01b03821682036104ca57565b600080fd5b919082018092116104dc57565b634e487b7160e01b600052601160045260246000fd5b336000526003602052604060002061050b3482546104cf565b90556040513481527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c60203392a2565b1561054257565b60405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b6044820152606490fd5b919082039182116104dc5756fea26469706673582212201392bc3199ab613bc84b097477ac2e199bb1c5bc21a129f158f3f057cb757d7064736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/solidity/precompiles/staking/StakingI.sol b/contracts/solidity/precompiles/staking/StakingI.sol index 18e799f19..3c55d0d9f 100644 --- a/contracts/solidity/precompiles/staking/StakingI.sol +++ b/contracts/solidity/precompiles/staking/StakingI.sol @@ -55,7 +55,7 @@ struct Validator { BondStatus status; uint256 tokens; uint256 delegatorShares; // TODO: decimal - string description; + Description description; int64 unbondingHeight; int64 unbondingTime; uint256 commission; diff --git a/eips/testdata/Counter.json b/eips/testdata/Counter.json index 313074e4b..9b9607864 100644 --- a/eips/testdata/Counter.json +++ b/eips/testdata/Counter.json @@ -31,8 +31,8 @@ "type": "function" } ], - "bytecode": "0x6080604052600160005534801561001557600080fd5b506101ba806100256000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632baeceb71461004657806361bc221a14610050578063d09de08a1461006e575b600080fd5b61004e610078565b005b610058610091565b60405161006591906100c9565b60405180910390f35b610076610097565b005b60008081548092919061008a90610113565b9190505550565b60005481565b6000808154809291906100a99061013c565b9190505550565b6000819050919050565b6100c3816100b0565b82525050565b60006020820190506100de60008301846100ba565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061011e826100b0565b915060008203610131576101306100e4565b5b600182039050919050565b6000610147826100b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610179576101786100e4565b5b60018201905091905056fea26469706673582212203a787bffb0602dfc99e20af5993b8b06f109a9a4224881430bbefd232d7e1c1c64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632baeceb71461004657806361bc221a14610050578063d09de08a1461006e575b600080fd5b61004e610078565b005b610058610091565b60405161006591906100c9565b60405180910390f35b610076610097565b005b60008081548092919061008a90610113565b9190505550565b60005481565b6000808154809291906100a99061013c565b9190505550565b6000819050919050565b6100c3816100b0565b82525050565b60006020820190506100de60008301846100ba565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061011e826100b0565b915060008203610131576101306100e4565b5b600182039050919050565b6000610147826100b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610179576101786100e4565b5b60018201905091905056fea26469706673582212203a787bffb0602dfc99e20af5993b8b06f109a9a4224881430bbefd232d7e1c1c64736f6c63430008140033", + "bytecode": "0x6080806040523461001a57600160005560e190816100208239f35b600080fdfe60806040526004361015601157600080fd5b6000803560e01c80632baeceb714608c57806361bc221a1460715763d09de08a14603a57600080fd5b34606e5780600319360112606e5780546000198114605a57600101815580f35b634e487b7160e01b82526011600452602482fd5b80fd5b5034606e5780600319360112606e5760209054604051908152f35b5034606e5780600319360112606e5780548015605a5760001901815580f3fea26469706673582212202060735f33efd8beff8de6826d5bb836375daa8720f3aab6ae7d0e6280ecf05964736f6c63430008140033", + "deployedBytecode": "0x60806040526004361015601157600080fd5b6000803560e01c80632baeceb714608c57806361bc221a1460715763d09de08a14603a57600080fd5b34606e5780600319360112606e5780546000198114605a57600101815580f35b634e487b7160e01b82526011600452602482fd5b80fd5b5034606e5780600319360112606e5760209054604051908152f35b5034606e5780600319360112606e5780548015605a5760001901815580f3fea26469706673582212202060735f33efd8beff8de6826d5bb836375daa8720f3aab6ae7d0e6280ecf05964736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/eips/testdata/CounterFactory.json b/eips/testdata/CounterFactory.json index 9f005f521..2e0b0ca31 100644 --- a/eips/testdata/CounterFactory.json +++ b/eips/testdata/CounterFactory.json @@ -49,8 +49,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061007e565b604051809103906000f080158015610039573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008b565b6101df8061045c83390190565b6103c28061009a6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635b34b9661461005157806372142b891461005b578063aef38e7214610079578063f5c5ad8314610097575b600080fd5b6100596100a1565b005b610063610123565b6040516100709190610279565b60405180910390f35b6100816101ba565b60405161008e9190610313565b60405180910390f35b61009f6101de565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09de08a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561010957600080fd5b505af115801561011d573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361bc221a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b5919061035f565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632baeceb76040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b50505050565b6000819050919050565b61027381610260565b82525050565b600060208201905061028e600083018461026a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006102d96102d46102cf84610294565b6102b4565b610294565b9050919050565b60006102eb826102be565b9050919050565b60006102fd826102e0565b9050919050565b61030d816102f2565b82525050565b60006020820190506103286000830184610304565b92915050565b600080fd5b61033c81610260565b811461034757600080fd5b50565b60008151905061035981610333565b92915050565b6000602082840312156103755761037461032e565b5b60006103838482850161034a565b9150509291505056fea2646970667358221220c75261c90e15285dd8d59978f857f1be71dc293fcf8da73587ddf983234766c464736f6c634300081400336080604052600160005534801561001557600080fd5b506101ba806100256000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632baeceb71461004657806361bc221a14610050578063d09de08a1461006e575b600080fd5b61004e610078565b005b610058610091565b60405161006591906100c9565b60405180910390f35b610076610097565b005b60008081548092919061008a90610113565b9190505550565b60005481565b6000808154809291906100a99061013c565b9190505550565b6000819050919050565b6100c3816100b0565b82525050565b60006020820190506100de60008301846100ba565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061011e826100b0565b915060008203610131576101306100e4565b5b600182039050919050565b6000610147826100b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610179576101786100e4565b5b60018201905091905056fea26469706673582212203a787bffb0602dfc99e20af5993b8b06f109a9a4224881430bbefd232d7e1c1c64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635b34b9661461005157806372142b891461005b578063aef38e7214610079578063f5c5ad8314610097575b600080fd5b6100596100a1565b005b610063610123565b6040516100709190610279565b60405180910390f35b6100816101ba565b60405161008e9190610313565b60405180910390f35b61009f6101de565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09de08a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561010957600080fd5b505af115801561011d573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361bc221a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b5919061035f565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632baeceb76040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b50505050565b6000819050919050565b61027381610260565b82525050565b600060208201905061028e600083018461026a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006102d96102d46102cf84610294565b6102b4565b610294565b9050919050565b60006102eb826102be565b9050919050565b60006102fd826102e0565b9050919050565b61030d816102f2565b82525050565b60006020820190506103286000830184610304565b92915050565b600080fd5b61033c81610260565b811461034757600080fd5b50565b60008151905061035981610333565b92915050565b6000602082840312156103755761037461032e565b5b60006103838482850161034a565b9150509291505056fea2646970667358221220c75261c90e15285dd8d59978f857f1be71dc293fcf8da73587ddf983234766c464736f6c63430008140033", + "bytecode": "0x60808060405234610085576101018181016001600160401b0381118382101761006f5782916102cf833903906000f0801561006357600080546001600160a01b0319166001600160a01b0392909216919091179055604051610244908161008b8239f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040818152600436101561001457600080fd5b600091823560e01c9081635b34b966146101a55750806372142b89146100e7578063aef38e72146100bc5763f5c5ad831461004e57600080fd5b8190346100b957816003193601126100b95781546001600160a01b031690813b156100b5578280926004835180958193632baeceb760e01b83525af19081156100ac57506100995750f35b6100a2906101fa565b6100a95780f35b80fd5b513d84823e3d90fd5b5050fd5b50fd5b50346100e357816003193601126100e357905490516001600160a01b039091168152602090f35b5080fd5b50346100e357816003193601126100e357815481516330de110d60e11b81529190602090839060049082906001600160a01b03165afa91821561019b578392610135575b6020838351908152f35b90915060203d8111610194575b601f8101601f1916820167ffffffffffffffff81118382101761017e57602091839185528101031261017a576020925051903861012b565b8280fd5b634e487b7160e01b600052604160045260246000fd5b503d610142565b81513d85823e3d90fd5b9190503461017a578260031936011261017a57825483906001600160a01b0316803b156100e35760048483819363684ef04560e11b83525af19081156100ac57506101ee575080f35b6101f7906101fa565b80f35b67ffffffffffffffff811161017e5760405256fea2646970667358221220a54e617d68b83f8da207d03f3e2a6168921e2f16fe65e0f3a363ec9a95228b8b64736f6c634300081400336080806040523461001a57600160005560e190816100208239f35b600080fdfe60806040526004361015601157600080fd5b6000803560e01c80632baeceb714608c57806361bc221a1460715763d09de08a14603a57600080fd5b34606e5780600319360112606e5780546000198114605a57600101815580f35b634e487b7160e01b82526011600452602482fd5b80fd5b5034606e5780600319360112606e5760209054604051908152f35b5034606e5780600319360112606e5780548015605a5760001901815580f3fea26469706673582212202060735f33efd8beff8de6826d5bb836375daa8720f3aab6ae7d0e6280ecf05964736f6c63430008140033", + "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c9081635b34b966146101a55750806372142b89146100e7578063aef38e72146100bc5763f5c5ad831461004e57600080fd5b8190346100b957816003193601126100b95781546001600160a01b031690813b156100b5578280926004835180958193632baeceb760e01b83525af19081156100ac57506100995750f35b6100a2906101fa565b6100a95780f35b80fd5b513d84823e3d90fd5b5050fd5b50fd5b50346100e357816003193601126100e357905490516001600160a01b039091168152602090f35b5080fd5b50346100e357816003193601126100e357815481516330de110d60e11b81529190602090839060049082906001600160a01b03165afa91821561019b578392610135575b6020838351908152f35b90915060203d8111610194575b601f8101601f1916820167ffffffffffffffff81118382101761017e57602091839185528101031261017a576020925051903861012b565b8280fd5b634e487b7160e01b600052604160045260246000fd5b503d610142565b81513d85823e3d90fd5b9190503461017a578260031936011261017a57825483906001600160a01b0316803b156100e35760048483819363684ef04560e11b83525af19081156100ac57506101ee575080f35b6101f7906101fa565b80f35b67ffffffffffffffff811161017e5760405256fea2646970667358221220a54e617d68b83f8da207d03f3e2a6168921e2f16fe65e0f3a363ec9a95228b8b64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/bank/testdata/BankCaller.json b/precompiles/bank/testdata/BankCaller.json index c4f091aab..049940cd2 100644 --- a/precompiles/bank/testdata/BankCaller.json +++ b/precompiles/bank/testdata/BankCaller.json @@ -79,8 +79,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610706806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806389129c6814610046578063acab2f9414610076578063bba60ca014610094575b600080fd5b610060600480360381019061005b91906102c2565b6100c4565b60405161006d91906103f5565b60405180910390f35b61007e61014e565b60405161008b91906103f5565b60405180910390f35b6100ae60048036038101906100a991906102c2565b6101cb565b6040516100bb9190610426565b60405180910390f35b606061080473ffffffffffffffffffffffffffffffffffffffff166327e235e3836040518263ffffffff1660e01b81526004016101019190610450565b600060405180830381865afa15801561011e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610147919061065a565b9050919050565b606061080473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561019d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101c6919061065a565b905090565b600061080473ffffffffffffffffffffffffffffffffffffffff166362400e4c836040518263ffffffff1660e01b81526004016102089190610450565b602060405180830381865afa158015610225573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024991906106a3565b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061028f82610264565b9050919050565b61029f81610284565b81146102aa57600080fd5b50565b6000813590506102bc81610296565b92915050565b6000602082840312156102d8576102d761025a565b5b60006102e6848285016102ad565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61032481610284565b82525050565b6000819050919050565b61033d8161032a565b82525050565b604082016000820151610359600085018261031b565b50602082015161036c6020850182610334565b50505050565b600061037e8383610343565b60408301905092915050565b6000602082019050919050565b60006103a2826102ef565b6103ac81856102fa565b93506103b78361030b565b8060005b838110156103e85781516103cf8882610372565b97506103da8361038a565b9250506001810190506103bb565b5085935050505092915050565b6000602082019050818103600083015261040f8184610397565b905092915050565b6104208161032a565b82525050565b600060208201905061043b6000830184610417565b92915050565b61044a81610284565b82525050565b60006020820190506104656000830184610441565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6104b982610470565b810181811067ffffffffffffffff821117156104d8576104d7610481565b5b80604052505050565b60006104eb610250565b90506104f782826104b0565b919050565b600067ffffffffffffffff82111561051757610516610481565b5b602082029050602081019050919050565b600080fd5b600080fd5b60008151905061054181610296565b92915050565b6105508161032a565b811461055b57600080fd5b50565b60008151905061056d81610547565b92915050565b6000604082840312156105895761058861052d565b5b61059360406104e1565b905060006105a384828501610532565b60008301525060206105b78482850161055e565b60208301525092915050565b60006105d66105d1846104fc565b6104e1565b905080838252602082019050604084028301858111156105f9576105f8610528565b5b835b81811015610622578061060e8882610573565b8452602084019350506040810190506105fb565b5050509392505050565b600082601f8301126106415761064061046b565b5b81516106518482602086016105c3565b91505092915050565b6000602082840312156106705761066f61025a565b5b600082015167ffffffffffffffff81111561068e5761068d61025f565b5b61069a8482850161062c565b91505092915050565b6000602082840312156106b9576106b861025a565b5b60006106c78482850161055e565b9150509291505056fea2646970667358221220aed0829e9f1c8981bf008bd22564334d57e7025ce0ce259ebfde7a3fafe8430d64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806389129c6814610046578063acab2f9414610076578063bba60ca014610094575b600080fd5b610060600480360381019061005b91906102c2565b6100c4565b60405161006d91906103f5565b60405180910390f35b61007e61014e565b60405161008b91906103f5565b60405180910390f35b6100ae60048036038101906100a991906102c2565b6101cb565b6040516100bb9190610426565b60405180910390f35b606061080473ffffffffffffffffffffffffffffffffffffffff166327e235e3836040518263ffffffff1660e01b81526004016101019190610450565b600060405180830381865afa15801561011e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610147919061065a565b9050919050565b606061080473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561019d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906101c6919061065a565b905090565b600061080473ffffffffffffffffffffffffffffffffffffffff166362400e4c836040518263ffffffff1660e01b81526004016102089190610450565b602060405180830381865afa158015610225573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024991906106a3565b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061028f82610264565b9050919050565b61029f81610284565b81146102aa57600080fd5b50565b6000813590506102bc81610296565b92915050565b6000602082840312156102d8576102d761025a565b5b60006102e6848285016102ad565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61032481610284565b82525050565b6000819050919050565b61033d8161032a565b82525050565b604082016000820151610359600085018261031b565b50602082015161036c6020850182610334565b50505050565b600061037e8383610343565b60408301905092915050565b6000602082019050919050565b60006103a2826102ef565b6103ac81856102fa565b93506103b78361030b565b8060005b838110156103e85781516103cf8882610372565b97506103da8361038a565b9250506001810190506103bb565b5085935050505092915050565b6000602082019050818103600083015261040f8184610397565b905092915050565b6104208161032a565b82525050565b600060208201905061043b6000830184610417565b92915050565b61044a81610284565b82525050565b60006020820190506104656000830184610441565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6104b982610470565b810181811067ffffffffffffffff821117156104d8576104d7610481565b5b80604052505050565b60006104eb610250565b90506104f782826104b0565b919050565b600067ffffffffffffffff82111561051757610516610481565b5b602082029050602081019050919050565b600080fd5b600080fd5b60008151905061054181610296565b92915050565b6105508161032a565b811461055b57600080fd5b50565b60008151905061056d81610547565b92915050565b6000604082840312156105895761058861052d565b5b61059360406104e1565b905060006105a384828501610532565b60008301525060206105b78482850161055e565b60208301525092915050565b60006105d66105d1846104fc565b6104e1565b905080838252602082019050604084028301858111156105f9576105f8610528565b5b835b81811015610622578061060e8882610573565b8452602084019350506040810190506105fb565b5050509392505050565b600082601f8301126106415761064061046b565b5b81516106518482602086016105c3565b91505092915050565b6000602082840312156106705761066f61025a565b5b600082015167ffffffffffffffff81111561068e5761068d61025f565b5b61069a8482850161062c565b91505092915050565b6000602082840312156106b9576106b861025a565b5b60006106c78482850161055e565b9150509291505056fea2646970667358221220aed0829e9f1c8981bf008bd22564334d57e7025ce0ce259ebfde7a3fafe8430d64736f6c63430008140033", + "bytecode": "0x6080806040523461001657610378908161001c8239f35b600080fdfe60806040908082526004918236101561001757600080fd5b600091823560e01c90816389129c681461016257508063acab2f94146100e95763bba60ca01461004657600080fd5b346100e557602092836003193601126100e15780356001600160a01b038116908190036100dd578251631890039360e21b81529182015283816024816108045afa9283156100d257809361009d575b505051908152f35b909192508382813d83116100cb575b6100b68183610234565b810103126100c8575051903880610095565b80fd5b503d6100ac565b8251903d90823e3d90fd5b8380fd5b8280fd5b5080fd5b508290346100e157826003193601126100e15782815180936318160ddd60e01b8252816108045afa918215610158578361012f9493610133575b505051918291826101e1565b0390f35b6101509293503d8091833e6101488183610234565b81019061026c565b908380610123565b81513d85823e3d90fd5b92939050346100dd5760203660031901126100dd5780356001600160a01b03811691908290036101dd576327e235e360e01b845283015282826024816108045afa918215610158578361012f94936101c057505051918291826101e1565b6101d59293503d8091833e6101488183610234565b903880610123565b8480fd5b60208082019080835283518092528060408094019401926000905b83821061020b57505050505090565b845180516001600160a01b031687528301518684015294850194938201936001909101906101fc565b90601f8019910116810190811067ffffffffffffffff82111761025657604052565b634e487b7160e01b600052604160045260246000fd5b6020808284031261032857815167ffffffffffffffff9283821161032857019083601f83011215610328578151838111610256576040938451956102b5848460051b0188610234565b828752838088019360061b86010194818611610328578401925b8584106102e0575050505050505090565b8684830312610328578651908782018281108582111761032d5788528451906001600160a01b0382168203610328578287928a945282870151838201528152019301926102cf565b600080fd5b60246000634e487b7160e01b81526041600452fdfea2646970667358221220069405aa45fc21b29f725237543db2b8600a62c69a04e7a4c44dce45d314303e64736f6c63430008140033", + "deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b600091823560e01c90816389129c681461016257508063acab2f94146100e95763bba60ca01461004657600080fd5b346100e557602092836003193601126100e15780356001600160a01b038116908190036100dd578251631890039360e21b81529182015283816024816108045afa9283156100d257809361009d575b505051908152f35b909192508382813d83116100cb575b6100b68183610234565b810103126100c8575051903880610095565b80fd5b503d6100ac565b8251903d90823e3d90fd5b8380fd5b8280fd5b5080fd5b508290346100e157826003193601126100e15782815180936318160ddd60e01b8252816108045afa918215610158578361012f9493610133575b505051918291826101e1565b0390f35b6101509293503d8091833e6101488183610234565b81019061026c565b908380610123565b81513d85823e3d90fd5b92939050346100dd5760203660031901126100dd5780356001600160a01b03811691908290036101dd576327e235e360e01b845283015282826024816108045afa918215610158578361012f94936101c057505051918291826101e1565b6101d59293503d8091833e6101488183610234565b903880610123565b8480fd5b60208082019080835283518092528060408094019401926000905b83821061020b57505050505090565b845180516001600160a01b031687528301518684015294850194938201936001909101906101fc565b90601f8019910116810190811067ffffffffffffffff82111761025657604052565b634e487b7160e01b600052604160045260246000fd5b6020808284031261032857815167ffffffffffffffff9283821161032857019083601f83011215610328578151838111610256576040938451956102b5848460051b0188610234565b828752838088019360061b86010194818611610328578401925b8584106102e0575050505050505090565b8684830312610328578651908782018281108582111761032d5788528451906001600160a01b0382168203610328578287928a945282870151838201528152019301926102cf565b600080fd5b60246000634e487b7160e01b81526041600452fdfea2646970667358221220069405aa45fc21b29f725237543db2b8600a62c69a04e7a4c44dce45d314303e64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/erc20/testdata/ERC20NoMetadata.json b/precompiles/erc20/testdata/ERC20NoMetadata.json index 61e7cfa79..ad2690562 100644 --- a/precompiles/erc20/testdata/ERC20NoMetadata.json +++ b/precompiles/erc20/testdata/ERC20NoMetadata.json @@ -240,8 +240,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610f4f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a082311461013b578063a457c2d71461016b578063a9059cbb1461019b578063dd62ed3e146101cb57610088565b8063095ea7b31461008d57806318160ddd146100bd57806323b872dd146100db578063395093511461010b575b600080fd5b6100a760048036038101906100a2919061096d565b6101fb565b6040516100b491906109c8565b60405180910390f35b6100c561021e565b6040516100d291906109f2565b60405180910390f35b6100f560048036038101906100f09190610a0d565b610228565b60405161010291906109c8565b60405180910390f35b6101256004803603810190610120919061096d565b610257565b60405161013291906109c8565b60405180910390f35b61015560048036038101906101509190610a60565b61028e565b60405161016291906109f2565b60405180910390f35b6101856004803603810190610180919061096d565b6102d6565b60405161019291906109c8565b60405180910390f35b6101b560048036038101906101b0919061096d565b61034d565b6040516101c291906109c8565b60405180910390f35b6101e560048036038101906101e09190610a8d565b610370565b6040516101f291906109f2565b60405180910390f35b6000806102066103f7565b90506102138185856103ff565b600191505092915050565b6000600254905090565b6000806102336103f7565b90506102408582856105c8565b61024b858585610654565b60019150509392505050565b6000806102626103f7565b90506102838185856102748589610370565b61027e9190610afc565b6103ff565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806102e16103f7565b905060006102ef8286610370565b905083811015610334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032b90610bb3565b60405180910390fd5b61034182868684036103ff565b60019250505092915050565b6000806103586103f7565b9050610365818585610654565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590610c45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d490610cd7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516105bb91906109f2565b60405180910390a3505050565b60006105d48484610370565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461064e5781811015610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063790610d43565b60405180910390fd5b61064d84848484036103ff565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba90610dd5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610e67565b60405180910390fd5b61073d8383836108ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba90610ef9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108b191906109f2565b60405180910390a36108c48484846108cf565b50505050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610904826108d9565b9050919050565b610914816108f9565b811461091f57600080fd5b50565b6000813590506109318161090b565b92915050565b6000819050919050565b61094a81610937565b811461095557600080fd5b50565b60008135905061096781610941565b92915050565b60008060408385031215610984576109836108d4565b5b600061099285828601610922565b92505060206109a385828601610958565b9150509250929050565b60008115159050919050565b6109c2816109ad565b82525050565b60006020820190506109dd60008301846109b9565b92915050565b6109ec81610937565b82525050565b6000602082019050610a0760008301846109e3565b92915050565b600080600060608486031215610a2657610a256108d4565b5b6000610a3486828701610922565b9350506020610a4586828701610922565b9250506040610a5686828701610958565b9150509250925092565b600060208284031215610a7657610a756108d4565b5b6000610a8484828501610922565b91505092915050565b60008060408385031215610aa457610aa36108d4565b5b6000610ab285828601610922565b9250506020610ac385828601610922565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b0782610937565b9150610b1283610937565b9250828201905080821115610b2a57610b29610acd565b5b92915050565b600082825260208201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610b9d602583610b30565b9150610ba882610b41565b604082019050919050565b60006020820190508181036000830152610bcc81610b90565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610c2f602483610b30565b9150610c3a82610bd3565b604082019050919050565b60006020820190508181036000830152610c5e81610c22565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610cc1602283610b30565b9150610ccc82610c65565b604082019050919050565b60006020820190508181036000830152610cf081610cb4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000610d2d601d83610b30565b9150610d3882610cf7565b602082019050919050565b60006020820190508181036000830152610d5c81610d20565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000610dbf602583610b30565b9150610dca82610d63565b604082019050919050565b60006020820190508181036000830152610dee81610db2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000610e51602383610b30565b9150610e5c82610df5565b604082019050919050565b60006020820190508181036000830152610e8081610e44565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000610ee3602683610b30565b9150610eee82610e87565b604082019050919050565b60006020820190508181036000830152610f1281610ed6565b905091905056fea2646970667358221220aae0a88d58f3c2d7e55cff5f86a81b379a6ac4de9798e49af61f856ea7e5b04664736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a082311461013b578063a457c2d71461016b578063a9059cbb1461019b578063dd62ed3e146101cb57610088565b8063095ea7b31461008d57806318160ddd146100bd57806323b872dd146100db578063395093511461010b575b600080fd5b6100a760048036038101906100a2919061096d565b6101fb565b6040516100b491906109c8565b60405180910390f35b6100c561021e565b6040516100d291906109f2565b60405180910390f35b6100f560048036038101906100f09190610a0d565b610228565b60405161010291906109c8565b60405180910390f35b6101256004803603810190610120919061096d565b610257565b60405161013291906109c8565b60405180910390f35b61015560048036038101906101509190610a60565b61028e565b60405161016291906109f2565b60405180910390f35b6101856004803603810190610180919061096d565b6102d6565b60405161019291906109c8565b60405180910390f35b6101b560048036038101906101b0919061096d565b61034d565b6040516101c291906109c8565b60405180910390f35b6101e560048036038101906101e09190610a8d565b610370565b6040516101f291906109f2565b60405180910390f35b6000806102066103f7565b90506102138185856103ff565b600191505092915050565b6000600254905090565b6000806102336103f7565b90506102408582856105c8565b61024b858585610654565b60019150509392505050565b6000806102626103f7565b90506102838185856102748589610370565b61027e9190610afc565b6103ff565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806102e16103f7565b905060006102ef8286610370565b905083811015610334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032b90610bb3565b60405180910390fd5b61034182868684036103ff565b60019250505092915050565b6000806103586103f7565b9050610365818585610654565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361046e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046590610c45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d490610cd7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516105bb91906109f2565b60405180910390a3505050565b60006105d48484610370565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461064e5781811015610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063790610d43565b60405180910390fd5b61064d84848484036103ff565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba90610dd5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610e67565b60405180910390fd5b61073d8383836108ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba90610ef9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108b191906109f2565b60405180910390a36108c48484846108cf565b50505050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610904826108d9565b9050919050565b610914816108f9565b811461091f57600080fd5b50565b6000813590506109318161090b565b92915050565b6000819050919050565b61094a81610937565b811461095557600080fd5b50565b60008135905061096781610941565b92915050565b60008060408385031215610984576109836108d4565b5b600061099285828601610922565b92505060206109a385828601610958565b9150509250929050565b60008115159050919050565b6109c2816109ad565b82525050565b60006020820190506109dd60008301846109b9565b92915050565b6109ec81610937565b82525050565b6000602082019050610a0760008301846109e3565b92915050565b600080600060608486031215610a2657610a256108d4565b5b6000610a3486828701610922565b9350506020610a4586828701610922565b9250506040610a5686828701610958565b9150509250925092565b600060208284031215610a7657610a756108d4565b5b6000610a8484828501610922565b91505092915050565b60008060408385031215610aa457610aa36108d4565b5b6000610ab285828601610922565b9250506020610ac385828601610922565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b0782610937565b9150610b1283610937565b9250828201905080821115610b2a57610b29610acd565b5b92915050565b600082825260208201905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610b9d602583610b30565b9150610ba882610b41565b604082019050919050565b60006020820190508181036000830152610bcc81610b90565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610c2f602483610b30565b9150610c3a82610bd3565b604082019050919050565b60006020820190508181036000830152610c5e81610c22565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610cc1602283610b30565b9150610ccc82610c65565b604082019050919050565b60006020820190508181036000830152610cf081610cb4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000610d2d601d83610b30565b9150610d3882610cf7565b602082019050919050565b60006020820190508181036000830152610d5c81610d20565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000610dbf602583610b30565b9150610dca82610d63565b604082019050919050565b60006020820190508181036000830152610dee81610db2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000610e51602383610b30565b9150610e5c82610df5565b604082019050919050565b60006020820190508181036000830152610e8081610e44565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000610ee3602683610b30565b9150610eee82610e87565b604082019050919050565b60006020820190508181036000830152610f1281610ed6565b905091905056fea2646970667358221220aae0a88d58f3c2d7e55cff5f86a81b379a6ac4de9798e49af61f856ea7e5b04664736f6c63430008140033", + "bytecode": "0x6080806040523461001657610617908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b600090813560e01c8063095ea7b31461031757806318160ddd146102f957806323b872dd1461023557806339509351146101ce57806370a0823114610198578063a457c2d7146100f2578063a9059cbb146100c25763dd62ed3e1461007757600080fd5b346100be57806003193601126100be5780602092610093610340565b61009b61035b565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b50346100be57806003193601126100be576020906100eb6100e1610340565b6024359033610371565b5160018152f35b50346100be57806003193601126100be5761010b610340565b338352600160209081528284206001600160a01b0383168552905291819020546024359081811061014657926100eb916020940390336104df565b825162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b50346100be5760203660031901126100be5760209181906001600160a01b036101bf610340565b16815280845220549051908152f35b50346100be57806003193601126100be576101e7610340565b338352600160209081528284206001600160a01b038316855290528183205460243581019390841061022157506020926100eb91336104df565b634e487b7160e01b81526011600452602490fd5b50346100be5760603660031901126100be5761024f610340565b61025761035b565b90826044359460018060a01b0383168152600160205281812033825260205220546000198103610290575b50926100eb91602094610371565b8481106102b5579184916102ac6020966100eb950333836104df565b91945091610282565b835162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b50346100be57816003193601126100be576020906002549051908152f35b50346100be57806003193601126100be576020906100eb610336610340565b60243590336104df565b600435906001600160a01b038216820361035657565b600080fd5b602435906001600160a01b038216820361035657565b6001600160a01b0390811691821561048c571691821561043b576000828152806020526040812054918083106103e757604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0390811691821561059057169182156105405760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fdfea264697066735822122019e2252c10fb32490e1f1f36e7f8b4ff219dd144595dffe567b32e2b33d17d3964736f6c63430008140033", + "deployedBytecode": "0x604060808152600436101561001357600080fd5b600090813560e01c8063095ea7b31461031757806318160ddd146102f957806323b872dd1461023557806339509351146101ce57806370a0823114610198578063a457c2d7146100f2578063a9059cbb146100c25763dd62ed3e1461007757600080fd5b346100be57806003193601126100be5780602092610093610340565b61009b61035b565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b50346100be57806003193601126100be576020906100eb6100e1610340565b6024359033610371565b5160018152f35b50346100be57806003193601126100be5761010b610340565b338352600160209081528284206001600160a01b0383168552905291819020546024359081811061014657926100eb916020940390336104df565b825162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b50346100be5760203660031901126100be5760209181906001600160a01b036101bf610340565b16815280845220549051908152f35b50346100be57806003193601126100be576101e7610340565b338352600160209081528284206001600160a01b038316855290528183205460243581019390841061022157506020926100eb91336104df565b634e487b7160e01b81526011600452602490fd5b50346100be5760603660031901126100be5761024f610340565b61025761035b565b90826044359460018060a01b0383168152600160205281812033825260205220546000198103610290575b50926100eb91602094610371565b8481106102b5579184916102ac6020966100eb950333836104df565b91945091610282565b835162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b50346100be57816003193601126100be576020906002549051908152f35b50346100be57806003193601126100be576020906100eb610336610340565b60243590336104df565b600435906001600160a01b038216820361035657565b600080fd5b602435906001600160a01b038216820361035657565b6001600160a01b0390811691821561048c571691821561043b576000828152806020526040812054918083106103e757604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b0390811691821561059057169182156105405760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fdfea264697066735822122019e2252c10fb32490e1f1f36e7f8b4ff219dd144595dffe567b32e2b33d17d3964736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/erc20/testdata/ERC20TestCaller.json b/precompiles/erc20/testdata/ERC20TestCaller.json index b6c4389a8..d4c6cd0e1 100644 --- a/precompiles/erc20/testdata/ERC20TestCaller.json +++ b/precompiles/erc20/testdata/ERC20TestCaller.json @@ -314,8 +314,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162001be238038062001be28339818101604052810190620000379190620000f0565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006001819055505062000122565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000b8826200008b565b9050919050565b620000ca81620000ab565b8114620000d657600080fd5b50565b600081519050620000ea81620000bf565b92915050565b60006020828403121562000109576200010862000086565b5b60006200011984828501620000d9565b91505092915050565b611ab080620001326000396000f3fe6080604052600436106100dd5760003560e01c80636bc7b7cd1161007f578063a9059cbb11610059578063a9059cbb146102bc578063d0fedf55146102f9578063dd62ed3e14610329578063fc0c546a14610366576100dd565b80636bc7b7cd1461022457806370a082311461025457806395d89b4114610291576100dd565b806323b872dd116100bb57806323b872dd14610175578063268d070a146101b2578063313ce567146101ce57806361bc221a146101f9576100dd565b806306fdde03146100e2578063095ea7b31461010d57806318160ddd1461014a575b600080fd5b3480156100ee57600080fd5b506100f7610391565b6040516101049190611010565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f91906110da565b61042c565b6040516101419190611135565b60405180910390f35b34801561015657600080fd5b5061015f6104d5565b60405161016c919061115f565b60405180910390f35b34801561018157600080fd5b5061019c6004803603810190610197919061117a565b61056c565b6040516101a99190611135565b60405180910390f35b6101cc60048036038101906101c7919061120b565b610618565b005b3480156101da57600080fd5b506101e36107b4565b6040516101f0919061127a565b60405180910390f35b34801561020557600080fd5b5061020e61084b565b60405161021b919061115f565b60405180910390f35b61023e600480360381019061023991906112c1565b610851565b60405161024b9190611135565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061134e565b610b5c565b604051610288919061115f565b60405180910390f35b34801561029d57600080fd5b506102a6610c00565b6040516102b39190611010565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de91906110da565b610c9b565b6040516102f09190611135565b60405180910390f35b610313600480360381019061030e919061137b565b610d44565b6040516103209190611135565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b91906113e2565b610eb5565b60405161035d919061115f565b60405180910390f35b34801561037257600080fd5b5061037b610f5c565b6040516103889190611481565b60405180910390f35b606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156103fe573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061042791906115c2565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040518363ffffffff1660e01b815260040161048a92919061161a565b6020604051808303816000875af11580156104a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cd9190611658565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610543573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610567919061169a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b81526004016105cc939291906116c7565b6020604051808303816000875af11580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f9190611658565b90509392505050565b6001600081548092919061062b9061172d565b919050555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b815260040161068e929190611796565b6020604051808303816000875af11580156106ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d19190611658565b905080610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a9061180b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663d0fedf5585846001806040518563ffffffff1660e01b8152600401610753949392919061182b565b6020604051808303816000875af192505050801561078f57506040513d601f19601f8201168201806040525081019061078c9190611658565b60015b1561079657505b600160008154809291906107a99061172d565b919050555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610846919061189c565b905090565b60015481565b6000808773ffffffffffffffffffffffffffffffffffffffff1686604051610878906118fa565b60006040518083038185875af1925050503d80600081146108b5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ba565b606091505b50509050806108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590611981565b60405180910390fd5b831561095e57600160008154809291906109179061172d565b9190505550600061095d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610954906119ed565b60405180910390fd5b5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a8a6040518363ffffffff1660e01b81526004016109bc929190611796565b6020604051808303816000875af11580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190611658565b905080610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890611981565b60405180910390fd5b8315610aa15760016000815480929190610a5a9061172d565b91905055506000610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906119ed565b60405180910390fd5b5b8873ffffffffffffffffffffffffffffffffffffffff1686604051610ac5906118fa565b60006040518083038185875af1925050503d8060008114610b02576040519150601f19603f3d011682016040523d82523d6000602084013e610b07565b606091505b50508092505081610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4490611981565b60405180910390fd5b81925050509695505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610bb89190611a0d565b602060405180830381865afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf9919061169a565b9050919050565b606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c9691906115c2565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610cf992919061161a565b6020604051808303816000875af1158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190611658565b905092915050565b600060016000815480929190610d599061172d565b919050555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b8152600401610dbc92919061161a565b6020604051808303816000875af1158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190611658565b90508315610e49576000610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f906119ed565b60405180910390fd5b5b60016000815480929190610e5c90611a28565b91905055508215610ea9576000610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f906119ed565b60405180910390fd5b5b80915050949350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401610f13929190611a51565b602060405180830381865afa158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f54919061169a565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fba578082015181840152602081019050610f9f565b60008484015250505050565b6000601f19601f8301169050919050565b6000610fe282610f80565b610fec8185610f8b565b9350610ffc818560208601610f9c565b61100581610fc6565b840191505092915050565b6000602082019050818103600083015261102a8184610fd7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061107182611046565b9050919050565b61108181611066565b811461108c57600080fd5b50565b60008135905061109e81611078565b92915050565b6000819050919050565b6110b7816110a4565b81146110c257600080fd5b50565b6000813590506110d4816110ae565b92915050565b600080604083850312156110f1576110f061103c565b5b60006110ff8582860161108f565b9250506020611110858286016110c5565b9150509250929050565b60008115159050919050565b61112f8161111a565b82525050565b600060208201905061114a6000830184611126565b92915050565b611159816110a4565b82525050565b60006020820190506111746000830184611150565b92915050565b6000806000606084860312156111935761119261103c565b5b60006111a18682870161108f565b93505060206111b28682870161108f565b92505060406111c3868287016110c5565b9150509250925092565b60006111d882611046565b9050919050565b6111e8816111cd565b81146111f357600080fd5b50565b600081359050611205816111df565b92915050565b6000806000606084860312156112245761122361103c565b5b6000611232868287016111f6565b9350506020611243868287016110c5565b9250506040611254868287016110c5565b9150509250925092565b600060ff82169050919050565b6112748161125e565b82525050565b600060208201905061128f600083018461126b565b92915050565b61129e8161111a565b81146112a957600080fd5b50565b6000813590506112bb81611295565b92915050565b60008060008060008060c087890312156112de576112dd61103c565b5b60006112ec89828a016111f6565b96505060206112fd89828a016110c5565b955050604061130e89828a016110c5565b945050606061131f89828a016110c5565b935050608061133089828a016112ac565b92505060a061134189828a016112ac565b9150509295509295509295565b6000602082840312156113645761136361103c565b5b60006113728482850161108f565b91505092915050565b600080600080608085870312156113955761139461103c565b5b60006113a38782880161108f565b94505060206113b4878288016110c5565b93505060406113c5878288016112ac565b92505060606113d6878288016112ac565b91505092959194509250565b600080604083850312156113f9576113f861103c565b5b60006114078582860161108f565b92505060206114188582860161108f565b9150509250929050565b6000819050919050565b600061144761144261143d84611046565b611422565b611046565b9050919050565b60006114598261142c565b9050919050565b600061146b8261144e565b9050919050565b61147b81611460565b82525050565b60006020820190506114966000830184611472565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6114de82610fc6565b810181811067ffffffffffffffff821117156114fd576114fc6114a6565b5b80604052505050565b6000611510611032565b905061151c82826114d5565b919050565b600067ffffffffffffffff82111561153c5761153b6114a6565b5b61154582610fc6565b9050602081019050919050565b600061156561156084611521565b611506565b905082815260208101848484011115611581576115806114a1565b5b61158c848285610f9c565b509392505050565b600082601f8301126115a9576115a861149c565b5b81516115b9848260208601611552565b91505092915050565b6000602082840312156115d8576115d761103c565b5b600082015167ffffffffffffffff8111156115f6576115f5611041565b5b61160284828501611594565b91505092915050565b61161481611066565b82525050565b600060408201905061162f600083018561160b565b61163c6020830184611150565b9392505050565b60008151905061165281611295565b92915050565b60006020828403121561166e5761166d61103c565b5b600061167c84828501611643565b91505092915050565b600081519050611694816110ae565b92915050565b6000602082840312156116b0576116af61103c565b5b60006116be84828501611685565b91505092915050565b60006060820190506116dc600083018661160b565b6116e9602083018561160b565b6116f66040830184611150565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611738826110a4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361176a576117696116fe565b5b600182019050919050565b60006117808261144e565b9050919050565b61179081611775565b82525050565b60006040820190506117ab6000830185611787565b6117b86020830184611150565b9392505050565b7f6661696c20746f207472616e7366657200000000000000000000000000000000600082015250565b60006117f5601083610f8b565b9150611800826117bf565b602082019050919050565b60006020820190508181036000830152611824816117e8565b9050919050565b60006080820190506118406000830187611787565b61184d6020830186611150565b61185a6040830185611126565b6118676060830184611126565b95945050505050565b6118798161125e565b811461188457600080fd5b50565b60008151905061189681611870565b92915050565b6000602082840312156118b2576118b161103c565b5b60006118c084828501611887565b91505092915050565b600081905092915050565b50565b60006118e46000836118c9565b91506118ef826118d4565b600082019050919050565b6000611905826118d7565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061196b602183610f8b565b91506119768261190f565b604082019050919050565b6000602082019050818103600083015261199a8161195e565b9050919050565b7f7265766572742068657265000000000000000000000000000000000000000000600082015250565b60006119d7600b83610f8b565b91506119e2826119a1565b602082019050919050565b60006020820190508181036000830152611a06816119ca565b9050919050565b6000602082019050611a22600083018461160b565b92915050565b6000611a33826110a4565b915060008203611a4657611a456116fe565b5b600182039050919050565b6000604082019050611a66600083018561160b565b611a73602083018461160b565b939250505056fea26469706673582212207c748f21e6ea6b67ec0bd81832ad76693c0487523b3bcd23eb18fd555f630d1d64736f6c63430008140033", - "deployedBytecode": "0x6080604052600436106100dd5760003560e01c80636bc7b7cd1161007f578063a9059cbb11610059578063a9059cbb146102bc578063d0fedf55146102f9578063dd62ed3e14610329578063fc0c546a14610366576100dd565b80636bc7b7cd1461022457806370a082311461025457806395d89b4114610291576100dd565b806323b872dd116100bb57806323b872dd14610175578063268d070a146101b2578063313ce567146101ce57806361bc221a146101f9576100dd565b806306fdde03146100e2578063095ea7b31461010d57806318160ddd1461014a575b600080fd5b3480156100ee57600080fd5b506100f7610391565b6040516101049190611010565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f91906110da565b61042c565b6040516101419190611135565b60405180910390f35b34801561015657600080fd5b5061015f6104d5565b60405161016c919061115f565b60405180910390f35b34801561018157600080fd5b5061019c6004803603810190610197919061117a565b61056c565b6040516101a99190611135565b60405180910390f35b6101cc60048036038101906101c7919061120b565b610618565b005b3480156101da57600080fd5b506101e36107b4565b6040516101f0919061127a565b60405180910390f35b34801561020557600080fd5b5061020e61084b565b60405161021b919061115f565b60405180910390f35b61023e600480360381019061023991906112c1565b610851565b60405161024b9190611135565b60405180910390f35b34801561026057600080fd5b5061027b6004803603810190610276919061134e565b610b5c565b604051610288919061115f565b60405180910390f35b34801561029d57600080fd5b506102a6610c00565b6040516102b39190611010565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de91906110da565b610c9b565b6040516102f09190611135565b60405180910390f35b610313600480360381019061030e919061137b565b610d44565b6040516103209190611135565b60405180910390f35b34801561033557600080fd5b50610350600480360381019061034b91906113e2565b610eb5565b60405161035d919061115f565b60405180910390f35b34801561037257600080fd5b5061037b610f5c565b6040516103889190611481565b60405180910390f35b606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156103fe573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061042791906115c2565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b384846040518363ffffffff1660e01b815260040161048a92919061161a565b6020604051808303816000875af11580156104a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cd9190611658565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610543573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610567919061169a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b81526004016105cc939291906116c7565b6020604051808303816000875af11580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f9190611658565b90509392505050565b6001600081548092919061062b9061172d565b919050555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b815260040161068e929190611796565b6020604051808303816000875af11580156106ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d19190611658565b905080610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a9061180b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663d0fedf5585846001806040518563ffffffff1660e01b8152600401610753949392919061182b565b6020604051808303816000875af192505050801561078f57506040513d601f19601f8201168201806040525081019061078c9190611658565b60015b1561079657505b600160008154809291906107a99061172d565b919050555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610846919061189c565b905090565b60015481565b6000808773ffffffffffffffffffffffffffffffffffffffff1686604051610878906118fa565b60006040518083038185875af1925050503d80600081146108b5576040519150601f19603f3d011682016040523d82523d6000602084013e6108ba565b606091505b50509050806108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590611981565b60405180910390fd5b831561095e57600160008154809291906109179061172d565b9190505550600061095d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610954906119ed565b60405180910390fd5b5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a8a6040518363ffffffff1660e01b81526004016109bc929190611796565b6020604051808303816000875af11580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190611658565b905080610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890611981565b60405180910390fd5b8315610aa15760016000815480929190610a5a9061172d565b91905055506000610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906119ed565b60405180910390fd5b5b8873ffffffffffffffffffffffffffffffffffffffff1686604051610ac5906118fa565b60006040518083038185875af1925050503d8060008114610b02576040519150601f19603f3d011682016040523d82523d6000602084013e610b07565b606091505b50508092505081610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4490611981565b60405180910390fd5b81925050509695505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610bb89190611a0d565b602060405180830381865afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf9919061169a565b9050919050565b606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c9691906115c2565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610cf992919061161a565b6020604051808303816000875af1158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190611658565b905092915050565b600060016000815480929190610d599061172d565b919050555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b8152600401610dbc92919061161a565b6020604051808303816000875af1158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190611658565b90508315610e49576000610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f906119ed565b60405180910390fd5b5b60016000815480929190610e5c90611a28565b91905055508215610ea9576000610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f906119ed565b60405180910390fd5b5b80915050949350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401610f13929190611a51565b602060405180830381865afa158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f54919061169a565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081519050919050565b600082825260208201905092915050565b60005b83811015610fba578082015181840152602081019050610f9f565b60008484015250505050565b6000601f19601f8301169050919050565b6000610fe282610f80565b610fec8185610f8b565b9350610ffc818560208601610f9c565b61100581610fc6565b840191505092915050565b6000602082019050818103600083015261102a8184610fd7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061107182611046565b9050919050565b61108181611066565b811461108c57600080fd5b50565b60008135905061109e81611078565b92915050565b6000819050919050565b6110b7816110a4565b81146110c257600080fd5b50565b6000813590506110d4816110ae565b92915050565b600080604083850312156110f1576110f061103c565b5b60006110ff8582860161108f565b9250506020611110858286016110c5565b9150509250929050565b60008115159050919050565b61112f8161111a565b82525050565b600060208201905061114a6000830184611126565b92915050565b611159816110a4565b82525050565b60006020820190506111746000830184611150565b92915050565b6000806000606084860312156111935761119261103c565b5b60006111a18682870161108f565b93505060206111b28682870161108f565b92505060406111c3868287016110c5565b9150509250925092565b60006111d882611046565b9050919050565b6111e8816111cd565b81146111f357600080fd5b50565b600081359050611205816111df565b92915050565b6000806000606084860312156112245761122361103c565b5b6000611232868287016111f6565b9350506020611243868287016110c5565b9250506040611254868287016110c5565b9150509250925092565b600060ff82169050919050565b6112748161125e565b82525050565b600060208201905061128f600083018461126b565b92915050565b61129e8161111a565b81146112a957600080fd5b50565b6000813590506112bb81611295565b92915050565b60008060008060008060c087890312156112de576112dd61103c565b5b60006112ec89828a016111f6565b96505060206112fd89828a016110c5565b955050604061130e89828a016110c5565b945050606061131f89828a016110c5565b935050608061133089828a016112ac565b92505060a061134189828a016112ac565b9150509295509295509295565b6000602082840312156113645761136361103c565b5b60006113728482850161108f565b91505092915050565b600080600080608085870312156113955761139461103c565b5b60006113a38782880161108f565b94505060206113b4878288016110c5565b93505060406113c5878288016112ac565b92505060606113d6878288016112ac565b91505092959194509250565b600080604083850312156113f9576113f861103c565b5b60006114078582860161108f565b92505060206114188582860161108f565b9150509250929050565b6000819050919050565b600061144761144261143d84611046565b611422565b611046565b9050919050565b60006114598261142c565b9050919050565b600061146b8261144e565b9050919050565b61147b81611460565b82525050565b60006020820190506114966000830184611472565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6114de82610fc6565b810181811067ffffffffffffffff821117156114fd576114fc6114a6565b5b80604052505050565b6000611510611032565b905061151c82826114d5565b919050565b600067ffffffffffffffff82111561153c5761153b6114a6565b5b61154582610fc6565b9050602081019050919050565b600061156561156084611521565b611506565b905082815260208101848484011115611581576115806114a1565b5b61158c848285610f9c565b509392505050565b600082601f8301126115a9576115a861149c565b5b81516115b9848260208601611552565b91505092915050565b6000602082840312156115d8576115d761103c565b5b600082015167ffffffffffffffff8111156115f6576115f5611041565b5b61160284828501611594565b91505092915050565b61161481611066565b82525050565b600060408201905061162f600083018561160b565b61163c6020830184611150565b9392505050565b60008151905061165281611295565b92915050565b60006020828403121561166e5761166d61103c565b5b600061167c84828501611643565b91505092915050565b600081519050611694816110ae565b92915050565b6000602082840312156116b0576116af61103c565b5b60006116be84828501611685565b91505092915050565b60006060820190506116dc600083018661160b565b6116e9602083018561160b565b6116f66040830184611150565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611738826110a4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361176a576117696116fe565b5b600182019050919050565b60006117808261144e565b9050919050565b61179081611775565b82525050565b60006040820190506117ab6000830185611787565b6117b86020830184611150565b9392505050565b7f6661696c20746f207472616e7366657200000000000000000000000000000000600082015250565b60006117f5601083610f8b565b9150611800826117bf565b602082019050919050565b60006020820190508181036000830152611824816117e8565b9050919050565b60006080820190506118406000830187611787565b61184d6020830186611150565b61185a6040830185611126565b6118676060830184611126565b95945050505050565b6118798161125e565b811461188457600080fd5b50565b60008151905061189681611870565b92915050565b6000602082840312156118b2576118b161103c565b5b60006118c084828501611887565b91505092915050565b600081905092915050565b50565b60006118e46000836118c9565b91506118ef826118d4565b600082019050919050565b6000611905826118d7565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061196b602183610f8b565b91506119768261190f565b604082019050919050565b6000602082019050818103600083015261199a8161195e565b9050919050565b7f7265766572742068657265000000000000000000000000000000000000000000600082015250565b60006119d7600b83610f8b565b91506119e2826119a1565b602082019050919050565b60006020820190508181036000830152611a06816119ca565b9050919050565b6000602082019050611a22600083018461160b565b92915050565b6000611a33826110a4565b915060008203611a4657611a456116fe565b5b600182039050919050565b6000604082019050611a66600083018561160b565b611a73602083018461160b565b939250505056fea26469706673582212207c748f21e6ea6b67ec0bd81832ad76693c0487523b3bcd23eb18fd555f630d1d64736f6c63430008140033", + "bytecode": "0x60803461007757601f610bf638819003918201601f19168301916001600160401b0383118484101761007c5780849260209460405283398101031261007757516001600160a01b0381169081900361007757600080546001600160a01b031916919091178155600155604051610b6390816100938239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004918236101561001657600080fd5b600092833560e01c9184836306fdde03146108975750508163095ea7b31461083b57816318160ddd146107ef57816323b872dd14610776578163268d070a14610639578163313ce5671461059d57816361bc221a1461057e5781636bc7b7cd1461046657816370a08231146103c857816395d89b411461034d578163a9059cbb146102b5578163d0fedf551461019e578163dd62ed3e146100eb575063fc0c546a146100c157600080fd5b346100e757816003193601126100e757905490516001600160a01b039091168152602090f35b5080fd5b919050346101885780600319360112610188576020610108610950565b604461011261096b565b86548551636eb1769f60e11b81526001600160a01b0394851697810197909752908316602487015285928391165afa918215610194578392610159575b6020838351908152f35b9091506020813d821161018c575b8161017460209383610981565b81010312610188576020925051903861014f565b8280fd5b3d9150610167565b81513d85823e3d90fd5b83915060803660031901126100e7576101b5610950565b9060443580151581036102b1576064359283151584036102ad5790602061022286936101e2600154610a4f565b6001558454895163a9059cbb60e01b81526001600160a01b03928316888201908152602435602082015290998a9493909216928492918391604090910190565b03925af19485156102a3578295610273575b5061025b576001549182156102605750506000190160015561025b57602091519015158152f35b610a74565b634e487b7160e01b825260119052602490fd5b61029591955060203d811161029c575b61028d8183610981565b8101906109b9565b9386610234565b503d610283565b86513d84823e3d90fd5b8480fd5b8380fd5b919050346101885780600319360112610188576020610311926102d6610950565b8554845163a9059cbb60e01b81526001600160a01b039283169381019384526024356020850152958693919092169183918891839160400190565b03925af1918215610194576020939261032e575b50519015158152f35b610346919250833d811161029c5761028d8183610981565b9038610325565b91905034610188578260031936011261018857825481516395d89b4160e01b815292849184919082906001600160a01b03165afa918215610194578361039f94936103a3575b50505191829182610924565b0390f35b6103c09293503d8091833e6103b88183610981565b8101906109ed565b903880610393565b8383346100e7576020928360031936011261018857836103e6610950565b845484516370a0823160e01b81526001600160a01b039283169481019490945283916024918391165afa92831561045b578093610426575b505051908152f35b909192508382813d8311610454575b61043f8183610981565b8101031261045157505190838061041e565b80fd5b503d610435565b8251903d90823e3d90fd5b828460c03660031901126104515761047c610950565b926084359384151585036101885760a4359182151583036102b1576001600160a01b03828116969091906104c1868080806044358d5af16104bb610aa7565b50610ad7565b610545578454865163a9059cbb60e01b81526001600160a01b03949094169184019182526024356020808401919091529284928390036040019183918891165af1908115610574579061051a9184916105565750610ad7565b61054557808080602095606435905af190610533610aa7565b5061053d82610ad7565b519015158152f35b610550600154610a4f565b50610a74565b61056e915060203d811161029c5761028d8183610981565b866104bb565b84513d85823e3d90fd5b5050346100e757816003193601126100e7576020906001549051908152f35b8284346104515780600319360112610451578054825163313ce56760e01b81529360209185919082906001600160a01b03165afa92831561062d5781936105ec575b60208460ff855191168152f35b9092506020813d8211610625575b8161060760209383610981565b8101031261018857519160ff83168303610451575060ff60206105df565b3d91506105fa565b509051903d90823e3d90fd5b919050606036600319011261018857610650610950565b60019261065d8454610a4f565b84558454835163a9059cbb60e01b81526001600160a01b038481168483019081526024356020828101919091529691939192918791839186169082908c90829060400103925af190811561076c57889161074f575b501561071a57519263d0fedf5560e01b845216908201526044356024820152826044820152826064820152818160848187305af16106fc575b50506106f78154610a4f565b905580f35b8161071292903d1061029c5761028d8183610981565b5038806106eb565b5162461bcd60e51b8152808301859052601060248201526f3330b4b6103a37903a3930b739b332b960811b6044820152606490fd5b6107669150863d881161029c5761028d8183610981565b386106b2565b82513d8a823e3d90fd5b91905034610188576060366003190112610188576020610794610950565b606461079e61096b565b865485516323b872dd60e01b81526001600160a01b039485169781019790975290831660248701526044803590870152859283918891165af1918215610194576020939261032e5750519015158152f35b91905034610188578260031936011261018857825481516318160ddd60e01b81529260209184919082906001600160a01b03165afa918215610194578392610159576020838351908152f35b9190503461018857806003193601126101885760206103119261085c610950565b8554845163095ea7b360e01b81526001600160a01b039283169381019384526024356020850152958693919092169183918891839160400190565b91828591346100e757816003193601126100e75781546306fdde0360e01b855284919082906001600160a01b03165afa918215610194578361039f94936108e45750505191829182610924565b6108f99293503d8091833e6103b88183610981565b908380610393565b60005b8381106109145750506000910152565b8181015183820152602001610904565b604091602082526109448151809281602086015260208686019101610901565b601f01601f1916010190565b600435906001600160a01b038216820361096657565b600080fd5b602435906001600160a01b038216820361096657565b90601f8019910116810190811067ffffffffffffffff8211176109a357604052565b634e487b7160e01b600052604160045260246000fd5b90816020910312610966575180151581036109665790565b67ffffffffffffffff81116109a357601f01601f191660200190565b6020818303126109665780519067ffffffffffffffff8211610966570181601f82011215610966578051610a20816109d1565b92610a2e6040519485610981565b8184526020828401011161096657610a4c9160208085019101610901565b90565b6000198114610a5e5760010190565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600b60248201526a726576657274206865726560a81b6044820152606490fd5b3d15610ad2573d90610ab8826109d1565b91610ac66040519384610981565b82523d6000602084013e565b606090565b15610ade57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fdfea264697066735822122062ba743dd9ada86a55113a52bb15264a99fef9ed2643c9db57b47edded3c20b664736f6c63430008140033", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600092833560e01c9184836306fdde03146108975750508163095ea7b31461083b57816318160ddd146107ef57816323b872dd14610776578163268d070a14610639578163313ce5671461059d57816361bc221a1461057e5781636bc7b7cd1461046657816370a08231146103c857816395d89b411461034d578163a9059cbb146102b5578163d0fedf551461019e578163dd62ed3e146100eb575063fc0c546a146100c157600080fd5b346100e757816003193601126100e757905490516001600160a01b039091168152602090f35b5080fd5b919050346101885780600319360112610188576020610108610950565b604461011261096b565b86548551636eb1769f60e11b81526001600160a01b0394851697810197909752908316602487015285928391165afa918215610194578392610159575b6020838351908152f35b9091506020813d821161018c575b8161017460209383610981565b81010312610188576020925051903861014f565b8280fd5b3d9150610167565b81513d85823e3d90fd5b83915060803660031901126100e7576101b5610950565b9060443580151581036102b1576064359283151584036102ad5790602061022286936101e2600154610a4f565b6001558454895163a9059cbb60e01b81526001600160a01b03928316888201908152602435602082015290998a9493909216928492918391604090910190565b03925af19485156102a3578295610273575b5061025b576001549182156102605750506000190160015561025b57602091519015158152f35b610a74565b634e487b7160e01b825260119052602490fd5b61029591955060203d811161029c575b61028d8183610981565b8101906109b9565b9386610234565b503d610283565b86513d84823e3d90fd5b8480fd5b8380fd5b919050346101885780600319360112610188576020610311926102d6610950565b8554845163a9059cbb60e01b81526001600160a01b039283169381019384526024356020850152958693919092169183918891839160400190565b03925af1918215610194576020939261032e575b50519015158152f35b610346919250833d811161029c5761028d8183610981565b9038610325565b91905034610188578260031936011261018857825481516395d89b4160e01b815292849184919082906001600160a01b03165afa918215610194578361039f94936103a3575b50505191829182610924565b0390f35b6103c09293503d8091833e6103b88183610981565b8101906109ed565b903880610393565b8383346100e7576020928360031936011261018857836103e6610950565b845484516370a0823160e01b81526001600160a01b039283169481019490945283916024918391165afa92831561045b578093610426575b505051908152f35b909192508382813d8311610454575b61043f8183610981565b8101031261045157505190838061041e565b80fd5b503d610435565b8251903d90823e3d90fd5b828460c03660031901126104515761047c610950565b926084359384151585036101885760a4359182151583036102b1576001600160a01b03828116969091906104c1868080806044358d5af16104bb610aa7565b50610ad7565b610545578454865163a9059cbb60e01b81526001600160a01b03949094169184019182526024356020808401919091529284928390036040019183918891165af1908115610574579061051a9184916105565750610ad7565b61054557808080602095606435905af190610533610aa7565b5061053d82610ad7565b519015158152f35b610550600154610a4f565b50610a74565b61056e915060203d811161029c5761028d8183610981565b866104bb565b84513d85823e3d90fd5b5050346100e757816003193601126100e7576020906001549051908152f35b8284346104515780600319360112610451578054825163313ce56760e01b81529360209185919082906001600160a01b03165afa92831561062d5781936105ec575b60208460ff855191168152f35b9092506020813d8211610625575b8161060760209383610981565b8101031261018857519160ff83168303610451575060ff60206105df565b3d91506105fa565b509051903d90823e3d90fd5b919050606036600319011261018857610650610950565b60019261065d8454610a4f565b84558454835163a9059cbb60e01b81526001600160a01b038481168483019081526024356020828101919091529691939192918791839186169082908c90829060400103925af190811561076c57889161074f575b501561071a57519263d0fedf5560e01b845216908201526044356024820152826044820152826064820152818160848187305af16106fc575b50506106f78154610a4f565b905580f35b8161071292903d1061029c5761028d8183610981565b5038806106eb565b5162461bcd60e51b8152808301859052601060248201526f3330b4b6103a37903a3930b739b332b960811b6044820152606490fd5b6107669150863d881161029c5761028d8183610981565b386106b2565b82513d8a823e3d90fd5b91905034610188576060366003190112610188576020610794610950565b606461079e61096b565b865485516323b872dd60e01b81526001600160a01b039485169781019790975290831660248701526044803590870152859283918891165af1918215610194576020939261032e5750519015158152f35b91905034610188578260031936011261018857825481516318160ddd60e01b81529260209184919082906001600160a01b03165afa918215610194578392610159576020838351908152f35b9190503461018857806003193601126101885760206103119261085c610950565b8554845163095ea7b360e01b81526001600160a01b039283169381019384526024356020850152958693919092169183918891839160400190565b91828591346100e757816003193601126100e75781546306fdde0360e01b855284919082906001600160a01b03165afa918215610194578361039f94936108e45750505191829182610924565b6108f99293503d8091833e6103b88183610981565b908380610393565b60005b8381106109145750506000910152565b8181015183820152602001610904565b604091602082526109448151809281602086015260208686019101610901565b601f01601f1916010190565b600435906001600160a01b038216820361096657565b600080fd5b602435906001600160a01b038216820361096657565b90601f8019910116810190811067ffffffffffffffff8211176109a357604052565b634e487b7160e01b600052604160045260246000fd5b90816020910312610966575180151581036109665790565b67ffffffffffffffff81116109a357601f01601f191660200190565b6020818303126109665780519067ffffffffffffffff8211610966570181601f82011215610966578051610a20816109d1565b92610a2e6040519485610981565b8184526020828401011161096657610a4c9160208085019101610901565b90565b6000198114610a5e5760010190565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600b60248201526a726576657274206865726560a81b6044820152606490fd5b3d15610ad2573d90610ab8826109d1565b91610ac66040519384610981565b82523d6000602084013e565b606090565b15610ade57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fdfea264697066735822122062ba743dd9ada86a55113a52bb15264a99fef9ed2643c9db57b47edded3c20b664736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/slashing/testdata/SlashingCaller.json b/precompiles/slashing/testdata/SlashingCaller.json index 7209be0d0..0d528bc7d 100644 --- a/precompiles/slashing/testdata/SlashingCaller.json +++ b/precompiles/slashing/testdata/SlashingCaller.json @@ -42,8 +42,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610266806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80637327af9014610030575b600080fd5b61004a6004803603810190610045919061014a565b610060565b6040516100579190610192565b60405180910390f35b600061080673ffffffffffffffffffffffffffffffffffffffff1663449ecfe6836040518263ffffffff1660e01b815260040161009d91906101bc565b6020604051808303816000875af11580156100bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e09190610203565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610117826100ec565b9050919050565b6101278161010c565b811461013257600080fd5b50565b6000813590506101448161011e565b92915050565b6000602082840312156101605761015f6100e7565b5b600061016e84828501610135565b91505092915050565b60008115159050919050565b61018c81610177565b82525050565b60006020820190506101a76000830184610183565b92915050565b6101b68161010c565b82525050565b60006020820190506101d160008301846101ad565b92915050565b6101e081610177565b81146101eb57600080fd5b50565b6000815190506101fd816101d7565b92915050565b600060208284031215610219576102186100e7565b5b6000610227848285016101ee565b9150509291505056fea26469706673582212207b065faea0073fdee2d647b8e8fec0f254bbe874db1dddec6901ec6261a9c84164736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80637327af9014610030575b600080fd5b61004a6004803603810190610045919061014a565b610060565b6040516100579190610192565b60405180910390f35b600061080673ffffffffffffffffffffffffffffffffffffffff1663449ecfe6836040518263ffffffff1660e01b815260040161009d91906101bc565b6020604051808303816000875af11580156100bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e09190610203565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610117826100ec565b9050919050565b6101278161010c565b811461013257600080fd5b50565b6000813590506101448161011e565b92915050565b6000602082840312156101605761015f6100e7565b5b600061016e84828501610135565b91505092915050565b60008115159050919050565b61018c81610177565b82525050565b60006020820190506101a76000830184610183565b92915050565b6101b68161010c565b82525050565b60006020820190506101d160008301846101ad565b92915050565b6101e081610177565b81146101eb57600080fd5b50565b6000815190506101fd816101d7565b92915050565b600060208284031215610219576102186100e7565b5b6000610227848285016101ee565b9150509291505056fea26469706673582212207b065faea0073fdee2d647b8e8fec0f254bbe874db1dddec6901ec6261a9c84164736f6c63430008140033", + "bytecode": "0x6080806040523461001657610129908161001c8239f35b600080fdfe6080806040526004361015601257600080fd5b600090813560e01c637327af9014602857600080fd5b3460c8576020918260031936011260c5576004356001600160a01b0381169081900360c85763224f67f360e11b835260048301528282602481846108065af191821560e6578192607f575b50506040519015158152f35b909150823d841160e0575b601f8101601f1916820167ffffffffffffffff81118382101760cc57849183916040528101031260c8575190811515820360c5575038806073565b80fd5b5080fd5b634e487b7160e01b84526041600452602484fd5b503d608a565b50604051903d90823e3d90fdfea264697066735822122030280e24435dd2b28402bc0a014d2529269028fe5e4568d417064696d65217b464736f6c63430008140033", + "deployedBytecode": "0x6080806040526004361015601257600080fd5b600090813560e01c637327af9014602857600080fd5b3460c8576020918260031936011260c5576004356001600160a01b0381169081900360c85763224f67f360e11b835260048301528282602481846108065af191821560e6578192607f575b50506040519015158152f35b909150823d841160e0575b601f8101601f1916820167ffffffffffffffff81118382101760cc57849183916040528101031260c8575190811515820360c5575038806073565b80fd5b5080fd5b634e487b7160e01b84526041600452602484fd5b503d608a565b50604051903d90823e3d90fdfea264697066735822122030280e24435dd2b28402bc0a014d2529269028fe5e4568d417064696d65217b464736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/staking/README.md b/precompiles/staking/README.md index 45b9cfbe1..9dd4c7d3f 100644 --- a/precompiles/staking/README.md +++ b/precompiles/staking/README.md @@ -36,7 +36,7 @@ struct Validator { BondStatus status; // Bonding status uint256 tokens; // Total tokens uint256 delegatorShares; // Total delegator shares - string description; // JSON encoded description + Description description; // Description struct int64 unbondingHeight; // Height when unbonding started int64 unbondingTime; // Time when unbonding completes uint256 commission; // Current commission rate diff --git a/precompiles/staking/StakingI.sol b/precompiles/staking/StakingI.sol index 18e799f19..3c55d0d9f 100644 --- a/precompiles/staking/StakingI.sol +++ b/precompiles/staking/StakingI.sol @@ -55,7 +55,7 @@ struct Validator { BondStatus status; uint256 tokens; uint256 delegatorShares; // TODO: decimal - string description; + Description description; int64 unbondingHeight; int64 unbondingTime; uint256 commission; diff --git a/precompiles/staking/abi.json b/precompiles/staking/abi.json index 9cbfa2c45..6e498ed09 100644 --- a/precompiles/staking/abi.json +++ b/precompiles/staking/abi.json @@ -850,9 +850,36 @@ "type": "uint256" }, { - "internalType": "string", + "components": [ + { + "internalType": "string", + "name": "moniker", + "type": "string" + }, + { + "internalType": "string", + "name": "identity", + "type": "string" + }, + { + "internalType": "string", + "name": "website", + "type": "string" + }, + { + "internalType": "string", + "name": "securityContact", + "type": "string" + }, + { + "internalType": "string", + "name": "details", + "type": "string" + } + ], + "internalType": "struct Description", "name": "description", - "type": "string" + "type": "tuple" }, { "internalType": "int64", @@ -958,9 +985,36 @@ "type": "uint256" }, { - "internalType": "string", + "components": [ + { + "internalType": "string", + "name": "moniker", + "type": "string" + }, + { + "internalType": "string", + "name": "identity", + "type": "string" + }, + { + "internalType": "string", + "name": "website", + "type": "string" + }, + { + "internalType": "string", + "name": "securityContact", + "type": "string" + }, + { + "internalType": "string", + "name": "details", + "type": "string" + } + ], + "internalType": "struct Description", "name": "description", - "type": "string" + "type": "tuple" }, { "internalType": "int64", diff --git a/precompiles/staking/query.go b/precompiles/staking/query.go index 006627653..35da3a7fe 100644 --- a/precompiles/staking/query.go +++ b/precompiles/staking/query.go @@ -110,14 +110,14 @@ func (p Precompile) Validator( // return empty validator info if the validator is not found expError := fmt.Sprintf("validator %s not found", req.ValidatorAddr) if strings.Contains(err.Error(), expError) { - return method.Outputs.Pack(DefaultValidatorOutput().Validator) + return method.Outputs.Pack(DefaultValidatorInfo()) } return nil, err } - out := new(ValidatorOutput).FromResponse(res) + validatorInfo := NewValidatorInfoFromResponse(res.Validator) - return method.Outputs.Pack(out.Validator) + return method.Outputs.Pack(validatorInfo) } // Validators returns the validators information with a provided status & pagination (optional). diff --git a/precompiles/staking/testdata/StakingCaller.json b/precompiles/staking/testdata/StakingCaller.json index b45c8f132..adb465da0 100644 --- a/precompiles/staking/testdata/StakingCaller.json +++ b/precompiles/staking/testdata/StakingCaller.json @@ -461,9 +461,36 @@ "type": "uint256" }, { - "internalType": "string", + "components": [ + { + "internalType": "string", + "name": "moniker", + "type": "string" + }, + { + "internalType": "string", + "name": "identity", + "type": "string" + }, + { + "internalType": "string", + "name": "website", + "type": "string" + }, + { + "internalType": "string", + "name": "securityContact", + "type": "string" + }, + { + "internalType": "string", + "name": "details", + "type": "string" + } + ], + "internalType": "struct Description", "name": "description", - "type": "string" + "type": "tuple" }, { "internalType": "int64", @@ -569,9 +596,36 @@ "type": "uint256" }, { - "internalType": "string", + "components": [ + { + "internalType": "string", + "name": "moniker", + "type": "string" + }, + { + "internalType": "string", + "name": "identity", + "type": "string" + }, + { + "internalType": "string", + "name": "website", + "type": "string" + }, + { + "internalType": "string", + "name": "securityContact", + "type": "string" + }, + { + "internalType": "string", + "name": "details", + "type": "string" + } + ], + "internalType": "struct Description", "name": "description", - "type": "string" + "type": "tuple" }, { "internalType": "int64", @@ -980,8 +1034,8 @@ "type": "function" } ], - "bytecode": "0x60806040526040518060200160405280604051806060016040528060238152602001620063d16023913981525060039060016200003e92919062000053565b503480156200004c57600080fd5b50620004a1565b828054828255906000526020600020908101928215620000a0579160200282015b828111156200009f5782518290816200008e9190620003ba565b509160200191906001019062000074565b5b509050620000af9190620000b3565b5090565b5b80821115620000d75760008181620000cd9190620000db565b50600101620000b4565b5090565b508054620000e990620001a9565b6000825580601f10620000fd57506200011e565b601f0160209004906000526020600020908101906200011d919062000121565b5b50565b5b808211156200013c57600081600090555060010162000122565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001c257607f821691505b602082108103620001d857620001d76200017a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000203565b6200024e868362000203565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200029b620002956200028f8462000266565b62000270565b62000266565b9050919050565b6000819050919050565b620002b7836200027a565b620002cf620002c682620002a2565b84845462000210565b825550505050565b600090565b620002e6620002d7565b620002f3818484620002ac565b505050565b5b818110156200031b576200030f600082620002dc565b600181019050620002f9565b5050565b601f8211156200036a576200033481620001de565b6200033f84620001f3565b810160208510156200034f578190505b620003676200035e85620001f3565b830182620002f8565b50505b505050565b600082821c905092915050565b60006200038f600019846008026200036f565b1980831691505092915050565b6000620003aa83836200037c565b9150826002028217905092915050565b620003c58262000140565b67ffffffffffffffff811115620003e157620003e06200014b565b5b620003ed8254620001a9565b620003fa8282856200031f565b600060209050601f8311600181146200043257600084156200041d578287015190505b6200042985826200039c565b86555062000499565b601f1984166200044286620001de565b60005b828110156200046c5784890151825560018201915060208501945060208101905062000445565b868310156200048c578489015162000488601f8916826200037c565b8355505b6001600288020188555050505b505050505050565b615f2080620004b16000396000f3fe60806040526004361061011f5760003560e01c806361bc221a116100a0578063b3e9823411610064578063b3e982341461040b578063b61b519714610434578063cf2753cf14610450578063ddbaf2c21461048e578063f732b065146104cb5761011f565b806361bc221a146102ff57806368ac3df31461032a578063a4603a2e14610367578063af9a90b214610390578063b13d4242146103cd5761011f565b806331bcbcb3116100e757806331bcbcb314610231578063455b85511461024d578063464d2d031461028a578063569c21e3146102a6578063570467ac146102c25761011f565b8063088b32b1146101245780631904bb2e1461016457806319b16c4c146101a15780632345e7d4146101df57806329e71c8214610208575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190612693565b610509565b60405161015b949392919061278e565b60405180910390f35b34801561017057600080fd5b5061018b600480360381019061018691906127da565b6105eb565b60405161019891906129fe565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612b55565b61067b565b6040516101d6929190612c1d565b60405180910390f35b3480156101eb57600080fd5b5061020660048036038101906102019190612c4d565b610b7a565b005b34801561021457600080fd5b5061022f600480360381019061022a9190612cd8565b610fdd565b005b61024b60048036038101906102469190612d34565b6110cb565b005b34801561025957600080fd5b50610274600480360381019061026f9190612da3565b6112e4565b6040516102819190612faa565b60405180910390f35b6102a4600480360381019061029f9190612fcc565b611377565b005b6102c060048036038101906102bb9190612fcc565b61149b565b005b3480156102ce57600080fd5b506102e960048036038101906102e49190612b55565b611578565b6040516102f69190613191565b60405180910390f35b34801561030b57600080fd5b5061031461160e565b60405161032191906131b3565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c9190613211565b611614565b60405161035e91906132e6565b60405180910390f35b34801561037357600080fd5b5061038e60048036038101906103899190613301565b6116aa565b005b34801561039c57600080fd5b506103b760048036038101906103b291906133a6565b611794565b6040516103c491906132e6565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613448565b611824565b604051610402929190613711565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190613748565b6118bc565b005b61044e60048036038101906104499190612fcc565b6119b0565b005b34801561045c57600080fd5b5061047760048036038101906104729190612da3565b611aa7565b604051610485929190612c1d565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b09190612da3565b611b3f565b6040516104c291906131b3565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed919061397e565b611b7a565b604051610500929190613c95565b60405180910390f35b6001602052816000526040600020818154811061052557600080fd5b90600052602060002090600402016000915091505080600001805461054990613cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461057590613cfb565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b5050505050908060010154908060020154908060030160009054906101000a900460070b905084565b6105f3612493565b61080073ffffffffffffffffffffffffffffffffffffffff1663223b3b7a836040518263ffffffff1660e01b815260040161062e9190613d3b565b600060405180830381865afa15801561064b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106749190613fa1565b9050919050565b6000610685612507565b60006108009050600086866040516024016106a1929190613fea565b6040516020818303038152906040527f241774e6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000856040516020016107339190614056565b60405160208183030381529060405280519060200120905060405160200161075a906140b9565b604051602081830303815290604052805190602001208103610846576000808473ffffffffffffffffffffffffffffffffffffffff168460405161079e919061410a565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b509150915081610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90614193565b60405180910390fd5b80806020019051810190610837919061421f565b80975081985050505050610b6f565b604051602001610855906142c7565b604051602081830303815290604052805190602001208103610941576000808473ffffffffffffffffffffffffffffffffffffffff1684604051610899919061410a565b600060405180830381855afa9150503d80600081146108d4576040519150601f19603f3d011682016040523d82523d6000602084013e6108d9565b606091505b50915091508161091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091590614328565b60405180910390fd5b80806020019051810190610932919061421f565b80975081985050505050610b6e565b60405160200161095090614394565b604051602081830303815290604052805190602001208103610a3e576000808473ffffffffffffffffffffffffffffffffffffffff1684604051610994919061410a565b6000604051808303816000865af19150503d80600081146109d1576040519150601f19603f3d011682016040523d82523d6000602084013e6109d6565b606091505b509150915081610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a12906143f5565b60405180910390fd5b80806020019051810190610a2f919061421f565b80975081985050505050610b6d565b604051602001610a4d90614461565b604051602081830303815290604052805190602001208103610b315760006040518060400160405280601a81526020017f64656c65676174696f6e28616464726573732c737472696e6729000000000000815250805190602001209050600060a490506060600060208b01516020808d0101516040518681528e6004820152604060248201526033604482015282606482015281608482015260c081878360008e5af281519c5060608201519450610100820160405280610b0d57600080fd5b50505050604051806040016040528083815260200182815250975050505050610b6c565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b63906144c2565b60405180910390fd5b5b5b5b505050935093915050565b610b82611c18565b600061080090506000308585604051602401610ba0939291906144e2565b6040516020818303038152906040527f3edab33c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600083604051602001610c329190614056565b6040516020818303038152906040528051906020012090506000621baf8042610c5b919061454f565b9050604051602001610c6c906140b9565b604051602081830303815290604052805190602001208203610d52576000808573ffffffffffffffffffffffffffffffffffffffff1685604051610cb0919061410a565b600060405180830381855af49150503d8060008114610ceb576040519150601f19603f3d011682016040523d82523d6000602084013e610cf0565b606091505b509150915081610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90614193565b60405180910390fd5b80806020019051810190610d499190614583565b92505050610fc9565b604051602001610d61906142c7565b604051602081830303815290604052805190602001208203610e47576000808573ffffffffffffffffffffffffffffffffffffffff1685604051610da5919061410a565b600060405180830381855afa9150503d8060008114610de0576040519150601f19603f3d011682016040523d82523d6000602084013e610de5565b606091505b509150915081610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190614328565b60405180910390fd5b80806020019051810190610e3e9190614583565b92505050610fc8565b604051602001610e5690614394565b604051602081830303815290604052805190602001208203610f3e576000808573ffffffffffffffffffffffffffffffffffffffff1685604051610e9a919061410a565b6000604051808303816000865af19150503d8060008114610ed7576040519150601f19603f3d011682016040523d82523d6000602084013e610edc565b606091505b509150915081610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f18906143f5565b60405180910390fd5b80806020019051810190610f359190614583565b92505050610fc7565b604051602001610f4d90614461565b604051602081830303815290604052805190602001208203610f8b57602083018351600080828460008a5af280610f8357600080fd5b505050610fc6565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906144c2565b60405180910390fd5b5b5b5b610fd4878783611e10565b50505050505050565b610fe78282611eff565b610fef611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff16633edab33c3085856040518463ffffffff1660e01b8152600401611030939291906144e2565b6020604051808303816000875af115801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190614583565b905060008160070b136110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b2906145fc565b60405180910390fd5b6110c6838383611e10565b505050565b6110d3611c18565b60008373ffffffffffffffffffffffffffffffffffffffff1633836040516024016110ff92919061461c565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611189919061410a565b6000604051808303816000865af19150503d80600081146111c6576040519150601f19603f3d011682016040523d82523d6000602084013e6111cb565b606091505b505090508061120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690614691565b60405180910390fd5b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3085346040518463ffffffff1660e01b815260040161124e939291906144e2565b6020604051808303816000875af115801561126d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129191906146b1565b9050806112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca9061472a565b60405180910390fd5b6112de338434611fa0565b50505050565b6112ec612521565b61080073ffffffffffffffffffffffffffffffffffffffff1663a03ffee184846040518363ffffffff1660e01b8152600401611329929190613fea565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061136f919061497f565b905092915050565b61137f611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084346040518463ffffffff1660e01b81526004016113c0939291906144e2565b6020604051808303816000875af11580156113df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140391906146b1565b905080611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c9061472a565b60405180910390fd5b611450338334611fa0565b3373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611496573d6000803e3d6000fd5b505050565b6114a3611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084346040518463ffffffff1660e01b81526004016114e4939291906144e2565b6020604051808303816000875af1158015611503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152791906146b1565b905080611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115609061472a565b60405180910390fd5b611574338334611fa0565b5050565b611580612542565b61080073ffffffffffffffffffffffffffffffffffffffff16637d9f939c8585856040518463ffffffff1660e01b81526004016115bf939291906149c8565b600060405180830381865afa1580156115dc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906116059190614c30565b90509392505050565b60025481565b600061080073ffffffffffffffffffffffffffffffffffffffff1663f7cd55168888888888886040518763ffffffff1660e01b815260040161165b96959493929190614e4d565b6020604051808303816000875af115801561167a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169e91906146b1565b90509695505050505050565b6116b2611c18565b6116bc3384612016565b600061080073ffffffffffffffffffffffffffffffffffffffff166312d58dfe308686866040518563ffffffff1660e01b81526004016116ff9493929190614ebd565b6020604051808303816000875af115801561171e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174291906146b1565b905080611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b90614f55565b60405180910390fd5b61178e82846121f0565b50505050565b600061080073ffffffffffffffffffffffffffffffffffffffff1663a50f05ac868686866040518563ffffffff1660e01b81526004016117d79493929190614f84565b6020604051808303816000875af11580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a91906146b1565b9050949350505050565b606061182e61256a565b61080073ffffffffffffffffffffffffffffffffffffffff1663186b216785856040518363ffffffff1660e01b815260040161186b92919061512e565b600060405180830381865afa158015611888573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906118b19190615322565b915091509250929050565b6118c68382611eff565b600061080073ffffffffffffffffffffffffffffffffffffffff166354b826f5308686866040518563ffffffff1660e01b8152600401611909949392919061539a565b6020604051808303816000875af1158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190614583565b905060008160070b13611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90615439565b60405180910390fd5b61199f338584612365565b6119aa338484611fa0565b50505050565b6119b8611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084346040518463ffffffff1660e01b81526004016119f9939291906144e2565b6020604051808303816000875af1158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c91906146b1565b905080611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a759061472a565b60405180910390fd5b611a89338334611fa0565b600160026000828254611a9c919061454f565b925050819055505050565b6000611ab1612507565b61080073ffffffffffffffffffffffffffffffffffffffff1663241774e685856040518363ffffffff1660e01b8152600401611aee929190613fea565b600060405180830381865afa158015611b0b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b34919061421f565b915091509250929050565b600060205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b6060611b8461256a565b61080073ffffffffffffffffffffffffffffffffffffffff166310a2851c878787876040518563ffffffff1660e01b8152600401611bc594939291906154cf565b600060405180830381865afa158015611be2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c0b919061588d565b9150915094509492505050565b60005b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611e0d576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611cb857611cb7615905565b5b90600052602060002090600402019050428160030160009054906101000a900460070b60070b11611df957600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611d3457611d33615905565b5b906000526020600020906004020160008082016000611d53919061258e565b600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff0219169055505080600101546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082600001604051611dd491906159cc565b90815260200160405180910390206000828254611df191906159e3565b925050819055505b508080611e0590615a17565b915050611c1b565b50565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052808581526020018481526020014381526020018360070b81525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081611eb19190615bf6565b50602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505050505050565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051611f4c9190614056565b9081526020016040518091039020541015611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390615d3a565b60405180910390fd5b5050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051611fed9190614056565b9081526020016040518091039020600082825461200a919061454f565b92505081905550505050565b600080600090505b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156121a3576000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106120bb576120ba615905565b5b906000526020600020906004020190506121618160000180546120dd90613cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461210990613cfb565b80156121565780601f1061212b57610100808354040283529160200191612156565b820191906000526020600020905b81548152906001019060200180831161213957829003601f168201915b505050505085612478565b80156121805750428160030160009054906101000a900460070b60070b115b1561218f5760019250506121a3565b50808061219b90615a17565b91505061201e565b5060011515811515146121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e290615dcc565b60405180910390fd5b505050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b818054905081101561235f57600082828154811061225757612256615905565b5b9060005260206000209060040201905084816002015414612278575061234c565b83816001015410156122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690615e5e565b60405180910390fd5b838160010160008282546122d391906159e3565b925050819055506000816001015403612346578282815481106122f9576122f8615905565b5b906000526020600020906004020160008082016000612318919061258e565b600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff021916905550505b5061235f565b808061235790615a17565b915050612236565b50505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020836040516123b29190614056565b9081526020016040518091039020541015612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990615eca565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360405161244f9190614056565b9081526020016040518091039020600082825461246c91906159e3565b92505081905550505050565b60008180519060200120838051906020012014905092915050565b6040518061016001604052806060815260200160608152602001600015158152602001600060038111156124ca576124c961286c565b5b8152602001600081526020016000815260200160608152602001600060070b8152602001600060070b815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001606081525090565b6040518060800160405280606081526020016060815260200160608152602001606081525090565b604051806040016040528060608152602001600067ffffffffffffffff1681525090565b50805461259a90613cfb565b6000825580601f106125ac57506125cb565b601f0160209004906000526020600020908101906125ca91906125ce565b5b50565b5b808211156125e75760008160009055506001016125cf565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061262a826125ff565b9050919050565b61263a8161261f565b811461264557600080fd5b50565b60008135905061265781612631565b92915050565b6000819050919050565b6126708161265d565b811461267b57600080fd5b50565b60008135905061268d81612667565b92915050565b600080604083850312156126aa576126a96125f5565b5b60006126b885828601612648565b92505060206126c98582860161267e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561270d5780820151818401526020810190506126f2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612735826126d3565b61273f81856126de565b935061274f8185602086016126ef565b61275881612719565b840191505092915050565b61276c8161265d565b82525050565b60008160070b9050919050565b61278881612772565b82525050565b600060808201905081810360008301526127a8818761272a565b90506127b76020830186612763565b6127c46040830185612763565b6127d1606083018461277f565b95945050505050565b6000602082840312156127f0576127ef6125f5565b5b60006127fe84828501612648565b91505092915050565b600082825260208201905092915050565b6000612823826126d3565b61282d8185612807565b935061283d8185602086016126ef565b61284681612719565b840191505092915050565b60008115159050919050565b61286681612851565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106128ac576128ab61286c565b5b50565b60008190506128bd8261289b565b919050565b60006128cd826128af565b9050919050565b6128dd816128c2565b82525050565b6128ec8161265d565b82525050565b6128fb81612772565b82525050565b600061016083016000830151848203600086015261291f8282612818565b915050602083015184820360208601526129398282612818565b915050604083015161294e604086018261285d565b50606083015161296160608601826128d4565b50608083015161297460808601826128e3565b5060a083015161298760a08601826128e3565b5060c083015184820360c086015261299f8282612818565b91505060e08301516129b460e08601826128f2565b506101008301516129c96101008601826128f2565b506101208301516129de6101208601826128e3565b506101408301516129f36101408601826128e3565b508091505092915050565b60006020820190508181036000830152612a188184612901565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a6282612719565b810181811067ffffffffffffffff82111715612a8157612a80612a2a565b5b80604052505050565b6000612a946125eb565b9050612aa08282612a59565b919050565b600067ffffffffffffffff821115612ac057612abf612a2a565b5b612ac982612719565b9050602081019050919050565b82818337600083830152505050565b6000612af8612af384612aa5565b612a8a565b905082815260208101848484011115612b1457612b13612a25565b5b612b1f848285612ad6565b509392505050565b600082601f830112612b3c57612b3b612a20565b5b8135612b4c848260208601612ae5565b91505092915050565b600080600060608486031215612b6e57612b6d6125f5565b5b6000612b7c86828701612648565b935050602084013567ffffffffffffffff811115612b9d57612b9c6125fa565b5b612ba986828701612b27565b925050604084013567ffffffffffffffff811115612bca57612bc96125fa565b5b612bd686828701612b27565b9150509250925092565b60006040830160008301518482036000860152612bfd8282612818565b9150506020830151612c1260208601826128e3565b508091505092915050565b6000604082019050612c326000830185612763565b8181036020830152612c448184612be0565b90509392505050565b600080600060608486031215612c6657612c656125f5565b5b600084013567ffffffffffffffff811115612c8457612c836125fa565b5b612c9086828701612b27565b9350506020612ca18682870161267e565b925050604084013567ffffffffffffffff811115612cc257612cc16125fa565b5b612cce86828701612b27565b9150509250925092565b60008060408385031215612cef57612cee6125f5565b5b600083013567ffffffffffffffff811115612d0d57612d0c6125fa565b5b612d1985828601612b27565b9250506020612d2a8582860161267e565b9150509250929050565b600080600060608486031215612d4d57612d4c6125f5565b5b6000612d5b86828701612648565b935050602084013567ffffffffffffffff811115612d7c57612d7b6125fa565b5b612d8886828701612b27565b9250506040612d998682870161267e565b9150509250925092565b60008060408385031215612dba57612db96125f5565b5b6000612dc885828601612648565b925050602083013567ffffffffffffffff811115612de957612de86125fa565b5b612df585828601612b27565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600067ffffffffffffffff82169050919050565b612e4881612e2b565b82525050565b60c082016000820151612e6460008501826128f2565b506020820151612e7760208501826128f2565b506040820151612e8a60408501826128e3565b506060820151612e9d60608501826128e3565b506080820151612eb06080850182612e3f565b5060a0820151612ec360a08501826128f2565b50505050565b6000612ed58383612e4e565b60c08301905092915050565b6000602082019050919050565b6000612ef982612dff565b612f038185612e0a565b9350612f0e83612e1b565b8060005b83811015612f3f578151612f268882612ec9565b9750612f3183612ee1565b925050600181019050612f12565b5085935050505092915050565b60006060830160008301518482036000860152612f698282612818565b91505060208301518482036020860152612f838282612818565b91505060408301518482036040860152612f9d8282612eee565b9150508091505092915050565b60006020820190508181036000830152612fc48184612f4c565b905092915050565b600060208284031215612fe257612fe16125f5565b5b600082013567ffffffffffffffff81111561300057612fff6125fa565b5b61300c84828501612b27565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60808201600082015161305760008501826128f2565b50602082015161306a60208501826128f2565b50604082015161307d60408501826128e3565b50606082015161309060608501826128e3565b50505050565b60006130a28383613041565b60808301905092915050565b6000602082019050919050565b60006130c682613015565b6130d08185613020565b93506130db83613031565b8060005b8381101561310c5781516130f38882613096565b97506130fe836130ae565b9250506001810190506130df565b5085935050505092915050565b600060808301600083015184820360008601526131368282612818565b915050602083015184820360208601526131508282612818565b9150506040830151848203604086015261316a8282612818565b9150506060830151848203606086015261318482826130bb565b9150508091505092915050565b600060208201905081810360008301526131ab8184613119565b905092915050565b60006020820190506131c86000830184612763565b92915050565b600080fd5b600060a082840312156131e9576131e86131ce565b5b81905092915050565b600060608284031215613208576132076131ce565b5b81905092915050565b600080600080600080610100878903121561322f5761322e6125f5565b5b600087013567ffffffffffffffff81111561324d5761324c6125fa565b5b61325989828a016131d3565b965050602061326a89828a016131f2565b955050608061327b89828a0161267e565b94505060a061328c89828a01612648565b93505060c087013567ffffffffffffffff8111156132ad576132ac6125fa565b5b6132b989828a01612b27565b92505060e06132ca89828a0161267e565b9150509295509295509295565b6132e081612851565b82525050565b60006020820190506132fb60008301846132d7565b92915050565b60008060006060848603121561331a576133196125f5565b5b600084013567ffffffffffffffff811115613338576133376125fa565b5b61334486828701612b27565b93505060206133558682870161267e565b92505060406133668682870161267e565b9150509250925092565b6000819050919050565b61338381613370565b811461338e57600080fd5b50565b6000813590506133a08161337a565b92915050565b600080600080608085870312156133c0576133bf6125f5565b5b600085013567ffffffffffffffff8111156133de576133dd6125fa565b5b6133ea878288016131d3565b94505060206133fb87828801612648565b935050604061340c87828801613391565b925050606061341d87828801613391565b91505092959194509250565b600060a0828403121561343f5761343e6131ce565b5b81905092915050565b6000806040838503121561345f5761345e6125f5565b5b600083013567ffffffffffffffff81111561347d5761347c6125fa565b5b61348985828601612b27565b925050602083013567ffffffffffffffff8111156134aa576134a96125fa565b5b6134b685828601613429565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061016083016000830151848203600086015261350a8282612818565b915050602083015184820360208601526135248282612818565b9150506040830151613539604086018261285d565b50606083015161354c60608601826128d4565b50608083015161355f60808601826128e3565b5060a083015161357260a08601826128e3565b5060c083015184820360c086015261358a8282612818565b91505060e083015161359f60e08601826128f2565b506101008301516135b46101008601826128f2565b506101208301516135c96101208601826128e3565b506101408301516135de6101408601826128e3565b508091505092915050565b60006135f583836134ec565b905092915050565b6000602082019050919050565b6000613615826134c0565b61361f81856134cb565b935083602082028501613631856134dc565b8060005b8581101561366d578484038952815161364e85826135e9565b9450613659836135fd565b925060208a01995050600181019050613635565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b60006136a68261367f565b6136b0818561368a565b93506136c08185602086016126ef565b6136c981612719565b840191505092915050565b600060408301600083015184820360008601526136f1828261369b565b91505060208301516137066020860182612e3f565b508091505092915050565b6000604082019050818103600083015261372b818561360a565b9050818103602083015261373f81846136d4565b90509392505050565b600080600060608486031215613761576137606125f5565b5b600084013567ffffffffffffffff81111561377f5761377e6125fa565b5b61378b86828701612b27565b935050602084013567ffffffffffffffff8111156137ac576137ab6125fa565b5b6137b886828701612b27565b92505060406137c98682870161267e565b9150509250925092565b600080fd5b600080fd5b600067ffffffffffffffff8211156137f8576137f7612a2a565b5b61380182612719565b9050602081019050919050565b600061382161381c846137dd565b612a8a565b90508281526020810184848401111561383d5761383c612a25565b5b613848848285612ad6565b509392505050565b600082601f83011261386557613864612a20565b5b813561387584826020860161380e565b91505092915050565b61388781612e2b565b811461389257600080fd5b50565b6000813590506138a48161387e565b92915050565b6138b381612851565b81146138be57600080fd5b50565b6000813590506138d0816138aa565b92915050565b600060a082840312156138ec576138eb6137d3565b5b6138f660a0612a8a565b9050600082013567ffffffffffffffff811115613916576139156137d8565b5b61392284828501613850565b600083015250602061393684828501613895565b602083015250604061394a84828501613895565b604083015250606061395e848285016138c1565b6060830152506080613972848285016138c1565b60808301525092915050565b60008060008060808587031215613998576139976125f5565b5b60006139a687828801612648565b945050602085013567ffffffffffffffff8111156139c7576139c66125fa565b5b6139d387828801612b27565b935050604085013567ffffffffffffffff8111156139f4576139f36125fa565b5b613a0087828801612b27565b925050606085013567ffffffffffffffff811115613a2157613a206125fa565b5b613a2d878288016138d6565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006080830160008301518482036000860152613a828282612818565b91505060208301518482036020860152613a9c8282612818565b91505060408301518482036040860152613ab68282612818565b91505060608301518482036060860152613ad082826130bb565b9150508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60a082016000820151613b1f6000850182613041565b506020820151613b3260808501826128e3565b50505050565b6000613b448383613b09565b60a08301905092915050565b6000602082019050919050565b6000613b6882613add565b613b728185613ae8565b9350613b7d83613af9565b8060005b83811015613bae578151613b958882613b38565b9750613ba083613b50565b925050600181019050613b81565b5085935050505092915050565b60006040830160008301518482036000860152613bd88282613a65565b91505060208301518482036020860152613bf28282613b5d565b9150508091505092915050565b6000613c0b8383613bbb565b905092915050565b6000602082019050919050565b6000613c2b82613a39565b613c358185613a44565b935083602082028501613c4785613a55565b8060005b85811015613c835784840389528151613c648582613bff565b9450613c6f83613c13565b925060208a01995050600181019050613c4b565b50829750879550505050505092915050565b60006040820190508181036000830152613caf8185613c20565b90508181036020830152613cc381846136d4565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d1357607f821691505b602082108103613d2657613d25613ccc565b5b50919050565b613d358161261f565b82525050565b6000602082019050613d506000830184613d2c565b92915050565b6000613d69613d6484612aa5565b612a8a565b905082815260208101848484011115613d8557613d84612a25565b5b613d908482856126ef565b509392505050565b600082601f830112613dad57613dac612a20565b5b8151613dbd848260208601613d56565b91505092915050565b600081519050613dd5816138aa565b92915050565b60048110613de857600080fd5b50565b600081519050613dfa81613ddb565b92915050565b600081519050613e0f81612667565b92915050565b613e1e81612772565b8114613e2957600080fd5b50565b600081519050613e3b81613e15565b92915050565b60006101608284031215613e5857613e576137d3565b5b613e63610160612a8a565b9050600082015167ffffffffffffffff811115613e8357613e826137d8565b5b613e8f84828501613d98565b600083015250602082015167ffffffffffffffff811115613eb357613eb26137d8565b5b613ebf84828501613d98565b6020830152506040613ed384828501613dc6565b6040830152506060613ee784828501613deb565b6060830152506080613efb84828501613e00565b60808301525060a0613f0f84828501613e00565b60a08301525060c082015167ffffffffffffffff811115613f3357613f326137d8565b5b613f3f84828501613d98565b60c08301525060e0613f5384828501613e2c565b60e083015250610100613f6884828501613e2c565b61010083015250610120613f7e84828501613e00565b61012083015250610140613f9484828501613e00565b6101408301525092915050565b600060208284031215613fb757613fb66125f5565b5b600082015167ffffffffffffffff811115613fd557613fd46125fa565b5b613fe184828501613e41565b91505092915050565b6000604082019050613fff6000830185613d2c565b8181036020830152614011818461272a565b90509392505050565b600081905092915050565b6000614030826126d3565b61403a818561401a565b935061404a8185602086016126ef565b80840191505092915050565b60006140628284614025565b915081905092915050565b7f64656c656761746563616c6c0000000000000000000000000000000000000000600082015250565b60006140a3600c8361401a565b91506140ae8261406d565b600c82019050919050565b60006140c482614096565b9150819050919050565b600081905092915050565b60006140e48261367f565b6140ee81856140ce565b93506140fe8185602086016126ef565b80840191505092915050565b600061411682846140d9565b915081905092915050565b7f6661696c65642064656c656761746563616c6c20746f20707265636f6d70696c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061417d6021836126de565b915061418882614121565b604082019050919050565b600060208201905081810360008301526141ac81614170565b9050919050565b6000604082840312156141c9576141c86137d3565b5b6141d36040612a8a565b9050600082015167ffffffffffffffff8111156141f3576141f26137d8565b5b6141ff84828501613d98565b600083015250602061421384828501613e00565b60208301525092915050565b60008060408385031215614236576142356125f5565b5b600061424485828601613e00565b925050602083015167ffffffffffffffff811115614265576142646125fa565b5b614271858286016141b3565b9150509250929050565b7f73746174696363616c6c00000000000000000000000000000000000000000000600082015250565b60006142b1600a8361401a565b91506142bc8261427b565b600a82019050919050565b60006142d2826142a4565b9150819050919050565b7f6661696c65642073746174696363616c6c20746f20707265636f6d70696c6500600082015250565b6000614312601f836126de565b915061431d826142dc565b602082019050919050565b6000602082019050818103600083015261434181614305565b9050919050565b7f63616c6c00000000000000000000000000000000000000000000000000000000600082015250565b600061437e60048361401a565b915061438982614348565b600482019050919050565b600061439f82614371565b9150819050919050565b7f6661696c65642063616c6c20746f20707265636f6d70696c6500000000000000600082015250565b60006143df6019836126de565b91506143ea826143a9565b602082019050919050565b6000602082019050818103600083015261440e816143d2565b9050919050565b7f63616c6c636f6465000000000000000000000000000000000000000000000000600082015250565b600061444b60088361401a565b915061445682614415565b600882019050919050565b600061446c8261443e565b9150819050919050565b7f696e76616c69642063616c6c7479706500000000000000000000000000000000600082015250565b60006144ac6010836126de565b91506144b782614476565b602082019050919050565b600060208201905081810360008301526144db8161449f565b9050919050565b60006060820190506144f76000830186613d2c565b8181036020830152614509818561272a565b90506145186040830184612763565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455a8261265d565b91506145658361265d565b925082820190508082111561457d5761457c614520565b5b92915050565b600060208284031215614599576145986125f5565b5b60006145a784828501613e2c565b91505092915050565b7f4661696c656420746f20756e64656c6567617465000000000000000000000000600082015250565b60006145e66014836126de565b91506145f1826145b0565b602082019050919050565b60006020820190508181036000830152614615816145d9565b9050919050565b60006040820190506146316000830185613d2c565b61463e6020830184612763565b9392505050565b7f7472616e73666572206661696c65640000000000000000000000000000000000600082015250565b600061467b600f836126de565b915061468682614645565b602082019050919050565b600060208201905081810360008301526146aa8161466e565b9050919050565b6000602082840312156146c7576146c66125f5565b5b60006146d584828501613dc6565b91505092915050565b7f64656c6567617465206661696c65640000000000000000000000000000000000600082015250565b6000614714600f836126de565b915061471f826146de565b602082019050919050565b6000602082019050818103600083015261474381614707565b9050919050565b600067ffffffffffffffff82111561476557614764612a2a565b5b602082029050602081019050919050565b600080fd5b60008151905061478a8161387e565b92915050565b600060c082840312156147a6576147a56137d3565b5b6147b060c0612a8a565b905060006147c084828501613e2c565b60008301525060206147d484828501613e2c565b60208301525060406147e884828501613e00565b60408301525060606147fc84828501613e00565b60608301525060806148108482850161477b565b60808301525060a061482484828501613e2c565b60a08301525092915050565b600061484361483e8461474a565b612a8a565b90508083825260208201905060c0840283018581111561486657614865614776565b5b835b8181101561488f578061487b8882614790565b84526020840193505060c081019050614868565b5050509392505050565b600082601f8301126148ae576148ad612a20565b5b81516148be848260208601614830565b91505092915050565b6000606082840312156148dd576148dc6137d3565b5b6148e76060612a8a565b9050600082015167ffffffffffffffff811115614907576149066137d8565b5b61491384828501613d98565b600083015250602082015167ffffffffffffffff811115614937576149366137d8565b5b61494384828501613d98565b602083015250604082015167ffffffffffffffff811115614967576149666137d8565b5b61497384828501614899565b60408301525092915050565b600060208284031215614995576149946125f5565b5b600082015167ffffffffffffffff8111156149b3576149b26125fa565b5b6149bf848285016148c7565b91505092915050565b60006060820190506149dd6000830186613d2c565b81810360208301526149ef818561272a565b90508181036040830152614a03818461272a565b9050949350505050565b600067ffffffffffffffff821115614a2857614a27612a2a565b5b602082029050602081019050919050565b600060808284031215614a4f57614a4e6137d3565b5b614a596080612a8a565b90506000614a6984828501613e2c565b6000830152506020614a7d84828501613e2c565b6020830152506040614a9184828501613e00565b6040830152506060614aa584828501613e00565b60608301525092915050565b6000614ac4614abf84614a0d565b612a8a565b90508083825260208201905060808402830185811115614ae757614ae6614776565b5b835b81811015614b105780614afc8882614a39565b845260208401935050608081019050614ae9565b5050509392505050565b600082601f830112614b2f57614b2e612a20565b5b8151614b3f848260208601614ab1565b91505092915050565b600060808284031215614b5e57614b5d6137d3565b5b614b686080612a8a565b9050600082015167ffffffffffffffff811115614b8857614b876137d8565b5b614b9484828501613d98565b600083015250602082015167ffffffffffffffff811115614bb857614bb76137d8565b5b614bc484828501613d98565b602083015250604082015167ffffffffffffffff811115614be857614be76137d8565b5b614bf484828501613d98565b604083015250606082015167ffffffffffffffff811115614c1857614c176137d8565b5b614c2484828501614b1a565b60608301525092915050565b600060208284031215614c4657614c456125f5565b5b600082015167ffffffffffffffff811115614c6457614c636125fa565b5b614c7084828501614b48565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112614ca557614ca4614c83565b5b83810192508235915060208301925067ffffffffffffffff821115614ccd57614ccc614c79565b5b600182023603831315614ce357614ce2614c7e565b5b509250929050565b6000614cf78385612807565b9350614d04838584612ad6565b614d0d83612719565b840190509392505050565b600060a08301614d2b6000840184614c88565b8583036000870152614d3e838284614ceb565b92505050614d4f6020840184614c88565b8583036020870152614d62838284614ceb565b92505050614d736040840184614c88565b8583036040870152614d86838284614ceb565b92505050614d976060840184614c88565b8583036060870152614daa838284614ceb565b92505050614dbb6080840184614c88565b8583036080870152614dce838284614ceb565b925050508091505092915050565b6000614deb602084018461267e565b905092915050565b60608201614e046000830183614ddc565b614e1160008501826128e3565b50614e1f6020830183614ddc565b614e2c60208501826128e3565b50614e3a6040830183614ddc565b614e4760408501826128e3565b50505050565b6000610100820190508181036000830152614e688189614d18565b9050614e776020830188614df3565b614e846080830187612763565b614e9160a0830186613d2c565b81810360c0830152614ea3818561272a565b9050614eb260e0830184612763565b979650505050505050565b6000608082019050614ed26000830187613d2c565b8181036020830152614ee4818661272a565b9050614ef36040830185612763565b614f006060830184612763565b95945050505050565b7f4661696c656420746f2063616e63656c20756e626f6e64696e67000000000000600082015250565b6000614f3f601a836126de565b9150614f4a82614f09565b602082019050919050565b60006020820190508181036000830152614f6e81614f32565b9050919050565b614f7e81613370565b82525050565b60006080820190508181036000830152614f9e8187614d18565b9050614fad6020830186613d2c565b614fba6040830185614f75565b614fc76060830184614f75565b95945050505050565b60008083356001602003843603038112614fed57614fec614c83565b5b83810192508235915060208301925067ffffffffffffffff82111561501557615014614c79565b5b60018202360383131561502b5761502a614c7e565b5b509250929050565b600061503f838561368a565b935061504c838584612ad6565b61505583612719565b840190509392505050565b600061506f6020840184613895565b905092915050565b600061508660208401846138c1565b905092915050565b600060a083016150a16000840184614fd0565b85830360008701526150b4838284615033565b925050506150c56020840184615060565b6150d26020860182612e3f565b506150e06040840184615060565b6150ed6040860182612e3f565b506150fb6060840184615077565b615108606086018261285d565b506151166080840184615077565b615123608086018261285d565b508091505092915050565b60006040820190508181036000830152615148818561272a565b9050818103602083015261515c818461508e565b90509392505050565b600067ffffffffffffffff8211156151805761517f612a2a565b5b602082029050602081019050919050565b60006151a461519f84615165565b612a8a565b905080838252602082019050602084028301858111156151c7576151c6614776565b5b835b8181101561520e57805167ffffffffffffffff8111156151ec576151eb612a20565b5b8086016151f98982613e41565b855260208501945050506020810190506151c9565b5050509392505050565b600082601f83011261522d5761522c612a20565b5b815161523d848260208601615191565b91505092915050565b6000615259615254846137dd565b612a8a565b90508281526020810184848401111561527557615274612a25565b5b6152808482856126ef565b509392505050565b600082601f83011261529d5761529c612a20565b5b81516152ad848260208601615246565b91505092915050565b6000604082840312156152cc576152cb6137d3565b5b6152d66040612a8a565b9050600082015167ffffffffffffffff8111156152f6576152f56137d8565b5b61530284828501615288565b60008301525060206153168482850161477b565b60208301525092915050565b60008060408385031215615339576153386125f5565b5b600083015167ffffffffffffffff811115615357576153566125fa565b5b61536385828601615218565b925050602083015167ffffffffffffffff811115615384576153836125fa565b5b615390858286016152b6565b9150509250929050565b60006080820190506153af6000830187613d2c565b81810360208301526153c1818661272a565b905081810360408301526153d5818561272a565b90506153e46060830184612763565b95945050505050565b7f4661696c656420746f20726564656c6567617465000000000000000000000000600082015250565b60006154236014836126de565b915061542e826153ed565b602082019050919050565b6000602082019050818103600083015261545281615416565b9050919050565b600060a0830160008301518482036000860152615476828261369b565b915050602083015161548b6020860182612e3f565b50604083015161549e6040860182612e3f565b5060608301516154b1606086018261285d565b5060808301516154c4608086018261285d565b508091505092915050565b60006080820190506154e46000830187613d2c565b81810360208301526154f6818661272a565b9050818103604083015261550a818561272a565b9050818103606083015261551e8184615459565b905095945050505050565b600067ffffffffffffffff82111561554457615543612a2a565b5b602082029050602081019050919050565b60006080828403121561556b5761556a6137d3565b5b6155756080612a8a565b9050600082015167ffffffffffffffff811115615595576155946137d8565b5b6155a184828501613d98565b600083015250602082015167ffffffffffffffff8111156155c5576155c46137d8565b5b6155d184828501613d98565b602083015250604082015167ffffffffffffffff8111156155f5576155f46137d8565b5b61560184828501613d98565b604083015250606082015167ffffffffffffffff811115615625576156246137d8565b5b61563184828501614b1a565b60608301525092915050565b600067ffffffffffffffff82111561565857615657612a2a565b5b602082029050602081019050919050565b600060a0828403121561567f5761567e6137d3565b5b6156896040612a8a565b9050600061569984828501614a39565b60008301525060806156ad84828501613e00565b60208301525092915050565b60006156cc6156c78461563d565b612a8a565b90508083825260208201905060a084028301858111156156ef576156ee614776565b5b835b8181101561571857806157048882615669565b84526020840193505060a0810190506156f1565b5050509392505050565b600082601f83011261573757615736612a20565b5b81516157478482602086016156b9565b91505092915050565b600060408284031215615766576157656137d3565b5b6157706040612a8a565b9050600082015167ffffffffffffffff8111156157905761578f6137d8565b5b61579c84828501615555565b600083015250602082015167ffffffffffffffff8111156157c0576157bf6137d8565b5b6157cc84828501615722565b60208301525092915050565b60006157eb6157e684615529565b612a8a565b9050808382526020820190506020840283018581111561580e5761580d614776565b5b835b8181101561585557805167ffffffffffffffff81111561583357615832612a20565b5b8086016158408982615750565b85526020850194505050602081019050615810565b5050509392505050565b600082601f83011261587457615873612a20565b5b81516158848482602086016157d8565b91505092915050565b600080604083850312156158a4576158a36125f5565b5b600083015167ffffffffffffffff8111156158c2576158c16125fa565b5b6158ce8582860161585f565b925050602083015167ffffffffffffffff8111156158ef576158ee6125fa565b5b6158fb858286016152b6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008190508160005260206000209050919050565b6000815461595681613cfb565b615960818661401a565b9450600182166000811461597b5760018114615990576159c3565b60ff19831686528115158202860193506159c3565b61599985615934565b60005b838110156159bb5781548189015260018201915060208101905061599c565b838801955050505b50505092915050565b60006159d88284615949565b915081905092915050565b60006159ee8261265d565b91506159f98361265d565b9250828203905081811115615a1157615a10614520565b5b92915050565b6000615a228261265d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615a5457615a53614520565b5b600182019050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302615aac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615a6f565b615ab68683615a6f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000615af3615aee615ae98461265d565b615ace565b61265d565b9050919050565b6000819050919050565b615b0d83615ad8565b615b21615b1982615afa565b848454615a7c565b825550505050565b600090565b615b36615b29565b615b41818484615b04565b505050565b5b81811015615b6557615b5a600082615b2e565b600181019050615b47565b5050565b601f821115615baa57615b7b81615934565b615b8484615a5f565b81016020851015615b93578190505b615ba7615b9f85615a5f565b830182615b46565b50505b505050565b600082821c905092915050565b6000615bcd60001984600802615baf565b1980831691505092915050565b6000615be68383615bbc565b9150826002028217905092915050565b615bff826126d3565b67ffffffffffffffff811115615c1857615c17612a2a565b5b615c228254613cfb565b615c2d828285615b69565b600060209050601f831160018114615c605760008415615c4e578287015190505b615c588582615bda565b865550615cc0565b601f198416615c6e86615934565b60005b82811015615c9657848901518255600182019150602085019450602081019050615c71565b86831015615cb35784890151615caf601f891682615bbc565b8355505b6001600288020188555050505b505050505050565b7f44656c65676174696f6e20646f6573206e6f74206578697374206f7220696e7360008201527f756666696369656e742064656c65676174696f6e20616d6f756e740000000000602082015250565b6000615d24603b836126de565b9150615d2f82615cc8565b604082019050919050565b60006020820190508181036000830152615d5381615d17565b9050919050565b7f556e626f6e64696e672064656c65676174696f6e20646f6573206e6f7420657860008201527f6973740000000000000000000000000000000000000000000000000000000000602082015250565b6000615db66023836126de565b9150615dc182615d5a565b604082019050919050565b60006020820190508181036000830152615de581615da9565b9050919050565b7f616d6f756e74206578636565647320756e626f6e64696e6720656e747279206160008201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b6000615e486025836126de565b9150615e5382615dec565b604082019050919050565b60006020820190508181036000830152615e7781615e3b565b9050919050565b7f496e73756666696369656e742064656c65676174696f6e20616d6f756e740000600082015250565b6000615eb4601e836126de565b9150615ebf82615e7e565b602082019050919050565b60006020820190508181036000830152615ee381615ea7565b905091905056fea264697066735822122016ac52a7cdeca18fc9a87a81c885e6b4008363e5480699fb78c4a77257b7a7e464736f6c634300081400332f636f736d6f732e7374616b696e672e763162657461312e4d736744656c6567617465", - "deployedBytecode": "0x60806040526004361061011f5760003560e01c806361bc221a116100a0578063b3e9823411610064578063b3e982341461040b578063b61b519714610434578063cf2753cf14610450578063ddbaf2c21461048e578063f732b065146104cb5761011f565b806361bc221a146102ff57806368ac3df31461032a578063a4603a2e14610367578063af9a90b214610390578063b13d4242146103cd5761011f565b806331bcbcb3116100e757806331bcbcb314610231578063455b85511461024d578063464d2d031461028a578063569c21e3146102a6578063570467ac146102c25761011f565b8063088b32b1146101245780631904bb2e1461016457806319b16c4c146101a15780632345e7d4146101df57806329e71c8214610208575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190612693565b610509565b60405161015b949392919061278e565b60405180910390f35b34801561017057600080fd5b5061018b600480360381019061018691906127da565b6105eb565b60405161019891906129fe565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612b55565b61067b565b6040516101d6929190612c1d565b60405180910390f35b3480156101eb57600080fd5b5061020660048036038101906102019190612c4d565b610b7a565b005b34801561021457600080fd5b5061022f600480360381019061022a9190612cd8565b610fdd565b005b61024b60048036038101906102469190612d34565b6110cb565b005b34801561025957600080fd5b50610274600480360381019061026f9190612da3565b6112e4565b6040516102819190612faa565b60405180910390f35b6102a4600480360381019061029f9190612fcc565b611377565b005b6102c060048036038101906102bb9190612fcc565b61149b565b005b3480156102ce57600080fd5b506102e960048036038101906102e49190612b55565b611578565b6040516102f69190613191565b60405180910390f35b34801561030b57600080fd5b5061031461160e565b60405161032191906131b3565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c9190613211565b611614565b60405161035e91906132e6565b60405180910390f35b34801561037357600080fd5b5061038e60048036038101906103899190613301565b6116aa565b005b34801561039c57600080fd5b506103b760048036038101906103b291906133a6565b611794565b6040516103c491906132e6565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613448565b611824565b604051610402929190613711565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d9190613748565b6118bc565b005b61044e60048036038101906104499190612fcc565b6119b0565b005b34801561045c57600080fd5b5061047760048036038101906104729190612da3565b611aa7565b604051610485929190612c1d565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b09190612da3565b611b3f565b6040516104c291906131b3565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed919061397e565b611b7a565b604051610500929190613c95565b60405180910390f35b6001602052816000526040600020818154811061052557600080fd5b90600052602060002090600402016000915091505080600001805461054990613cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461057590613cfb565b80156105c25780601f10610597576101008083540402835291602001916105c2565b820191906000526020600020905b8154815290600101906020018083116105a557829003601f168201915b5050505050908060010154908060020154908060030160009054906101000a900460070b905084565b6105f3612493565b61080073ffffffffffffffffffffffffffffffffffffffff1663223b3b7a836040518263ffffffff1660e01b815260040161062e9190613d3b565b600060405180830381865afa15801561064b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106749190613fa1565b9050919050565b6000610685612507565b60006108009050600086866040516024016106a1929190613fea565b6040516020818303038152906040527f241774e6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000856040516020016107339190614056565b60405160208183030381529060405280519060200120905060405160200161075a906140b9565b604051602081830303815290604052805190602001208103610846576000808473ffffffffffffffffffffffffffffffffffffffff168460405161079e919061410a565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b509150915081610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90614193565b60405180910390fd5b80806020019051810190610837919061421f565b80975081985050505050610b6f565b604051602001610855906142c7565b604051602081830303815290604052805190602001208103610941576000808473ffffffffffffffffffffffffffffffffffffffff1684604051610899919061410a565b600060405180830381855afa9150503d80600081146108d4576040519150601f19603f3d011682016040523d82523d6000602084013e6108d9565b606091505b50915091508161091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091590614328565b60405180910390fd5b80806020019051810190610932919061421f565b80975081985050505050610b6e565b60405160200161095090614394565b604051602081830303815290604052805190602001208103610a3e576000808473ffffffffffffffffffffffffffffffffffffffff1684604051610994919061410a565b6000604051808303816000865af19150503d80600081146109d1576040519150601f19603f3d011682016040523d82523d6000602084013e6109d6565b606091505b509150915081610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a12906143f5565b60405180910390fd5b80806020019051810190610a2f919061421f565b80975081985050505050610b6d565b604051602001610a4d90614461565b604051602081830303815290604052805190602001208103610b315760006040518060400160405280601a81526020017f64656c65676174696f6e28616464726573732c737472696e6729000000000000815250805190602001209050600060a490506060600060208b01516020808d0101516040518681528e6004820152604060248201526033604482015282606482015281608482015260c081878360008e5af281519c5060608201519450610100820160405280610b0d57600080fd5b50505050604051806040016040528083815260200182815250975050505050610b6c565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b63906144c2565b60405180910390fd5b5b5b5b505050935093915050565b610b82611c18565b600061080090506000308585604051602401610ba0939291906144e2565b6040516020818303038152906040527f3edab33c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600083604051602001610c329190614056565b6040516020818303038152906040528051906020012090506000621baf8042610c5b919061454f565b9050604051602001610c6c906140b9565b604051602081830303815290604052805190602001208203610d52576000808573ffffffffffffffffffffffffffffffffffffffff1685604051610cb0919061410a565b600060405180830381855af49150503d8060008114610ceb576040519150601f19603f3d011682016040523d82523d6000602084013e610cf0565b606091505b509150915081610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90614193565b60405180910390fd5b80806020019051810190610d499190614583565b92505050610fc9565b604051602001610d61906142c7565b604051602081830303815290604052805190602001208203610e47576000808573ffffffffffffffffffffffffffffffffffffffff1685604051610da5919061410a565b600060405180830381855afa9150503d8060008114610de0576040519150601f19603f3d011682016040523d82523d6000602084013e610de5565b606091505b509150915081610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190614328565b60405180910390fd5b80806020019051810190610e3e9190614583565b92505050610fc8565b604051602001610e5690614394565b604051602081830303815290604052805190602001208203610f3e576000808573ffffffffffffffffffffffffffffffffffffffff1685604051610e9a919061410a565b6000604051808303816000865af19150503d8060008114610ed7576040519150601f19603f3d011682016040523d82523d6000602084013e610edc565b606091505b509150915081610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f18906143f5565b60405180910390fd5b80806020019051810190610f359190614583565b92505050610fc7565b604051602001610f4d90614461565b604051602081830303815290604052805190602001208203610f8b57602083018351600080828460008a5af280610f8357600080fd5b505050610fc6565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906144c2565b60405180910390fd5b5b5b5b610fd4878783611e10565b50505050505050565b610fe78282611eff565b610fef611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff16633edab33c3085856040518463ffffffff1660e01b8152600401611030939291906144e2565b6020604051808303816000875af115801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190614583565b905060008160070b136110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b2906145fc565b60405180910390fd5b6110c6838383611e10565b505050565b6110d3611c18565b60008373ffffffffffffffffffffffffffffffffffffffff1633836040516024016110ff92919061461c565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611189919061410a565b6000604051808303816000865af19150503d80600081146111c6576040519150601f19603f3d011682016040523d82523d6000602084013e6111cb565b606091505b505090508061120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690614691565b60405180910390fd5b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3085346040518463ffffffff1660e01b815260040161124e939291906144e2565b6020604051808303816000875af115801561126d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129191906146b1565b9050806112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca9061472a565b60405180910390fd5b6112de338434611fa0565b50505050565b6112ec612521565b61080073ffffffffffffffffffffffffffffffffffffffff1663a03ffee184846040518363ffffffff1660e01b8152600401611329929190613fea565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061136f919061497f565b905092915050565b61137f611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084346040518463ffffffff1660e01b81526004016113c0939291906144e2565b6020604051808303816000875af11580156113df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140391906146b1565b905080611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c9061472a565b60405180910390fd5b611450338334611fa0565b3373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611496573d6000803e3d6000fd5b505050565b6114a3611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084346040518463ffffffff1660e01b81526004016114e4939291906144e2565b6020604051808303816000875af1158015611503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152791906146b1565b905080611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115609061472a565b60405180910390fd5b611574338334611fa0565b5050565b611580612542565b61080073ffffffffffffffffffffffffffffffffffffffff16637d9f939c8585856040518463ffffffff1660e01b81526004016115bf939291906149c8565b600060405180830381865afa1580156115dc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906116059190614c30565b90509392505050565b60025481565b600061080073ffffffffffffffffffffffffffffffffffffffff1663f7cd55168888888888886040518763ffffffff1660e01b815260040161165b96959493929190614e4d565b6020604051808303816000875af115801561167a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169e91906146b1565b90509695505050505050565b6116b2611c18565b6116bc3384612016565b600061080073ffffffffffffffffffffffffffffffffffffffff166312d58dfe308686866040518563ffffffff1660e01b81526004016116ff9493929190614ebd565b6020604051808303816000875af115801561171e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174291906146b1565b905080611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b90614f55565b60405180910390fd5b61178e82846121f0565b50505050565b600061080073ffffffffffffffffffffffffffffffffffffffff1663a50f05ac868686866040518563ffffffff1660e01b81526004016117d79493929190614f84565b6020604051808303816000875af11580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a91906146b1565b9050949350505050565b606061182e61256a565b61080073ffffffffffffffffffffffffffffffffffffffff1663186b216785856040518363ffffffff1660e01b815260040161186b92919061512e565b600060405180830381865afa158015611888573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906118b19190615322565b915091509250929050565b6118c68382611eff565b600061080073ffffffffffffffffffffffffffffffffffffffff166354b826f5308686866040518563ffffffff1660e01b8152600401611909949392919061539a565b6020604051808303816000875af1158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190614583565b905060008160070b13611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b90615439565b60405180910390fd5b61199f338584612365565b6119aa338484611fa0565b50505050565b6119b8611c18565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084346040518463ffffffff1660e01b81526004016119f9939291906144e2565b6020604051808303816000875af1158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c91906146b1565b905080611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a759061472a565b60405180910390fd5b611a89338334611fa0565b600160026000828254611a9c919061454f565b925050819055505050565b6000611ab1612507565b61080073ffffffffffffffffffffffffffffffffffffffff1663241774e685856040518363ffffffff1660e01b8152600401611aee929190613fea565b600060405180830381865afa158015611b0b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b34919061421f565b915091509250929050565b600060205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b6060611b8461256a565b61080073ffffffffffffffffffffffffffffffffffffffff166310a2851c878787876040518563ffffffff1660e01b8152600401611bc594939291906154cf565b600060405180830381865afa158015611be2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c0b919061588d565b9150915094509492505050565b60005b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611e0d576000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611cb857611cb7615905565b5b90600052602060002090600402019050428160030160009054906101000a900460070b60070b11611df957600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611d3457611d33615905565b5b906000526020600020906004020160008082016000611d53919061258e565b600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff0219169055505080600101546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082600001604051611dd491906159cc565b90815260200160405180910390206000828254611df191906159e3565b925050819055505b508080611e0590615a17565b915050611c1b565b50565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052808581526020018481526020014381526020018360070b81525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081611eb19190615bf6565b50602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505050505050565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051611f4c9190614056565b9081526020016040518091039020541015611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390615d3a565b60405180910390fd5b5050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051611fed9190614056565b9081526020016040518091039020600082825461200a919061454f565b92505081905550505050565b600080600090505b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156121a3576000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106120bb576120ba615905565b5b906000526020600020906004020190506121618160000180546120dd90613cfb565b80601f016020809104026020016040519081016040528092919081815260200182805461210990613cfb565b80156121565780601f1061212b57610100808354040283529160200191612156565b820191906000526020600020905b81548152906001019060200180831161213957829003601f168201915b505050505085612478565b80156121805750428160030160009054906101000a900460070b60070b115b1561218f5760019250506121a3565b50808061219b90615a17565b91505061201e565b5060011515811515146121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e290615dcc565b60405180910390fd5b505050565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b818054905081101561235f57600082828154811061225757612256615905565b5b9060005260206000209060040201905084816002015414612278575061234c565b83816001015410156122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690615e5e565b60405180910390fd5b838160010160008282546122d391906159e3565b925050819055506000816001015403612346578282815481106122f9576122f8615905565b5b906000526020600020906004020160008082016000612318919061258e565b600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff021916905550505b5061235f565b808061235790615a17565b915050612236565b50505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020836040516123b29190614056565b9081526020016040518091039020541015612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990615eca565b60405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360405161244f9190614056565b9081526020016040518091039020600082825461246c91906159e3565b92505081905550505050565b60008180519060200120838051906020012014905092915050565b6040518061016001604052806060815260200160608152602001600015158152602001600060038111156124ca576124c961286c565b5b8152602001600081526020016000815260200160608152602001600060070b8152602001600060070b815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001606081525090565b6040518060800160405280606081526020016060815260200160608152602001606081525090565b604051806040016040528060608152602001600067ffffffffffffffff1681525090565b50805461259a90613cfb565b6000825580601f106125ac57506125cb565b601f0160209004906000526020600020908101906125ca91906125ce565b5b50565b5b808211156125e75760008160009055506001016125cf565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061262a826125ff565b9050919050565b61263a8161261f565b811461264557600080fd5b50565b60008135905061265781612631565b92915050565b6000819050919050565b6126708161265d565b811461267b57600080fd5b50565b60008135905061268d81612667565b92915050565b600080604083850312156126aa576126a96125f5565b5b60006126b885828601612648565b92505060206126c98582860161267e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561270d5780820151818401526020810190506126f2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612735826126d3565b61273f81856126de565b935061274f8185602086016126ef565b61275881612719565b840191505092915050565b61276c8161265d565b82525050565b60008160070b9050919050565b61278881612772565b82525050565b600060808201905081810360008301526127a8818761272a565b90506127b76020830186612763565b6127c46040830185612763565b6127d1606083018461277f565b95945050505050565b6000602082840312156127f0576127ef6125f5565b5b60006127fe84828501612648565b91505092915050565b600082825260208201905092915050565b6000612823826126d3565b61282d8185612807565b935061283d8185602086016126ef565b61284681612719565b840191505092915050565b60008115159050919050565b61286681612851565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106128ac576128ab61286c565b5b50565b60008190506128bd8261289b565b919050565b60006128cd826128af565b9050919050565b6128dd816128c2565b82525050565b6128ec8161265d565b82525050565b6128fb81612772565b82525050565b600061016083016000830151848203600086015261291f8282612818565b915050602083015184820360208601526129398282612818565b915050604083015161294e604086018261285d565b50606083015161296160608601826128d4565b50608083015161297460808601826128e3565b5060a083015161298760a08601826128e3565b5060c083015184820360c086015261299f8282612818565b91505060e08301516129b460e08601826128f2565b506101008301516129c96101008601826128f2565b506101208301516129de6101208601826128e3565b506101408301516129f36101408601826128e3565b508091505092915050565b60006020820190508181036000830152612a188184612901565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a6282612719565b810181811067ffffffffffffffff82111715612a8157612a80612a2a565b5b80604052505050565b6000612a946125eb565b9050612aa08282612a59565b919050565b600067ffffffffffffffff821115612ac057612abf612a2a565b5b612ac982612719565b9050602081019050919050565b82818337600083830152505050565b6000612af8612af384612aa5565b612a8a565b905082815260208101848484011115612b1457612b13612a25565b5b612b1f848285612ad6565b509392505050565b600082601f830112612b3c57612b3b612a20565b5b8135612b4c848260208601612ae5565b91505092915050565b600080600060608486031215612b6e57612b6d6125f5565b5b6000612b7c86828701612648565b935050602084013567ffffffffffffffff811115612b9d57612b9c6125fa565b5b612ba986828701612b27565b925050604084013567ffffffffffffffff811115612bca57612bc96125fa565b5b612bd686828701612b27565b9150509250925092565b60006040830160008301518482036000860152612bfd8282612818565b9150506020830151612c1260208601826128e3565b508091505092915050565b6000604082019050612c326000830185612763565b8181036020830152612c448184612be0565b90509392505050565b600080600060608486031215612c6657612c656125f5565b5b600084013567ffffffffffffffff811115612c8457612c836125fa565b5b612c9086828701612b27565b9350506020612ca18682870161267e565b925050604084013567ffffffffffffffff811115612cc257612cc16125fa565b5b612cce86828701612b27565b9150509250925092565b60008060408385031215612cef57612cee6125f5565b5b600083013567ffffffffffffffff811115612d0d57612d0c6125fa565b5b612d1985828601612b27565b9250506020612d2a8582860161267e565b9150509250929050565b600080600060608486031215612d4d57612d4c6125f5565b5b6000612d5b86828701612648565b935050602084013567ffffffffffffffff811115612d7c57612d7b6125fa565b5b612d8886828701612b27565b9250506040612d998682870161267e565b9150509250925092565b60008060408385031215612dba57612db96125f5565b5b6000612dc885828601612648565b925050602083013567ffffffffffffffff811115612de957612de86125fa565b5b612df585828601612b27565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600067ffffffffffffffff82169050919050565b612e4881612e2b565b82525050565b60c082016000820151612e6460008501826128f2565b506020820151612e7760208501826128f2565b506040820151612e8a60408501826128e3565b506060820151612e9d60608501826128e3565b506080820151612eb06080850182612e3f565b5060a0820151612ec360a08501826128f2565b50505050565b6000612ed58383612e4e565b60c08301905092915050565b6000602082019050919050565b6000612ef982612dff565b612f038185612e0a565b9350612f0e83612e1b565b8060005b83811015612f3f578151612f268882612ec9565b9750612f3183612ee1565b925050600181019050612f12565b5085935050505092915050565b60006060830160008301518482036000860152612f698282612818565b91505060208301518482036020860152612f838282612818565b91505060408301518482036040860152612f9d8282612eee565b9150508091505092915050565b60006020820190508181036000830152612fc48184612f4c565b905092915050565b600060208284031215612fe257612fe16125f5565b5b600082013567ffffffffffffffff81111561300057612fff6125fa565b5b61300c84828501612b27565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60808201600082015161305760008501826128f2565b50602082015161306a60208501826128f2565b50604082015161307d60408501826128e3565b50606082015161309060608501826128e3565b50505050565b60006130a28383613041565b60808301905092915050565b6000602082019050919050565b60006130c682613015565b6130d08185613020565b93506130db83613031565b8060005b8381101561310c5781516130f38882613096565b97506130fe836130ae565b9250506001810190506130df565b5085935050505092915050565b600060808301600083015184820360008601526131368282612818565b915050602083015184820360208601526131508282612818565b9150506040830151848203604086015261316a8282612818565b9150506060830151848203606086015261318482826130bb565b9150508091505092915050565b600060208201905081810360008301526131ab8184613119565b905092915050565b60006020820190506131c86000830184612763565b92915050565b600080fd5b600060a082840312156131e9576131e86131ce565b5b81905092915050565b600060608284031215613208576132076131ce565b5b81905092915050565b600080600080600080610100878903121561322f5761322e6125f5565b5b600087013567ffffffffffffffff81111561324d5761324c6125fa565b5b61325989828a016131d3565b965050602061326a89828a016131f2565b955050608061327b89828a0161267e565b94505060a061328c89828a01612648565b93505060c087013567ffffffffffffffff8111156132ad576132ac6125fa565b5b6132b989828a01612b27565b92505060e06132ca89828a0161267e565b9150509295509295509295565b6132e081612851565b82525050565b60006020820190506132fb60008301846132d7565b92915050565b60008060006060848603121561331a576133196125f5565b5b600084013567ffffffffffffffff811115613338576133376125fa565b5b61334486828701612b27565b93505060206133558682870161267e565b92505060406133668682870161267e565b9150509250925092565b6000819050919050565b61338381613370565b811461338e57600080fd5b50565b6000813590506133a08161337a565b92915050565b600080600080608085870312156133c0576133bf6125f5565b5b600085013567ffffffffffffffff8111156133de576133dd6125fa565b5b6133ea878288016131d3565b94505060206133fb87828801612648565b935050604061340c87828801613391565b925050606061341d87828801613391565b91505092959194509250565b600060a0828403121561343f5761343e6131ce565b5b81905092915050565b6000806040838503121561345f5761345e6125f5565b5b600083013567ffffffffffffffff81111561347d5761347c6125fa565b5b61348985828601612b27565b925050602083013567ffffffffffffffff8111156134aa576134a96125fa565b5b6134b685828601613429565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061016083016000830151848203600086015261350a8282612818565b915050602083015184820360208601526135248282612818565b9150506040830151613539604086018261285d565b50606083015161354c60608601826128d4565b50608083015161355f60808601826128e3565b5060a083015161357260a08601826128e3565b5060c083015184820360c086015261358a8282612818565b91505060e083015161359f60e08601826128f2565b506101008301516135b46101008601826128f2565b506101208301516135c96101208601826128e3565b506101408301516135de6101408601826128e3565b508091505092915050565b60006135f583836134ec565b905092915050565b6000602082019050919050565b6000613615826134c0565b61361f81856134cb565b935083602082028501613631856134dc565b8060005b8581101561366d578484038952815161364e85826135e9565b9450613659836135fd565b925060208a01995050600181019050613635565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b60006136a68261367f565b6136b0818561368a565b93506136c08185602086016126ef565b6136c981612719565b840191505092915050565b600060408301600083015184820360008601526136f1828261369b565b91505060208301516137066020860182612e3f565b508091505092915050565b6000604082019050818103600083015261372b818561360a565b9050818103602083015261373f81846136d4565b90509392505050565b600080600060608486031215613761576137606125f5565b5b600084013567ffffffffffffffff81111561377f5761377e6125fa565b5b61378b86828701612b27565b935050602084013567ffffffffffffffff8111156137ac576137ab6125fa565b5b6137b886828701612b27565b92505060406137c98682870161267e565b9150509250925092565b600080fd5b600080fd5b600067ffffffffffffffff8211156137f8576137f7612a2a565b5b61380182612719565b9050602081019050919050565b600061382161381c846137dd565b612a8a565b90508281526020810184848401111561383d5761383c612a25565b5b613848848285612ad6565b509392505050565b600082601f83011261386557613864612a20565b5b813561387584826020860161380e565b91505092915050565b61388781612e2b565b811461389257600080fd5b50565b6000813590506138a48161387e565b92915050565b6138b381612851565b81146138be57600080fd5b50565b6000813590506138d0816138aa565b92915050565b600060a082840312156138ec576138eb6137d3565b5b6138f660a0612a8a565b9050600082013567ffffffffffffffff811115613916576139156137d8565b5b61392284828501613850565b600083015250602061393684828501613895565b602083015250604061394a84828501613895565b604083015250606061395e848285016138c1565b6060830152506080613972848285016138c1565b60808301525092915050565b60008060008060808587031215613998576139976125f5565b5b60006139a687828801612648565b945050602085013567ffffffffffffffff8111156139c7576139c66125fa565b5b6139d387828801612b27565b935050604085013567ffffffffffffffff8111156139f4576139f36125fa565b5b613a0087828801612b27565b925050606085013567ffffffffffffffff811115613a2157613a206125fa565b5b613a2d878288016138d6565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006080830160008301518482036000860152613a828282612818565b91505060208301518482036020860152613a9c8282612818565b91505060408301518482036040860152613ab68282612818565b91505060608301518482036060860152613ad082826130bb565b9150508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60a082016000820151613b1f6000850182613041565b506020820151613b3260808501826128e3565b50505050565b6000613b448383613b09565b60a08301905092915050565b6000602082019050919050565b6000613b6882613add565b613b728185613ae8565b9350613b7d83613af9565b8060005b83811015613bae578151613b958882613b38565b9750613ba083613b50565b925050600181019050613b81565b5085935050505092915050565b60006040830160008301518482036000860152613bd88282613a65565b91505060208301518482036020860152613bf28282613b5d565b9150508091505092915050565b6000613c0b8383613bbb565b905092915050565b6000602082019050919050565b6000613c2b82613a39565b613c358185613a44565b935083602082028501613c4785613a55565b8060005b85811015613c835784840389528151613c648582613bff565b9450613c6f83613c13565b925060208a01995050600181019050613c4b565b50829750879550505050505092915050565b60006040820190508181036000830152613caf8185613c20565b90508181036020830152613cc381846136d4565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d1357607f821691505b602082108103613d2657613d25613ccc565b5b50919050565b613d358161261f565b82525050565b6000602082019050613d506000830184613d2c565b92915050565b6000613d69613d6484612aa5565b612a8a565b905082815260208101848484011115613d8557613d84612a25565b5b613d908482856126ef565b509392505050565b600082601f830112613dad57613dac612a20565b5b8151613dbd848260208601613d56565b91505092915050565b600081519050613dd5816138aa565b92915050565b60048110613de857600080fd5b50565b600081519050613dfa81613ddb565b92915050565b600081519050613e0f81612667565b92915050565b613e1e81612772565b8114613e2957600080fd5b50565b600081519050613e3b81613e15565b92915050565b60006101608284031215613e5857613e576137d3565b5b613e63610160612a8a565b9050600082015167ffffffffffffffff811115613e8357613e826137d8565b5b613e8f84828501613d98565b600083015250602082015167ffffffffffffffff811115613eb357613eb26137d8565b5b613ebf84828501613d98565b6020830152506040613ed384828501613dc6565b6040830152506060613ee784828501613deb565b6060830152506080613efb84828501613e00565b60808301525060a0613f0f84828501613e00565b60a08301525060c082015167ffffffffffffffff811115613f3357613f326137d8565b5b613f3f84828501613d98565b60c08301525060e0613f5384828501613e2c565b60e083015250610100613f6884828501613e2c565b61010083015250610120613f7e84828501613e00565b61012083015250610140613f9484828501613e00565b6101408301525092915050565b600060208284031215613fb757613fb66125f5565b5b600082015167ffffffffffffffff811115613fd557613fd46125fa565b5b613fe184828501613e41565b91505092915050565b6000604082019050613fff6000830185613d2c565b8181036020830152614011818461272a565b90509392505050565b600081905092915050565b6000614030826126d3565b61403a818561401a565b935061404a8185602086016126ef565b80840191505092915050565b60006140628284614025565b915081905092915050565b7f64656c656761746563616c6c0000000000000000000000000000000000000000600082015250565b60006140a3600c8361401a565b91506140ae8261406d565b600c82019050919050565b60006140c482614096565b9150819050919050565b600081905092915050565b60006140e48261367f565b6140ee81856140ce565b93506140fe8185602086016126ef565b80840191505092915050565b600061411682846140d9565b915081905092915050565b7f6661696c65642064656c656761746563616c6c20746f20707265636f6d70696c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061417d6021836126de565b915061418882614121565b604082019050919050565b600060208201905081810360008301526141ac81614170565b9050919050565b6000604082840312156141c9576141c86137d3565b5b6141d36040612a8a565b9050600082015167ffffffffffffffff8111156141f3576141f26137d8565b5b6141ff84828501613d98565b600083015250602061421384828501613e00565b60208301525092915050565b60008060408385031215614236576142356125f5565b5b600061424485828601613e00565b925050602083015167ffffffffffffffff811115614265576142646125fa565b5b614271858286016141b3565b9150509250929050565b7f73746174696363616c6c00000000000000000000000000000000000000000000600082015250565b60006142b1600a8361401a565b91506142bc8261427b565b600a82019050919050565b60006142d2826142a4565b9150819050919050565b7f6661696c65642073746174696363616c6c20746f20707265636f6d70696c6500600082015250565b6000614312601f836126de565b915061431d826142dc565b602082019050919050565b6000602082019050818103600083015261434181614305565b9050919050565b7f63616c6c00000000000000000000000000000000000000000000000000000000600082015250565b600061437e60048361401a565b915061438982614348565b600482019050919050565b600061439f82614371565b9150819050919050565b7f6661696c65642063616c6c20746f20707265636f6d70696c6500000000000000600082015250565b60006143df6019836126de565b91506143ea826143a9565b602082019050919050565b6000602082019050818103600083015261440e816143d2565b9050919050565b7f63616c6c636f6465000000000000000000000000000000000000000000000000600082015250565b600061444b60088361401a565b915061445682614415565b600882019050919050565b600061446c8261443e565b9150819050919050565b7f696e76616c69642063616c6c7479706500000000000000000000000000000000600082015250565b60006144ac6010836126de565b91506144b782614476565b602082019050919050565b600060208201905081810360008301526144db8161449f565b9050919050565b60006060820190506144f76000830186613d2c565b8181036020830152614509818561272a565b90506145186040830184612763565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061455a8261265d565b91506145658361265d565b925082820190508082111561457d5761457c614520565b5b92915050565b600060208284031215614599576145986125f5565b5b60006145a784828501613e2c565b91505092915050565b7f4661696c656420746f20756e64656c6567617465000000000000000000000000600082015250565b60006145e66014836126de565b91506145f1826145b0565b602082019050919050565b60006020820190508181036000830152614615816145d9565b9050919050565b60006040820190506146316000830185613d2c565b61463e6020830184612763565b9392505050565b7f7472616e73666572206661696c65640000000000000000000000000000000000600082015250565b600061467b600f836126de565b915061468682614645565b602082019050919050565b600060208201905081810360008301526146aa8161466e565b9050919050565b6000602082840312156146c7576146c66125f5565b5b60006146d584828501613dc6565b91505092915050565b7f64656c6567617465206661696c65640000000000000000000000000000000000600082015250565b6000614714600f836126de565b915061471f826146de565b602082019050919050565b6000602082019050818103600083015261474381614707565b9050919050565b600067ffffffffffffffff82111561476557614764612a2a565b5b602082029050602081019050919050565b600080fd5b60008151905061478a8161387e565b92915050565b600060c082840312156147a6576147a56137d3565b5b6147b060c0612a8a565b905060006147c084828501613e2c565b60008301525060206147d484828501613e2c565b60208301525060406147e884828501613e00565b60408301525060606147fc84828501613e00565b60608301525060806148108482850161477b565b60808301525060a061482484828501613e2c565b60a08301525092915050565b600061484361483e8461474a565b612a8a565b90508083825260208201905060c0840283018581111561486657614865614776565b5b835b8181101561488f578061487b8882614790565b84526020840193505060c081019050614868565b5050509392505050565b600082601f8301126148ae576148ad612a20565b5b81516148be848260208601614830565b91505092915050565b6000606082840312156148dd576148dc6137d3565b5b6148e76060612a8a565b9050600082015167ffffffffffffffff811115614907576149066137d8565b5b61491384828501613d98565b600083015250602082015167ffffffffffffffff811115614937576149366137d8565b5b61494384828501613d98565b602083015250604082015167ffffffffffffffff811115614967576149666137d8565b5b61497384828501614899565b60408301525092915050565b600060208284031215614995576149946125f5565b5b600082015167ffffffffffffffff8111156149b3576149b26125fa565b5b6149bf848285016148c7565b91505092915050565b60006060820190506149dd6000830186613d2c565b81810360208301526149ef818561272a565b90508181036040830152614a03818461272a565b9050949350505050565b600067ffffffffffffffff821115614a2857614a27612a2a565b5b602082029050602081019050919050565b600060808284031215614a4f57614a4e6137d3565b5b614a596080612a8a565b90506000614a6984828501613e2c565b6000830152506020614a7d84828501613e2c565b6020830152506040614a9184828501613e00565b6040830152506060614aa584828501613e00565b60608301525092915050565b6000614ac4614abf84614a0d565b612a8a565b90508083825260208201905060808402830185811115614ae757614ae6614776565b5b835b81811015614b105780614afc8882614a39565b845260208401935050608081019050614ae9565b5050509392505050565b600082601f830112614b2f57614b2e612a20565b5b8151614b3f848260208601614ab1565b91505092915050565b600060808284031215614b5e57614b5d6137d3565b5b614b686080612a8a565b9050600082015167ffffffffffffffff811115614b8857614b876137d8565b5b614b9484828501613d98565b600083015250602082015167ffffffffffffffff811115614bb857614bb76137d8565b5b614bc484828501613d98565b602083015250604082015167ffffffffffffffff811115614be857614be76137d8565b5b614bf484828501613d98565b604083015250606082015167ffffffffffffffff811115614c1857614c176137d8565b5b614c2484828501614b1a565b60608301525092915050565b600060208284031215614c4657614c456125f5565b5b600082015167ffffffffffffffff811115614c6457614c636125fa565b5b614c7084828501614b48565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112614ca557614ca4614c83565b5b83810192508235915060208301925067ffffffffffffffff821115614ccd57614ccc614c79565b5b600182023603831315614ce357614ce2614c7e565b5b509250929050565b6000614cf78385612807565b9350614d04838584612ad6565b614d0d83612719565b840190509392505050565b600060a08301614d2b6000840184614c88565b8583036000870152614d3e838284614ceb565b92505050614d4f6020840184614c88565b8583036020870152614d62838284614ceb565b92505050614d736040840184614c88565b8583036040870152614d86838284614ceb565b92505050614d976060840184614c88565b8583036060870152614daa838284614ceb565b92505050614dbb6080840184614c88565b8583036080870152614dce838284614ceb565b925050508091505092915050565b6000614deb602084018461267e565b905092915050565b60608201614e046000830183614ddc565b614e1160008501826128e3565b50614e1f6020830183614ddc565b614e2c60208501826128e3565b50614e3a6040830183614ddc565b614e4760408501826128e3565b50505050565b6000610100820190508181036000830152614e688189614d18565b9050614e776020830188614df3565b614e846080830187612763565b614e9160a0830186613d2c565b81810360c0830152614ea3818561272a565b9050614eb260e0830184612763565b979650505050505050565b6000608082019050614ed26000830187613d2c565b8181036020830152614ee4818661272a565b9050614ef36040830185612763565b614f006060830184612763565b95945050505050565b7f4661696c656420746f2063616e63656c20756e626f6e64696e67000000000000600082015250565b6000614f3f601a836126de565b9150614f4a82614f09565b602082019050919050565b60006020820190508181036000830152614f6e81614f32565b9050919050565b614f7e81613370565b82525050565b60006080820190508181036000830152614f9e8187614d18565b9050614fad6020830186613d2c565b614fba6040830185614f75565b614fc76060830184614f75565b95945050505050565b60008083356001602003843603038112614fed57614fec614c83565b5b83810192508235915060208301925067ffffffffffffffff82111561501557615014614c79565b5b60018202360383131561502b5761502a614c7e565b5b509250929050565b600061503f838561368a565b935061504c838584612ad6565b61505583612719565b840190509392505050565b600061506f6020840184613895565b905092915050565b600061508660208401846138c1565b905092915050565b600060a083016150a16000840184614fd0565b85830360008701526150b4838284615033565b925050506150c56020840184615060565b6150d26020860182612e3f565b506150e06040840184615060565b6150ed6040860182612e3f565b506150fb6060840184615077565b615108606086018261285d565b506151166080840184615077565b615123608086018261285d565b508091505092915050565b60006040820190508181036000830152615148818561272a565b9050818103602083015261515c818461508e565b90509392505050565b600067ffffffffffffffff8211156151805761517f612a2a565b5b602082029050602081019050919050565b60006151a461519f84615165565b612a8a565b905080838252602082019050602084028301858111156151c7576151c6614776565b5b835b8181101561520e57805167ffffffffffffffff8111156151ec576151eb612a20565b5b8086016151f98982613e41565b855260208501945050506020810190506151c9565b5050509392505050565b600082601f83011261522d5761522c612a20565b5b815161523d848260208601615191565b91505092915050565b6000615259615254846137dd565b612a8a565b90508281526020810184848401111561527557615274612a25565b5b6152808482856126ef565b509392505050565b600082601f83011261529d5761529c612a20565b5b81516152ad848260208601615246565b91505092915050565b6000604082840312156152cc576152cb6137d3565b5b6152d66040612a8a565b9050600082015167ffffffffffffffff8111156152f6576152f56137d8565b5b61530284828501615288565b60008301525060206153168482850161477b565b60208301525092915050565b60008060408385031215615339576153386125f5565b5b600083015167ffffffffffffffff811115615357576153566125fa565b5b61536385828601615218565b925050602083015167ffffffffffffffff811115615384576153836125fa565b5b615390858286016152b6565b9150509250929050565b60006080820190506153af6000830187613d2c565b81810360208301526153c1818661272a565b905081810360408301526153d5818561272a565b90506153e46060830184612763565b95945050505050565b7f4661696c656420746f20726564656c6567617465000000000000000000000000600082015250565b60006154236014836126de565b915061542e826153ed565b602082019050919050565b6000602082019050818103600083015261545281615416565b9050919050565b600060a0830160008301518482036000860152615476828261369b565b915050602083015161548b6020860182612e3f565b50604083015161549e6040860182612e3f565b5060608301516154b1606086018261285d565b5060808301516154c4608086018261285d565b508091505092915050565b60006080820190506154e46000830187613d2c565b81810360208301526154f6818661272a565b9050818103604083015261550a818561272a565b9050818103606083015261551e8184615459565b905095945050505050565b600067ffffffffffffffff82111561554457615543612a2a565b5b602082029050602081019050919050565b60006080828403121561556b5761556a6137d3565b5b6155756080612a8a565b9050600082015167ffffffffffffffff811115615595576155946137d8565b5b6155a184828501613d98565b600083015250602082015167ffffffffffffffff8111156155c5576155c46137d8565b5b6155d184828501613d98565b602083015250604082015167ffffffffffffffff8111156155f5576155f46137d8565b5b61560184828501613d98565b604083015250606082015167ffffffffffffffff811115615625576156246137d8565b5b61563184828501614b1a565b60608301525092915050565b600067ffffffffffffffff82111561565857615657612a2a565b5b602082029050602081019050919050565b600060a0828403121561567f5761567e6137d3565b5b6156896040612a8a565b9050600061569984828501614a39565b60008301525060806156ad84828501613e00565b60208301525092915050565b60006156cc6156c78461563d565b612a8a565b90508083825260208201905060a084028301858111156156ef576156ee614776565b5b835b8181101561571857806157048882615669565b84526020840193505060a0810190506156f1565b5050509392505050565b600082601f83011261573757615736612a20565b5b81516157478482602086016156b9565b91505092915050565b600060408284031215615766576157656137d3565b5b6157706040612a8a565b9050600082015167ffffffffffffffff8111156157905761578f6137d8565b5b61579c84828501615555565b600083015250602082015167ffffffffffffffff8111156157c0576157bf6137d8565b5b6157cc84828501615722565b60208301525092915050565b60006157eb6157e684615529565b612a8a565b9050808382526020820190506020840283018581111561580e5761580d614776565b5b835b8181101561585557805167ffffffffffffffff81111561583357615832612a20565b5b8086016158408982615750565b85526020850194505050602081019050615810565b5050509392505050565b600082601f83011261587457615873612a20565b5b81516158848482602086016157d8565b91505092915050565b600080604083850312156158a4576158a36125f5565b5b600083015167ffffffffffffffff8111156158c2576158c16125fa565b5b6158ce8582860161585f565b925050602083015167ffffffffffffffff8111156158ef576158ee6125fa565b5b6158fb858286016152b6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008190508160005260206000209050919050565b6000815461595681613cfb565b615960818661401a565b9450600182166000811461597b5760018114615990576159c3565b60ff19831686528115158202860193506159c3565b61599985615934565b60005b838110156159bb5781548189015260018201915060208101905061599c565b838801955050505b50505092915050565b60006159d88284615949565b915081905092915050565b60006159ee8261265d565b91506159f98361265d565b9250828203905081811115615a1157615a10614520565b5b92915050565b6000615a228261265d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615a5457615a53614520565b5b600182019050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302615aac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615a6f565b615ab68683615a6f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000615af3615aee615ae98461265d565b615ace565b61265d565b9050919050565b6000819050919050565b615b0d83615ad8565b615b21615b1982615afa565b848454615a7c565b825550505050565b600090565b615b36615b29565b615b41818484615b04565b505050565b5b81811015615b6557615b5a600082615b2e565b600181019050615b47565b5050565b601f821115615baa57615b7b81615934565b615b8484615a5f565b81016020851015615b93578190505b615ba7615b9f85615a5f565b830182615b46565b50505b505050565b600082821c905092915050565b6000615bcd60001984600802615baf565b1980831691505092915050565b6000615be68383615bbc565b9150826002028217905092915050565b615bff826126d3565b67ffffffffffffffff811115615c1857615c17612a2a565b5b615c228254613cfb565b615c2d828285615b69565b600060209050601f831160018114615c605760008415615c4e578287015190505b615c588582615bda565b865550615cc0565b601f198416615c6e86615934565b60005b82811015615c9657848901518255600182019150602085019450602081019050615c71565b86831015615cb35784890151615caf601f891682615bbc565b8355505b6001600288020188555050505b505050505050565b7f44656c65676174696f6e20646f6573206e6f74206578697374206f7220696e7360008201527f756666696369656e742064656c65676174696f6e20616d6f756e740000000000602082015250565b6000615d24603b836126de565b9150615d2f82615cc8565b604082019050919050565b60006020820190508181036000830152615d5381615d17565b9050919050565b7f556e626f6e64696e672064656c65676174696f6e20646f6573206e6f7420657860008201527f6973740000000000000000000000000000000000000000000000000000000000602082015250565b6000615db66023836126de565b9150615dc182615d5a565b604082019050919050565b60006020820190508181036000830152615de581615da9565b9050919050565b7f616d6f756e74206578636565647320756e626f6e64696e6720656e747279206160008201527f6d6f756e74000000000000000000000000000000000000000000000000000000602082015250565b6000615e486025836126de565b9150615e5382615dec565b604082019050919050565b60006020820190508181036000830152615e7781615e3b565b9050919050565b7f496e73756666696369656e742064656c65676174696f6e20616d6f756e740000600082015250565b6000615eb4601e836126de565b9150615ebf82615e7e565b602082019050919050565b60006020820190508181036000830152615ee381615ea7565b905091905056fea264697066735822122016ac52a7cdeca18fc9a87a81c885e6b4008363e5480699fb78c4a77257b7a7e464736f6c63430008140033", + "bytecode": "0x60803462000266576020906001600160401b0381830181811183821017620002505760808301818110838211176200025057604052602381527f2f636f736d6f732e7374616b696e672e763162657461312e4d736744656c656760408401526261746560e81b60608401528252600390815492600193848455808510620001d1575b5060008381528581209095869390925b868510620000a9576040516130a69081620002c28239f35b8051908151838111620001bd5788918691620000c687546200026b565b948c601f968588821162000182575b5050508c849683116001146200011c5795829186979262000110575b5050600019828c1b1c191690841b1786555b0193019401939162000091565b015190503880620000f1565b9095601f198316898352858320925b8181106200016a575090869784889594931062000151575b505050811b01865562000103565b0151600019838e1b60f8161c1916905538808062000143565b8289015184558e978c9794019392830192016200012b565b828b620001aa945220600589808701821c830193898810620001b3575b01901c0190620002a8565b8c3885620000d5565b935082936200019f565b634e487b7160e01b8a52604160045260248afd5b6000848152858088832093840193015b838110620001f25750505062000081565b82620001ff82546200026b565b8062000211575b5050018690620001e1565b601f8082116001146200022b57505081555b823862000206565b62000246908484528c8420920160051c8201858301620002a8565b8183555562000223565b634e487b7160e01b600052604160045260246000fd5b600080fd5b90600182811c921680156200029d575b60208310146200028757565b634e487b7160e01b600052602260045260246000fd5b91607f16916200027b565b818110620002b4575050565b60008155600101620002a856fe6080604052600436101561001257600080fd5b60003560e01c8063088b32b1146101575780631904bb2e1461015257806319b16c4c1461014d5780632345e7d41461014857806329e71c821461014357806331bcbcb31461013e578063455b855114610139578063464d2d0314610134578063569c21e31461012f578063570467ac1461012a57806361bc221a1461012557806368ac3df314610120578063a4603a2e1461011b578063af9a90b214610116578063b13d424214610111578063b3e982341461010c578063b61b519714610107578063cf2753cf14610102578063ddbaf2c2146100fd5763f732b065146100f857600080fd5b611c2d565b611ab9565b611a1e565b6119af565b6118b5565b611773565b61160f565b6114ae565b611427565b6113fb565b611338565b61121d565b6111a2565b610f9f565b610d97565b610c97565b610a6d565b6107ec565b6105b2565b6103dc565b600435906001600160a01b038216820361017257565b600080fd5b60a435906001600160a01b038216820361017257565b602435906001600160a01b038216820361017257565b80548210156101bf5760005260206000209060021b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c92168015610205575b60208310146101ef57565b634e487b7160e01b600052602260045260246000fd5b91607f16916101e4565b634e487b7160e01b600052604160045260246000fd5b61016081019081106001600160401b0382111761024157604052565b61020f565b60a081019081106001600160401b0382111761024157604052565b606081019081106001600160401b0382111761024157604052565b60c081019081106001600160401b0382111761024157604052565b608081019081106001600160401b0382111761024157604052565b604081019081106001600160401b0382111761024157604052565b90601f801991011681019081106001600160401b0382111761024157604052565b9060405191826000825492610302846101d5565b908184526001948581169081600014610371575060011461032e575b505061032c925003836102cd565b565b9093915060005260209081600020936000915b81831061035957505061032c9350820101388061031e565b85548884018501529485019487945091830191610341565b91505061032c94506020925060ff191682840152151560051b820101388061031e565b60005b8381106103a75750506000910152565b8181015183820152602001610397565b906020916103d081518092818552858086019101610394565b601f01601f1916010190565b34610172576040366003190112610172576103f561015c565b6001600160a01b03166000908152600160205260409020805460243591908210156101725761045a91610427916101a3565b50610431816102ee565b906001810154906003600282015491015460070b906040519485946080865260808601906103b7565b926020850152604084015260608301520390f35b90600482101561047b5752565b634e487b7160e01b600052602160045260246000fd5b6104fa9160806104e96104d76104c56104b3865160a0875260a08701906103b7565b602087015186820360208801526103b7565b604086015185820360408701526103b7565b606085015184820360608601526103b7565b9201519060808184039101526103b7565b90565b9061056d61052961051784516101608086528501906103b7565b602085015184820360208601526103b7565b6040848101511515908401526105476060850151606085019061046e565b6080840151608084015260a084015160a084015260c084015183820360c0850152610491565b60e08084015160070b90830152916101008181015160070b9083015261012080820151908301526101408091015191015290565b9060206104fa9281815201906104fd565b34610172576020366003190112610172576101406106766105d161015c565b6040908151906105e082610225565b60608083528060208401526000958387949285878195015283818301528360808301528360a083015286519061061582610246565b80825260208201819052878201819052818101819052608082015260c082015260e08101839052610100810183905261012081018390520152825163111d9dbd60e11b81526001600160a01b03909116600482015292839081906024820190565b03816108005afa9182156106c4578361069b949361069f575b505051918291826105a1565b0390f35b6106bc9293503d8091833e6106b481836102cd565b8101906128d8565b90388061068f565b611e38565b6040519061032c826102b2565b6040519061032c82610246565b6040519061032c82610225565b6040519061032c82610297565b6001600160401b03811161024157601f01601f191660200190565b929192610724826106fd565b9161073260405193846102cd565b829481845281830111610172578281602093846000960137010152565b9080601f83011215610172578160206104fa93359101610718565b6060600319820112610172576004356001600160a01b038116810361017257916001600160401b0360243581811161017257836107a99160040161074f565b92604435918211610172576104fa9160040161074f565b90815260406020820152606060206107e3845160408086015260808501906103b7565b93015191015290565b34610172576107fa3661076a565b60009291926108076128fd565b506040938451916020948584019463120bba7360e11b86528461082e858460248401612a97565b0390610842601f19928381018852876102cd565b8851610861816108558b82018095611aa2565b038481018352826102cd565b5190209088518881019061088c8161085584600c906b19195b1959d85d1958d85b1b60a21b81520190565b51902082036108db575050505050916000806108cd9361069b969551906108005af4906108c06108ba612edf565b92612fa3565b8082518301019101612a37565b9290915b51928392836107c0565b8851691cdd185d1a58d8d85b1b60b21b898201908152906108ff81600a8401610855565b519020820361093b575050505050916000806109339361069b969551906108005afa906108c061092d612edf565b92612f57565b9290916108d1565b88516318d85b1b60e21b898201908152906109598160048401610855565b519020820361098e575050505050916000806109339361069b96955190826108005af1906108c0610988612edf565b92612f0f565b9193955091935086516109c487820192826109b8856008906763616c6c636f646560c01b81520190565b039081018352826102cd565b51902003610a515760a460c0926109ef6109dc612ff9565b8051908801206001600160e01b03191690565b908787870151960151885196879586948552600485015289602485015260336044850152606484015260848301526108005af291815192610100606084015193018552156101725761069b91610a436106c9565b9160608352820152926108d1565b845162461bcd60e51b815280610a6960048201612eb4565b0390fd5b34610172576060366003190112610172576001600160401b0360043581811161017257610a9e90369060040161074f565b6024359160443590811161017257610aba90369060040161074f565b91610ac3612075565b6040805160209485820192630fb6accf60e21b845282610ae886883060248501611eeb565b0391610afc601f19938481018652856102cd565b8151610b1b81610b0f8b82018095611aa2565b038581018352826102cd565b519020610b30610b2a42611f69565b60070b90565b92825189810190610b588161085584600c906b19195b1959d85d1958d85b1b60a21b81520190565b5190208203610b99575050505093600080610b9193610b979751906108005af490610b846108ba612edf565b80825183010191016121ac565b91612205565b005b8251691cdd185d1a58d8d85b1b60b21b8a820190815290610bbd81600a8401610855565b5190208203610be9575050505093600080610b9193610b979751906108005afa90610b8461092d612edf565b82516318d85b1b60e21b8a820190815290610c078160048401610855565b5190208203610c34575050505093600080610b9193610b97975190826108005af190610b84610988612edf565b9091929697610c5c845191820192826109b8856008906763616c6c636f646560c01b81520190565b51902003610c80575060009182915190826108005af21561017257610b9792612205565b5162461bcd60e51b815280610a6960048201612eb4565b34610172576040366003190112610172576004356001600160401b03811161017257610cc790369060040161074f565b602435610cd48183612377565b610cdc612075565b604051630fb6accf60e21b81529060208280610cfd84873060048501611eeb565b038160006108005af19182156106c457600092610d67575b5060008260070b1315610d2b57610b9792612205565b60405162461bcd60e51b81526020600482015260146024820152734661696c656420746f20756e64656c656761746560601b6044820152606490fd5b610d8991925060203d8111610d90575b610d8181836102cd565b8101906121ac565b9038610d15565b503d610d77565b606036600319011261017257610dab61015c565b6024356001600160401b03811161017257610dca90369060040161074f565b610dd2612075565b60405163a9059cbb60e01b6020820190815233602483015260448035818401528252610e1d91610e036064826102cd565b600094859283809351925af1610e17612edf565b50613032565b6040516353266bbb60e01b81529060208280610e3e34853060048501611eeb565b0381866108005af19182156106c457610e6a92610e62918591610e6d575b50611f15565b349033611f79565b80f35b610e8e915060203d8111610e94575b610e8681836102cd565b810190611d3c565b38610e5c565b503d610e7c565b906040600319830112610172576004356001600160a01b03811681036101725791602435906001600160401b038211610172576104fa9160040161074f565b906020908183528051916060928382860152610efb608091828701906103b7565b93828401519581601f1997610f1c60409889928b86830301848701526103b7565b96015197828703019101528280875195868152019601946000925b858410610f48575050505050505090565b86518051600790810b8a5281870151810b8a880152818401518a850152818501518a860152818301516001600160401b03168a84015260a091820151900b9089015260c09097019695840195600190930192610f37565b3461017257610fad36610e9b565b906040805191610fbc83610261565b60609384845284836020958287820152015282519163a03ffee160e01b83528280610fee600094859460048401612a97565b03816108005afa9384156106c4578194611010575b83518061069b8782610eda565b90919293503d8083853e61102481856102cd565b83019080848303126111685783516001600160401b0394858211611170570193868584031261116c5785519461105986610261565b8051828111611174578461106e918301612725565b8652828101518281116111745784611087918301612725565b838701528681015191821161117057019180601f8401121561116c578251966110af88612917565b946110bc885196876102cd565b888652838601928460c0809b0287010195818711611168578501935b8685106110f8575050505050505061069b93508282015290388080611003565b8a8583031261116857858b918b5161110f8161027c565b6111188861219e565b815261112583890161219e565b838201528c8801518d82015286880151878201526080808901519061114982611b07565b82015260a0611159818a0161219e565b908201528152019401936110d8565b8280fd5b8380fd5b8480fd5b8580fd5b602060031982011261017257600435906001600160401b038211610172576104fa9160040161074f565b6111ab36611178565b6111b3612075565b6040516353266bbb60e01b8152806111d034843060048501611eeb565b039160208260009481866108005af19182156106c4576111fa92610e62918591610e6d5750611f15565b80803415611214575b8180809234903390f1156106c45780f35b506108fc611203565b61122636611178565b61122e612075565b6040516353266bbb60e01b8152906020828061124f34853060048501611eeb565b038160006108005af19182156106c457610b9792610e6291600091610e6d5750611f15565b805190611289608092838552838501906103b7565b60606112b66112a460209384860151888203868a01526103b7565b604085015187820360408901526103b7565b9201519360608184039101528080855193848152019401926000905b8382106112e157505050505090565b909192939483828261131a6001948a5160608091805160070b8452602081015160070b6020850152604081015160408501520151910152565b01960194939201906112d2565b9060206104fa928181520190611274565b346101725760006113483661076a565b9092916113b46040519261135b84610297565b606080858180975281602082015281604082015201526113a26040519687958695631f67e4e760e21b875260018060a01b03166004870152602486015260648501906103b7565b838103600319016044850152906103b7565b03816108005afa80156106c45761069b916000916113da575b5060405191829182611327565b6113f5913d8091833e6113ed81836102cd565b810190612bfa565b386113cd565b34610172576000366003190112610172576020600254604051908152f35b908160a09103126101725790565b3461017257610100366003190112610172576001600160401b0360043581811161017257611459903690600401611419565b9060603660231901126101725761146e610177565b9160c4359182116101725761069b9261148e61149c93369060040161074f565b9060e4359260843590611e44565b60405190151581529081906020820190565b34610172576060366003190112610172576004356001600160401b038111610172576114de90369060040161074f565b604435906024356114ed612075565b600091825b33600052846001806020526040600020548310156115fb573360009081526001602052604090206115249084906101a3565b5061154585611532836102ee565b6020815191012090602081519101201490565b90816115e2575b5061156157505061155c90611fbf565b6114f2565b84955060209391949250600161157a915b151514612698565b611599604051968793849363096ac6ff60e11b8552306004860161252a565b038160006108005af19283156106c457610b97936115bf916000916115c4575b5061255d565b6125a9565b6115dc915060203d8111610e9457610e8681836102cd565b386115b9565b600301546115f3915060070b610b2a565b42103861154c565b5092938491509161157a6001602094611572565b34610172576080366003190112610172576004356001600160401b0381116101725761163f903690600401611419565b602061167061164c61018d565b604051632943c16b60e21b8152608060048201529384928392916084840190611da3565b6001600160a01b03909116602483015260448035908301526064803590830152038160006108005af180156106c45761069b916000916116be575b5060405190151581529081906020820190565b6116d6915060203d8111610e9457610e8681836102cd565b386116ab565b9060206001600160401b03816116fb85516040865260408601906103b7565b9401511691015290565b929160408401916040855280518093526060850160608460051b870101936020809301916000905b8282106117495750505050936104fa93948184039101526116dc565b909192958480611765600193605f198d82030186528a516104fd565b98019201920190929161172d565b346101725760406003198181360112610172576001600160401b03600435818111610172576117a690369060040161074f565b60243590828211610172576000926117c56117f3933690600401611419565b946117ce6128fd565b506080808851978896879663186b216760e01b88528b600489015260448801906103b7565b9386850301602487015261181861180a8280611d51565b60a0875260a0870191611d82565b9480602083013561182881611b07565b1660208601528a82013561183b81611b07565b168a850152606081013561184e81611b23565b15156060850152013561186081611b23565b151591015203816108005afa9182156106c457600091829361188c575b5061069b905192839283611705565b6118ad91935061069b923d8091833e6118a581836102cd565b81019061298d565b92909161187d565b3461017257600319606036820112610172576001600160401b0390600435828111610172576118e890369060040161074f565b916024359081116101725761190190369060040161074f565b61194f6020604435936119148587612377565b604051809381926354b826f560e01b83523060048401526080602484015261193f608484018a6103b7565b90838203016044840152866103b7565b866064830152038160006108005af19081156106c457610b9794611985600061198b9487948291611991575b5060070b13612419565b3361245c565b33611f79565b6119a9915060203d8111610d9057610d8181836102cd565b3861197b565b6119b836611178565b6119c0612075565b6040516353266bbb60e01b815290602082806119e134853060048501611eeb565b038160006108005af19182156106c457611a0692610e6291600091610e6d5750611f15565b60025460018101809111611a1957600255005b611f53565b3461017257611a566000611a3136610e9b565b90611a3a6128fd565b5060405163120bba7360e11b8152938492839260048401612a97565b03816108005afa9081156106c4576000908192611a7e575b5061069b604051928392836107c0565b90611a9b92503d8091833e611a9381836102cd565b810190612a37565b9038611a6e565b90611ab560209282815194859201610394565b0190565b34610172576020611af581611acd36610e9b565b9060018060a01b03166000526000825260406000208260405194838680955193849201610394565b82019081520301902054604051908152f35b6001600160401b0381160361017257565b359061032c82611b07565b8015150361017257565b359061032c82611b23565b92916040918285018386528151809152606086019060608160051b88010194602080940192600091825b848410611b8057505050505050936104fa93948184039101526116dc565b9091929394978690605f198c8203018552895182611ba5825187855287850190611274565b910151918381830391015282808351928381520192019084905b808210611bde5750505090806001929a01940194019294939190611b62565b919360a060019294828751611c1883825160608091805160070b8452602081015160070b6020850152604081015160408501520151910152565b01516080820152019401920189939291611bbf565b346101725760031960803682011261017257611c4761015c565b6001600160401b039060243582811161017257611c6890369060040161074f565b60443583811161017257611c8090369060040161074f565b91606435948486116101725760a09086360301126101725760405193611ca585610246565b85600401359081116101725785019436602387011215610172576084611d1791611cdc611d21983690602460048201359101610718565b8752611cea60248201611b18565b6020880152611cfb60448201611b18565b6040880152611d0c60648201611b2d565b606088015201611b2d565b6080850152612dc6565b9061069b60405192839283611b38565b519061032c82611b23565b9081602091031261017257516104fa81611b23565b9035601e19823603018112156101725701602081359101916001600160401b03821161017257813603831361017257565b908060209392818452848401376000828201840152601f01601f1916010190565b6104fa91611e2a611e1f611e04611de9611dce611dc08780611d51565b60a0885260a0880191611d82565b611ddb6020880188611d51565b908783036020890152611d82565b611df66040870187611d51565b908683036040880152611d82565b611e116060860186611d51565b908583036060870152611d82565b926080810190611d51565b916080818503910152611d82565b6040513d6000823e3d90fd5b9093611eb2611e7693956020956040519788968796637be6aa8b60e11b88526101006004890152610104880190611da3565b92602435602488015260443560448801526064356064880152608487015260018060a01b031660a48601526003198583030160c48601526103b7565b9060e4830152038160006108005af19081156106c457600091611ed3575090565b6104fa915060203d8111610e9457610e8681836102cd565b939291611f109060409260018060a01b031686526060602087015260608601906103b7565b930152565b15611f1c57565b60405162461bcd60e51b815260206004820152600f60248201526e19195b1959d85d194819985a5b1959608a1b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90621baf808201809211611a1957565b611fa79160209160018060a01b03166000526000825260406000208260405194838680955193849201610394565b8201908152030190208054918201809211611a195755565b6000198114611a195760010190565b818110611fd9575050565b60008155600101611fce565b634e487b7160e01b600052600060045260246000fd5b906120635760038161200f600093546101d5565b80612026575b508260018201558260028201550155565b601f811160011461203c57508281555b38612015565b839082825261205a601f60208420920160051c820160018301611fce565b81835555612036565b611fe5565b91908203918211611a1957565b60005b336000526001602090808252604091826000208054851015612197578461209e916101a3565b509142600384015460070b11156120c2575b505050506120bd90611fbf565b612078565b3360009081526001602052604090206120e6906120e09087906101a3565b90611ffb565b828101543360009081526020819052604090209094519360009281549161210c836101d5565b9282811690811561217c5750600114612146575b505050815282900301902080546120bd939261213b91612068565b9055903880806120b0565b600090815285812093945091925b83831061216b5750505083019083816120bd612120565b805487840152918501918101612154565b60ff19168852505050801515028401915083816120bd612120565b5050505050565b51908160070b820361017257565b90816020910312610172576104fa9061219e565b9190601f81116121cf57505050565b61032c926000526020600020906020601f840160051c830193106121fb575b601f0160051c0190611fce565b90915081906121ee565b91903360005260016020918183526040600020926040519561222687610297565b86528086019182526040860193438552606087019560070b86528054600160401b8110156102415761225c9185820181556101a3565b9690966120635751908151916001600160401b0383116102415761228a836122848a546101d5565b8a6121c0565b81601f84116001146122fd57509282600396936122d4969361032c9a99966000926122f2575b505060001982891b1c191690831b1787555b51908601555160028501555160070b90565b9101906001600160401b0319825416906001600160401b0316179055565b0151905038806122b0565b9190601f1984166123138a600052602060002090565b936000905b82821061236057505093869361032c9a9996936122d498938360039b9810612348575b505050811b0187556122c2565b0151600019838b1b60f8161c1916905538808061233b565b808986978294978701518155019601940190612318565b602061239d91336000526000825260406000208260405194838680955193849201610394565b82019081520301902054106123ae57565b60405162461bcd60e51b815260206004820152603b60248201527f44656c65676174696f6e20646f6573206e6f74206578697374206f7220696e7360448201527f756666696369656e742064656c65676174696f6e20616d6f756e7400000000006064820152608490fd5b1561242057565b60405162461bcd60e51b81526020600482015260146024820152734661696c656420746f20726564656c656761746560601b6044820152606490fd5b9060018060a01b0382166000526000602052604060002091836040516020818551968287019761248d81848b610394565b82019081520301902054106124e5576001600160a01b03166000908152602081815260409091206124e1936124d093909190604051948593849251928391610394565b820190815203019020918254612068565b9055565b60405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742064656c65676174696f6e20616d6f756e7400006044820152606490fd5b6001600160a01b03909116815260806020820181905292949392606092612553918301906103b7565b9460408201520152565b1561256457565b60405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f2063616e63656c20756e626f6e64696e670000000000006044820152606490fd5b3360005260019160209083825260408481600020946000965b6125d0575b50505050505050565b8554871015612693576125e387876101a3565b509080600283015403612681575001928354918383106126305750509061260991612068565b8091551561261c575b80808080806125c7565b612629916120e0916101a3565b3880612612565b60849250519062461bcd60e51b82526004820152602560248201527f616d6f756e74206578636565647320756e626f6e64696e6720656e74727920616044820152641b5bdd5b9d60da1b6064820152fd5b905061268d8297611fbf565b966125c2565b6125c7565b1561269f57565b60405162461bcd60e51b815260206004820152602360248201527f556e626f6e64696e672064656c65676174696f6e20646f6573206e6f742065786044820152621a5cdd60ea1b6064820152608490fd5b909291926126fd816106fd565b9161270b60405193846102cd565b82948284528282011161017257602061032c930190610394565b9080601f830112156101725781516104fa926020016126f0565b5190600482101561017257565b91909160a081840312610172576127616106d6565b9281516001600160401b03908181116101725782612780918501612725565b85526020830151818111610172578261279a918501612725565b6020860152604083015181811161017257826127b7918501612725565b6040860152606083015181811161017257826127d4918501612725565b60608601526080830151908111610172576127ef9201612725565b6080830152565b919091610160818403126101725761280c6106e3565b928151906001600160401b0391828111610172578161282c918501612725565b855260208301518281116101725781612846918501612725565b602086015261285760408401611d31565b60408601526128686060840161273f565b60608601526080830151608086015260a083015160a086015260c08301519182116101725761289891830161274c565b60c08401526128a960e0820161219e565b60e08401526101006128bc81830161219e565b9084015261012080820151908401526101408091015190830152565b906020828203126101725781516001600160401b038111610172576104fa92016127f6565b6040519061290a826102b2565b6000602083606081520152565b6001600160401b0381116102415760051b60200190565b9190916040818403126101725760405190612948826102b2565b819381516001600160401b0381116101725782019181601f840112156101725761297b60209392838580955191016126f0565b845201519161298983611b07565b0152565b919091604081840312610172578051926001600160401b03938481116101725782019381601f860112156101725784516129c681612917565b906129d460405192836102cd565b808252602096878084019260051b8201019185831161017257888201905b838210612a12575050505094830151908111610172576104fa920161292e565b8151868111610172578a91612a2c898480948801016127f6565b8152019101906129f2565b9190916040818403126101725780519260208201516001600160401b039283821161017257016040818303126101725760405192612a74846102b2565b815190811161017257602092612a8b918301612725565b83520151602082015290565b6001600160a01b0390911681526040602082018190526104fa929101906103b7565b919082608091031261017257604051612ad181610297565b6060808294612adf8161219e565b8452612aed6020820161219e565b6020850152604081015160408501520151910152565b81601f8201121561017257805191612b1a83612917565b92612b2860405194856102cd565b808452602091828086019260071b85010193818511610172578301915b848310612b5457505050505090565b83608091612b628486612ab9565b815201920191612b45565b91909160808184031261017257612b826106f0565b9281516001600160401b03908181116101725782612ba1918501612725565b855260208301518181116101725782612bbb918501612725565b602086015260408301518181116101725782612bd8918501612725565b6040860152606083015190811161017257612bf39201612b03565b6060830152565b906020828203126101725781516001600160401b038111610172576104fa9201612b6d565b919091604080828503126101725781516001600160401b0381116101725784601f828501011215610172578083015190612c5882612917565b92612c65815194856102cd565b82845260208401918760208560051b83890101011161017257602081870101925b60208560051b83890101018410612cba5750505050509260208201516001600160401b038111610172576104fa920161292e565b83516001600160401b038111610172578288010183601f19828c03011261017257835190612ce7826102b2565b60208101516001600160401b038111610172578b6020612d0992840101612b6d565b825284810151906001600160401b03821161017257018a603f82011215610172576020810151612d3881612917565b91612d45875193846102cd565b818352602083018d8860a085028401011161017257818801908e5b8960a086028501018310612d895750505050506020828101919091529082529384019301612c86565b8260a09103126101725760208f9160a092612daf8c5191612da9836102b2565b86612ab9565b81526080850151838201528152019101908e612d60565b612e109493600093612dd66128fd565b50604051630428a14760e21b81526001600160a01b0390931660048401526080602484015291958693849391612e239160848601906103b7565b60031992838683030160448701526103b7565b90838203016064840152608080612e43845160a0855260a08501906103b7565b936001600160401b0380602083015116602086015260408201511660408501526060810151151560608501520151151591015203816108005afa9182156106c4576000908193612e9257509190565b90612eb09293503d8091833e612ea881836102cd565b810190612c1f565b9091565b60609060208152601060208201526f696e76616c69642063616c6c7479706560801b60408201520190565b3d15612f0a573d90612ef0826106fd565b91612efe60405193846102cd565b82523d6000602084013e565b606090565b15612f1657565b60405162461bcd60e51b81526020600482015260196024820152786661696c65642063616c6c20746f20707265636f6d70696c6560381b6044820152606490fd5b15612f5e57565b60405162461bcd60e51b815260206004820152601f60248201527f6661696c65642073746174696363616c6c20746f20707265636f6d70696c65006044820152606490fd5b15612faa57565b60405162461bcd60e51b815260206004820152602160248201527f6661696c65642064656c656761746563616c6c20746f20707265636f6d70696c6044820152606560f81b6064820152608490fd5b60405190613006826102b2565b601a82527f64656c65676174696f6e28616464726573732c737472696e67290000000000006020830152565b1561303957565b60405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606490fdfea2646970667358221220d1e8c1d6b1ef8b01471c4ab06fb8583615d477c90c9b7811388bad4cc56ef39d64736f6c63430008140033", + "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8063088b32b1146101575780631904bb2e1461015257806319b16c4c1461014d5780632345e7d41461014857806329e71c821461014357806331bcbcb31461013e578063455b855114610139578063464d2d0314610134578063569c21e31461012f578063570467ac1461012a57806361bc221a1461012557806368ac3df314610120578063a4603a2e1461011b578063af9a90b214610116578063b13d424214610111578063b3e982341461010c578063b61b519714610107578063cf2753cf14610102578063ddbaf2c2146100fd5763f732b065146100f857600080fd5b611c2d565b611ab9565b611a1e565b6119af565b6118b5565b611773565b61160f565b6114ae565b611427565b6113fb565b611338565b61121d565b6111a2565b610f9f565b610d97565b610c97565b610a6d565b6107ec565b6105b2565b6103dc565b600435906001600160a01b038216820361017257565b600080fd5b60a435906001600160a01b038216820361017257565b602435906001600160a01b038216820361017257565b80548210156101bf5760005260206000209060021b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c92168015610205575b60208310146101ef57565b634e487b7160e01b600052602260045260246000fd5b91607f16916101e4565b634e487b7160e01b600052604160045260246000fd5b61016081019081106001600160401b0382111761024157604052565b61020f565b60a081019081106001600160401b0382111761024157604052565b606081019081106001600160401b0382111761024157604052565b60c081019081106001600160401b0382111761024157604052565b608081019081106001600160401b0382111761024157604052565b604081019081106001600160401b0382111761024157604052565b90601f801991011681019081106001600160401b0382111761024157604052565b9060405191826000825492610302846101d5565b908184526001948581169081600014610371575060011461032e575b505061032c925003836102cd565b565b9093915060005260209081600020936000915b81831061035957505061032c9350820101388061031e565b85548884018501529485019487945091830191610341565b91505061032c94506020925060ff191682840152151560051b820101388061031e565b60005b8381106103a75750506000910152565b8181015183820152602001610397565b906020916103d081518092818552858086019101610394565b601f01601f1916010190565b34610172576040366003190112610172576103f561015c565b6001600160a01b03166000908152600160205260409020805460243591908210156101725761045a91610427916101a3565b50610431816102ee565b906001810154906003600282015491015460070b906040519485946080865260808601906103b7565b926020850152604084015260608301520390f35b90600482101561047b5752565b634e487b7160e01b600052602160045260246000fd5b6104fa9160806104e96104d76104c56104b3865160a0875260a08701906103b7565b602087015186820360208801526103b7565b604086015185820360408701526103b7565b606085015184820360608601526103b7565b9201519060808184039101526103b7565b90565b9061056d61052961051784516101608086528501906103b7565b602085015184820360208601526103b7565b6040848101511515908401526105476060850151606085019061046e565b6080840151608084015260a084015160a084015260c084015183820360c0850152610491565b60e08084015160070b90830152916101008181015160070b9083015261012080820151908301526101408091015191015290565b9060206104fa9281815201906104fd565b34610172576020366003190112610172576101406106766105d161015c565b6040908151906105e082610225565b60608083528060208401526000958387949285878195015283818301528360808301528360a083015286519061061582610246565b80825260208201819052878201819052818101819052608082015260c082015260e08101839052610100810183905261012081018390520152825163111d9dbd60e11b81526001600160a01b03909116600482015292839081906024820190565b03816108005afa9182156106c4578361069b949361069f575b505051918291826105a1565b0390f35b6106bc9293503d8091833e6106b481836102cd565b8101906128d8565b90388061068f565b611e38565b6040519061032c826102b2565b6040519061032c82610246565b6040519061032c82610225565b6040519061032c82610297565b6001600160401b03811161024157601f01601f191660200190565b929192610724826106fd565b9161073260405193846102cd565b829481845281830111610172578281602093846000960137010152565b9080601f83011215610172578160206104fa93359101610718565b6060600319820112610172576004356001600160a01b038116810361017257916001600160401b0360243581811161017257836107a99160040161074f565b92604435918211610172576104fa9160040161074f565b90815260406020820152606060206107e3845160408086015260808501906103b7565b93015191015290565b34610172576107fa3661076a565b60009291926108076128fd565b506040938451916020948584019463120bba7360e11b86528461082e858460248401612a97565b0390610842601f19928381018852876102cd565b8851610861816108558b82018095611aa2565b038481018352826102cd565b5190209088518881019061088c8161085584600c906b19195b1959d85d1958d85b1b60a21b81520190565b51902082036108db575050505050916000806108cd9361069b969551906108005af4906108c06108ba612edf565b92612fa3565b8082518301019101612a37565b9290915b51928392836107c0565b8851691cdd185d1a58d8d85b1b60b21b898201908152906108ff81600a8401610855565b519020820361093b575050505050916000806109339361069b969551906108005afa906108c061092d612edf565b92612f57565b9290916108d1565b88516318d85b1b60e21b898201908152906109598160048401610855565b519020820361098e575050505050916000806109339361069b96955190826108005af1906108c0610988612edf565b92612f0f565b9193955091935086516109c487820192826109b8856008906763616c6c636f646560c01b81520190565b039081018352826102cd565b51902003610a515760a460c0926109ef6109dc612ff9565b8051908801206001600160e01b03191690565b908787870151960151885196879586948552600485015289602485015260336044850152606484015260848301526108005af291815192610100606084015193018552156101725761069b91610a436106c9565b9160608352820152926108d1565b845162461bcd60e51b815280610a6960048201612eb4565b0390fd5b34610172576060366003190112610172576001600160401b0360043581811161017257610a9e90369060040161074f565b6024359160443590811161017257610aba90369060040161074f565b91610ac3612075565b6040805160209485820192630fb6accf60e21b845282610ae886883060248501611eeb565b0391610afc601f19938481018652856102cd565b8151610b1b81610b0f8b82018095611aa2565b038581018352826102cd565b519020610b30610b2a42611f69565b60070b90565b92825189810190610b588161085584600c906b19195b1959d85d1958d85b1b60a21b81520190565b5190208203610b99575050505093600080610b9193610b979751906108005af490610b846108ba612edf565b80825183010191016121ac565b91612205565b005b8251691cdd185d1a58d8d85b1b60b21b8a820190815290610bbd81600a8401610855565b5190208203610be9575050505093600080610b9193610b979751906108005afa90610b8461092d612edf565b82516318d85b1b60e21b8a820190815290610c078160048401610855565b5190208203610c34575050505093600080610b9193610b97975190826108005af190610b84610988612edf565b9091929697610c5c845191820192826109b8856008906763616c6c636f646560c01b81520190565b51902003610c80575060009182915190826108005af21561017257610b9792612205565b5162461bcd60e51b815280610a6960048201612eb4565b34610172576040366003190112610172576004356001600160401b03811161017257610cc790369060040161074f565b602435610cd48183612377565b610cdc612075565b604051630fb6accf60e21b81529060208280610cfd84873060048501611eeb565b038160006108005af19182156106c457600092610d67575b5060008260070b1315610d2b57610b9792612205565b60405162461bcd60e51b81526020600482015260146024820152734661696c656420746f20756e64656c656761746560601b6044820152606490fd5b610d8991925060203d8111610d90575b610d8181836102cd565b8101906121ac565b9038610d15565b503d610d77565b606036600319011261017257610dab61015c565b6024356001600160401b03811161017257610dca90369060040161074f565b610dd2612075565b60405163a9059cbb60e01b6020820190815233602483015260448035818401528252610e1d91610e036064826102cd565b600094859283809351925af1610e17612edf565b50613032565b6040516353266bbb60e01b81529060208280610e3e34853060048501611eeb565b0381866108005af19182156106c457610e6a92610e62918591610e6d575b50611f15565b349033611f79565b80f35b610e8e915060203d8111610e94575b610e8681836102cd565b810190611d3c565b38610e5c565b503d610e7c565b906040600319830112610172576004356001600160a01b03811681036101725791602435906001600160401b038211610172576104fa9160040161074f565b906020908183528051916060928382860152610efb608091828701906103b7565b93828401519581601f1997610f1c60409889928b86830301848701526103b7565b96015197828703019101528280875195868152019601946000925b858410610f48575050505050505090565b86518051600790810b8a5281870151810b8a880152818401518a850152818501518a860152818301516001600160401b03168a84015260a091820151900b9089015260c09097019695840195600190930192610f37565b3461017257610fad36610e9b565b906040805191610fbc83610261565b60609384845284836020958287820152015282519163a03ffee160e01b83528280610fee600094859460048401612a97565b03816108005afa9384156106c4578194611010575b83518061069b8782610eda565b90919293503d8083853e61102481856102cd565b83019080848303126111685783516001600160401b0394858211611170570193868584031261116c5785519461105986610261565b8051828111611174578461106e918301612725565b8652828101518281116111745784611087918301612725565b838701528681015191821161117057019180601f8401121561116c578251966110af88612917565b946110bc885196876102cd565b888652838601928460c0809b0287010195818711611168578501935b8685106110f8575050505050505061069b93508282015290388080611003565b8a8583031261116857858b918b5161110f8161027c565b6111188861219e565b815261112583890161219e565b838201528c8801518d82015286880151878201526080808901519061114982611b07565b82015260a0611159818a0161219e565b908201528152019401936110d8565b8280fd5b8380fd5b8480fd5b8580fd5b602060031982011261017257600435906001600160401b038211610172576104fa9160040161074f565b6111ab36611178565b6111b3612075565b6040516353266bbb60e01b8152806111d034843060048501611eeb565b039160208260009481866108005af19182156106c4576111fa92610e62918591610e6d5750611f15565b80803415611214575b8180809234903390f1156106c45780f35b506108fc611203565b61122636611178565b61122e612075565b6040516353266bbb60e01b8152906020828061124f34853060048501611eeb565b038160006108005af19182156106c457610b9792610e6291600091610e6d5750611f15565b805190611289608092838552838501906103b7565b60606112b66112a460209384860151888203868a01526103b7565b604085015187820360408901526103b7565b9201519360608184039101528080855193848152019401926000905b8382106112e157505050505090565b909192939483828261131a6001948a5160608091805160070b8452602081015160070b6020850152604081015160408501520151910152565b01960194939201906112d2565b9060206104fa928181520190611274565b346101725760006113483661076a565b9092916113b46040519261135b84610297565b606080858180975281602082015281604082015201526113a26040519687958695631f67e4e760e21b875260018060a01b03166004870152602486015260648501906103b7565b838103600319016044850152906103b7565b03816108005afa80156106c45761069b916000916113da575b5060405191829182611327565b6113f5913d8091833e6113ed81836102cd565b810190612bfa565b386113cd565b34610172576000366003190112610172576020600254604051908152f35b908160a09103126101725790565b3461017257610100366003190112610172576001600160401b0360043581811161017257611459903690600401611419565b9060603660231901126101725761146e610177565b9160c4359182116101725761069b9261148e61149c93369060040161074f565b9060e4359260843590611e44565b60405190151581529081906020820190565b34610172576060366003190112610172576004356001600160401b038111610172576114de90369060040161074f565b604435906024356114ed612075565b600091825b33600052846001806020526040600020548310156115fb573360009081526001602052604090206115249084906101a3565b5061154585611532836102ee565b6020815191012090602081519101201490565b90816115e2575b5061156157505061155c90611fbf565b6114f2565b84955060209391949250600161157a915b151514612698565b611599604051968793849363096ac6ff60e11b8552306004860161252a565b038160006108005af19283156106c457610b97936115bf916000916115c4575b5061255d565b6125a9565b6115dc915060203d8111610e9457610e8681836102cd565b386115b9565b600301546115f3915060070b610b2a565b42103861154c565b5092938491509161157a6001602094611572565b34610172576080366003190112610172576004356001600160401b0381116101725761163f903690600401611419565b602061167061164c61018d565b604051632943c16b60e21b8152608060048201529384928392916084840190611da3565b6001600160a01b03909116602483015260448035908301526064803590830152038160006108005af180156106c45761069b916000916116be575b5060405190151581529081906020820190565b6116d6915060203d8111610e9457610e8681836102cd565b386116ab565b9060206001600160401b03816116fb85516040865260408601906103b7565b9401511691015290565b929160408401916040855280518093526060850160608460051b870101936020809301916000905b8282106117495750505050936104fa93948184039101526116dc565b909192958480611765600193605f198d82030186528a516104fd565b98019201920190929161172d565b346101725760406003198181360112610172576001600160401b03600435818111610172576117a690369060040161074f565b60243590828211610172576000926117c56117f3933690600401611419565b946117ce6128fd565b506080808851978896879663186b216760e01b88528b600489015260448801906103b7565b9386850301602487015261181861180a8280611d51565b60a0875260a0870191611d82565b9480602083013561182881611b07565b1660208601528a82013561183b81611b07565b168a850152606081013561184e81611b23565b15156060850152013561186081611b23565b151591015203816108005afa9182156106c457600091829361188c575b5061069b905192839283611705565b6118ad91935061069b923d8091833e6118a581836102cd565b81019061298d565b92909161187d565b3461017257600319606036820112610172576001600160401b0390600435828111610172576118e890369060040161074f565b916024359081116101725761190190369060040161074f565b61194f6020604435936119148587612377565b604051809381926354b826f560e01b83523060048401526080602484015261193f608484018a6103b7565b90838203016044840152866103b7565b866064830152038160006108005af19081156106c457610b9794611985600061198b9487948291611991575b5060070b13612419565b3361245c565b33611f79565b6119a9915060203d8111610d9057610d8181836102cd565b3861197b565b6119b836611178565b6119c0612075565b6040516353266bbb60e01b815290602082806119e134853060048501611eeb565b038160006108005af19182156106c457611a0692610e6291600091610e6d5750611f15565b60025460018101809111611a1957600255005b611f53565b3461017257611a566000611a3136610e9b565b90611a3a6128fd565b5060405163120bba7360e11b8152938492839260048401612a97565b03816108005afa9081156106c4576000908192611a7e575b5061069b604051928392836107c0565b90611a9b92503d8091833e611a9381836102cd565b810190612a37565b9038611a6e565b90611ab560209282815194859201610394565b0190565b34610172576020611af581611acd36610e9b565b9060018060a01b03166000526000825260406000208260405194838680955193849201610394565b82019081520301902054604051908152f35b6001600160401b0381160361017257565b359061032c82611b07565b8015150361017257565b359061032c82611b23565b92916040918285018386528151809152606086019060608160051b88010194602080940192600091825b848410611b8057505050505050936104fa93948184039101526116dc565b9091929394978690605f198c8203018552895182611ba5825187855287850190611274565b910151918381830391015282808351928381520192019084905b808210611bde5750505090806001929a01940194019294939190611b62565b919360a060019294828751611c1883825160608091805160070b8452602081015160070b6020850152604081015160408501520151910152565b01516080820152019401920189939291611bbf565b346101725760031960803682011261017257611c4761015c565b6001600160401b039060243582811161017257611c6890369060040161074f565b60443583811161017257611c8090369060040161074f565b91606435948486116101725760a09086360301126101725760405193611ca585610246565b85600401359081116101725785019436602387011215610172576084611d1791611cdc611d21983690602460048201359101610718565b8752611cea60248201611b18565b6020880152611cfb60448201611b18565b6040880152611d0c60648201611b2d565b606088015201611b2d565b6080850152612dc6565b9061069b60405192839283611b38565b519061032c82611b23565b9081602091031261017257516104fa81611b23565b9035601e19823603018112156101725701602081359101916001600160401b03821161017257813603831361017257565b908060209392818452848401376000828201840152601f01601f1916010190565b6104fa91611e2a611e1f611e04611de9611dce611dc08780611d51565b60a0885260a0880191611d82565b611ddb6020880188611d51565b908783036020890152611d82565b611df66040870187611d51565b908683036040880152611d82565b611e116060860186611d51565b908583036060870152611d82565b926080810190611d51565b916080818503910152611d82565b6040513d6000823e3d90fd5b9093611eb2611e7693956020956040519788968796637be6aa8b60e11b88526101006004890152610104880190611da3565b92602435602488015260443560448801526064356064880152608487015260018060a01b031660a48601526003198583030160c48601526103b7565b9060e4830152038160006108005af19081156106c457600091611ed3575090565b6104fa915060203d8111610e9457610e8681836102cd565b939291611f109060409260018060a01b031686526060602087015260608601906103b7565b930152565b15611f1c57565b60405162461bcd60e51b815260206004820152600f60248201526e19195b1959d85d194819985a5b1959608a1b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90621baf808201809211611a1957565b611fa79160209160018060a01b03166000526000825260406000208260405194838680955193849201610394565b8201908152030190208054918201809211611a195755565b6000198114611a195760010190565b818110611fd9575050565b60008155600101611fce565b634e487b7160e01b600052600060045260246000fd5b906120635760038161200f600093546101d5565b80612026575b508260018201558260028201550155565b601f811160011461203c57508281555b38612015565b839082825261205a601f60208420920160051c820160018301611fce565b81835555612036565b611fe5565b91908203918211611a1957565b60005b336000526001602090808252604091826000208054851015612197578461209e916101a3565b509142600384015460070b11156120c2575b505050506120bd90611fbf565b612078565b3360009081526001602052604090206120e6906120e09087906101a3565b90611ffb565b828101543360009081526020819052604090209094519360009281549161210c836101d5565b9282811690811561217c5750600114612146575b505050815282900301902080546120bd939261213b91612068565b9055903880806120b0565b600090815285812093945091925b83831061216b5750505083019083816120bd612120565b805487840152918501918101612154565b60ff19168852505050801515028401915083816120bd612120565b5050505050565b51908160070b820361017257565b90816020910312610172576104fa9061219e565b9190601f81116121cf57505050565b61032c926000526020600020906020601f840160051c830193106121fb575b601f0160051c0190611fce565b90915081906121ee565b91903360005260016020918183526040600020926040519561222687610297565b86528086019182526040860193438552606087019560070b86528054600160401b8110156102415761225c9185820181556101a3565b9690966120635751908151916001600160401b0383116102415761228a836122848a546101d5565b8a6121c0565b81601f84116001146122fd57509282600396936122d4969361032c9a99966000926122f2575b505060001982891b1c191690831b1787555b51908601555160028501555160070b90565b9101906001600160401b0319825416906001600160401b0316179055565b0151905038806122b0565b9190601f1984166123138a600052602060002090565b936000905b82821061236057505093869361032c9a9996936122d498938360039b9810612348575b505050811b0187556122c2565b0151600019838b1b60f8161c1916905538808061233b565b808986978294978701518155019601940190612318565b602061239d91336000526000825260406000208260405194838680955193849201610394565b82019081520301902054106123ae57565b60405162461bcd60e51b815260206004820152603b60248201527f44656c65676174696f6e20646f6573206e6f74206578697374206f7220696e7360448201527f756666696369656e742064656c65676174696f6e20616d6f756e7400000000006064820152608490fd5b1561242057565b60405162461bcd60e51b81526020600482015260146024820152734661696c656420746f20726564656c656761746560601b6044820152606490fd5b9060018060a01b0382166000526000602052604060002091836040516020818551968287019761248d81848b610394565b82019081520301902054106124e5576001600160a01b03166000908152602081815260409091206124e1936124d093909190604051948593849251928391610394565b820190815203019020918254612068565b9055565b60405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742064656c65676174696f6e20616d6f756e7400006044820152606490fd5b6001600160a01b03909116815260806020820181905292949392606092612553918301906103b7565b9460408201520152565b1561256457565b60405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f2063616e63656c20756e626f6e64696e670000000000006044820152606490fd5b3360005260019160209083825260408481600020946000965b6125d0575b50505050505050565b8554871015612693576125e387876101a3565b509080600283015403612681575001928354918383106126305750509061260991612068565b8091551561261c575b80808080806125c7565b612629916120e0916101a3565b3880612612565b60849250519062461bcd60e51b82526004820152602560248201527f616d6f756e74206578636565647320756e626f6e64696e6720656e74727920616044820152641b5bdd5b9d60da1b6064820152fd5b905061268d8297611fbf565b966125c2565b6125c7565b1561269f57565b60405162461bcd60e51b815260206004820152602360248201527f556e626f6e64696e672064656c65676174696f6e20646f6573206e6f742065786044820152621a5cdd60ea1b6064820152608490fd5b909291926126fd816106fd565b9161270b60405193846102cd565b82948284528282011161017257602061032c930190610394565b9080601f830112156101725781516104fa926020016126f0565b5190600482101561017257565b91909160a081840312610172576127616106d6565b9281516001600160401b03908181116101725782612780918501612725565b85526020830151818111610172578261279a918501612725565b6020860152604083015181811161017257826127b7918501612725565b6040860152606083015181811161017257826127d4918501612725565b60608601526080830151908111610172576127ef9201612725565b6080830152565b919091610160818403126101725761280c6106e3565b928151906001600160401b0391828111610172578161282c918501612725565b855260208301518281116101725781612846918501612725565b602086015261285760408401611d31565b60408601526128686060840161273f565b60608601526080830151608086015260a083015160a086015260c08301519182116101725761289891830161274c565b60c08401526128a960e0820161219e565b60e08401526101006128bc81830161219e565b9084015261012080820151908401526101408091015190830152565b906020828203126101725781516001600160401b038111610172576104fa92016127f6565b6040519061290a826102b2565b6000602083606081520152565b6001600160401b0381116102415760051b60200190565b9190916040818403126101725760405190612948826102b2565b819381516001600160401b0381116101725782019181601f840112156101725761297b60209392838580955191016126f0565b845201519161298983611b07565b0152565b919091604081840312610172578051926001600160401b03938481116101725782019381601f860112156101725784516129c681612917565b906129d460405192836102cd565b808252602096878084019260051b8201019185831161017257888201905b838210612a12575050505094830151908111610172576104fa920161292e565b8151868111610172578a91612a2c898480948801016127f6565b8152019101906129f2565b9190916040818403126101725780519260208201516001600160401b039283821161017257016040818303126101725760405192612a74846102b2565b815190811161017257602092612a8b918301612725565b83520151602082015290565b6001600160a01b0390911681526040602082018190526104fa929101906103b7565b919082608091031261017257604051612ad181610297565b6060808294612adf8161219e565b8452612aed6020820161219e565b6020850152604081015160408501520151910152565b81601f8201121561017257805191612b1a83612917565b92612b2860405194856102cd565b808452602091828086019260071b85010193818511610172578301915b848310612b5457505050505090565b83608091612b628486612ab9565b815201920191612b45565b91909160808184031261017257612b826106f0565b9281516001600160401b03908181116101725782612ba1918501612725565b855260208301518181116101725782612bbb918501612725565b602086015260408301518181116101725782612bd8918501612725565b6040860152606083015190811161017257612bf39201612b03565b6060830152565b906020828203126101725781516001600160401b038111610172576104fa9201612b6d565b919091604080828503126101725781516001600160401b0381116101725784601f828501011215610172578083015190612c5882612917565b92612c65815194856102cd565b82845260208401918760208560051b83890101011161017257602081870101925b60208560051b83890101018410612cba5750505050509260208201516001600160401b038111610172576104fa920161292e565b83516001600160401b038111610172578288010183601f19828c03011261017257835190612ce7826102b2565b60208101516001600160401b038111610172578b6020612d0992840101612b6d565b825284810151906001600160401b03821161017257018a603f82011215610172576020810151612d3881612917565b91612d45875193846102cd565b818352602083018d8860a085028401011161017257818801908e5b8960a086028501018310612d895750505050506020828101919091529082529384019301612c86565b8260a09103126101725760208f9160a092612daf8c5191612da9836102b2565b86612ab9565b81526080850151838201528152019101908e612d60565b612e109493600093612dd66128fd565b50604051630428a14760e21b81526001600160a01b0390931660048401526080602484015291958693849391612e239160848601906103b7565b60031992838683030160448701526103b7565b90838203016064840152608080612e43845160a0855260a08501906103b7565b936001600160401b0380602083015116602086015260408201511660408501526060810151151560608501520151151591015203816108005afa9182156106c4576000908193612e9257509190565b90612eb09293503d8091833e612ea881836102cd565b810190612c1f565b9091565b60609060208152601060208201526f696e76616c69642063616c6c7479706560801b60408201520190565b3d15612f0a573d90612ef0826106fd565b91612efe60405193846102cd565b82523d6000602084013e565b606090565b15612f1657565b60405162461bcd60e51b81526020600482015260196024820152786661696c65642063616c6c20746f20707265636f6d70696c6560381b6044820152606490fd5b15612f5e57565b60405162461bcd60e51b815260206004820152601f60248201527f6661696c65642073746174696363616c6c20746f20707265636f6d70696c65006044820152606490fd5b15612faa57565b60405162461bcd60e51b815260206004820152602160248201527f6661696c65642064656c656761746563616c6c20746f20707265636f6d70696c6044820152606560f81b6064820152608490fd5b60405190613006826102b2565b601a82527f64656c65676174696f6e28616464726573732c737472696e67290000000000006020830152565b1561303957565b60405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606490fdfea2646970667358221220d1e8c1d6b1ef8b01471c4ab06fb8583615d477c90c9b7811388bad4cc56ef39d64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/staking/testdata/StakingCallerTwo.json b/precompiles/staking/testdata/StakingCallerTwo.json index 4a8a25002..fca2c09b9 100644 --- a/precompiles/staking/testdata/StakingCallerTwo.json +++ b/precompiles/staking/testdata/StakingCallerTwo.json @@ -184,8 +184,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506114cd806100206000396000f3fe60806040526004361061004a5760003560e01c8063241774e61461004f57806361bc221a1461008c57806366dafc7a146100b7578063b9a6bbca146100d3578063c5b75f01146100ef575b600080fd5b34801561005b57600080fd5b5061007660048036038101906100719190610b20565b61010b565b6040516100839190610b95565b60405180910390f35b34801561009857600080fd5b506100a1610146565b6040516100ae9190610b95565b60405180910390f35b6100d160048036038101906100cc9190610c26565b61014c565b005b6100ed60048036038101906100e89190610d2c565b610424565b005b61010960048036038101906101049190610e08565b610692565b005b600160205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b60005481565b81156102185760008081548092919061016490610ea6565b919050555060008573ffffffffffffffffffffffffffffffffffffffff16600f60405161019090610f1f565b60006040518083038185875af1925050503d80600081146101cd576040519150601f19603f3d011682016040523d82523d6000602084013e6101d2565b606091505b5050905080610216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020d90610fb7565b60405180910390fd5b505b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3086346040518463ffffffff1660e01b815260040161025993929190611054565b6020604051808303816000875af1158015610278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029c91906110a7565b9050806102de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d590611120565b60405180910390fd5b34600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560405161032c919061117c565b908152602001604051809103902060008282546103499190611193565b92505081905550811561041c5760008081548092919061036890610ea6565b919050555060008673ffffffffffffffffffffffffffffffffffffffff16600f60405161039490610f1f565b60006040518083038185875af1925050503d80600081146103d1576040519150601f19603f3d011682016040523d82523d6000602084013e6103d6565b606091505b505090508061041a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041190610fb7565b60405180910390fd5b505b505050505050565b81156104f05760008081548092919061043c90610ea6565b919050555060008473ffffffffffffffffffffffffffffffffffffffff16600f60405161046890610f1f565b60006040518083038185875af1925050503d80600081146104a5576040519150601f19603f3d011682016040523d82523d6000602084013e6104aa565b606091505b50509050806104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e590610fb7565b60405180910390fd5b505b600061080073ffffffffffffffffffffffffffffffffffffffff1663f7cd55168989898989346040518763ffffffff1660e01b8152600401610537969594939291906113bb565b6020604051808303816000875af1158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a91906110a7565b9050806105bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b390611477565b60405180910390fd5b8115610688576000808154809291906105d490610ea6565b919050555060008573ffffffffffffffffffffffffffffffffffffffff16600f60405161060090610f1f565b60006040518083038185875af1925050503d806000811461063d576040519150601f19603f3d011682016040523d82523d6000602084013e610642565b606091505b5050905080610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d90610fb7565b60405180910390fd5b505b5050505050505050565b811561075e576000808154809291906106aa90610ea6565b919050555060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516106d690610f1f565b60006040518083038185875af1925050503d8060008114610713576040519150601f19603f3d011682016040523d82523d6000602084013e610718565b606091505b505090508061075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075390610fb7565b60405180910390fd5b505b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3086346040518463ffffffff1660e01b815260040161079f93929190611054565b6020604051808303816000875af11580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e291906110a7565b905080610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90611120565b60405180910390fd5b34600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085604051610872919061117c565b9081526020016040518091039020600082825461088f9190611193565b925050819055508115610962576000808154809291906108ae90610ea6565b919050555060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516108da90610f1f565b60006040518083038185875af1925050503d8060008114610917576040519150601f19603f3d011682016040523d82523d6000602084013e61091c565b606091505b5050905080610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790610fb7565b60405180910390fd5b505b50505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109a78261097c565b9050919050565b6109b78161099c565b81146109c257600080fd5b50565b6000813590506109d4816109ae565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a2d826109e4565b810181811067ffffffffffffffff82111715610a4c57610a4b6109f5565b5b80604052505050565b6000610a5f610968565b9050610a6b8282610a24565b919050565b600067ffffffffffffffff821115610a8b57610a8a6109f5565b5b610a94826109e4565b9050602081019050919050565b82818337600083830152505050565b6000610ac3610abe84610a70565b610a55565b905082815260208101848484011115610adf57610ade6109df565b5b610aea848285610aa1565b509392505050565b600082601f830112610b0757610b066109da565b5b8135610b17848260208601610ab0565b91505092915050565b60008060408385031215610b3757610b36610972565b5b6000610b45858286016109c5565b925050602083013567ffffffffffffffff811115610b6657610b65610977565b5b610b7285828601610af2565b9150509250929050565b6000819050919050565b610b8f81610b7c565b82525050565b6000602082019050610baa6000830184610b86565b92915050565b6000610bbb8261097c565b9050919050565b610bcb81610bb0565b8114610bd657600080fd5b50565b600081359050610be881610bc2565b92915050565b60008115159050919050565b610c0381610bee565b8114610c0e57600080fd5b50565b600081359050610c2081610bfa565b92915050565b600080600080600060a08688031215610c4257610c41610972565b5b6000610c5088828901610bd9565b9550506020610c6188828901610bd9565b945050604086013567ffffffffffffffff811115610c8257610c81610977565b5b610c8e88828901610af2565b9350506060610c9f88828901610c11565b9250506080610cb088828901610c11565b9150509295509295909350565b600080fd5b600060a08284031215610cd857610cd7610cbd565b5b81905092915050565b600060608284031215610cf757610cf6610cbd565b5b81905092915050565b610d0981610b7c565b8114610d1457600080fd5b50565b600081359050610d2681610d00565b92915050565b6000806000806000806000610120888a031215610d4c57610d4b610972565b5b600088013567ffffffffffffffff811115610d6a57610d69610977565b5b610d768a828b01610cc2565b9750506020610d878a828b01610ce1565b9650506080610d988a828b01610d17565b95505060a0610da98a828b016109c5565b94505060c088013567ffffffffffffffff811115610dca57610dc9610977565b5b610dd68a828b01610af2565b93505060e0610de78a828b01610c11565b925050610100610df98a828b01610c11565b91505092959891949750929550565b600080600060608486031215610e2157610e20610972565b5b600084013567ffffffffffffffff811115610e3f57610e3e610977565b5b610e4b86828701610af2565b9350506020610e5c86828701610c11565b9250506040610e6d86828701610c11565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610eb182610b7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ee357610ee2610e77565b5b600182019050919050565b600081905092915050565b50565b6000610f09600083610eee565b9150610f1482610ef9565b600082019050919050565b6000610f2a82610efc565b9150819050919050565b600082825260208201905092915050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602183610f34565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b610fe08161099c565b82525050565b600081519050919050565b60005b8381101561100f578082015181840152602081019050610ff4565b60008484015250505050565b600061102682610fe6565b6110308185610f34565b9350611040818560208601610ff1565b611049816109e4565b840191505092915050565b60006060820190506110696000830186610fd7565b818103602083015261107b818561101b565b905061108a6040830184610b86565b949350505050565b6000815190506110a181610bfa565b92915050565b6000602082840312156110bd576110bc610972565b5b60006110cb84828501611092565b91505092915050565b7f4661696c656420746f2064656c65676174650000000000000000000000000000600082015250565b600061110a601283610f34565b9150611115826110d4565b602082019050919050565b60006020820190508181036000830152611139816110fd565b9050919050565b600081905092915050565b600061115682610fe6565b6111608185611140565b9350611170818560208601610ff1565b80840191505092915050565b6000611188828461114b565b915081905092915050565b600061119e82610b7c565b91506111a983610b7c565b92508282019050808211156111c1576111c0610e77565b5b92915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126111f3576111f26111d1565b5b83810192508235915060208301925067ffffffffffffffff82111561121b5761121a6111c7565b5b600182023603831315611231576112306111cc565b5b509250929050565b600082825260208201905092915050565b60006112568385611239565b9350611263838584610aa1565b61126c836109e4565b840190509392505050565b600060a0830161128a60008401846111d6565b858303600087015261129d83828461124a565b925050506112ae60208401846111d6565b85830360208701526112c183828461124a565b925050506112d260408401846111d6565b85830360408701526112e583828461124a565b925050506112f660608401846111d6565b858303606087015261130983828461124a565b9250505061131a60808401846111d6565b858303608087015261132d83828461124a565b925050508091505092915050565b600061134a6020840184610d17565b905092915050565b61135b81610b7c565b82525050565b60608201611372600083018361133b565b61137f6000850182611352565b5061138d602083018361133b565b61139a6020850182611352565b506113a8604083018361133b565b6113b56040850182611352565b50505050565b60006101008201905081810360008301526113d68189611277565b90506113e56020830188611361565b6113f26080830187610b86565b6113ff60a0830186610fd7565b81810360c0830152611411818561101b565b905061142060e0830184610b86565b979650505050505050565b7f4661696c656420746f20637265617465207468652076616c696461746f720000600082015250565b6000611461601e83610f34565b915061146c8261142b565b602082019050919050565b6000602082019050818103600083015261149081611454565b905091905056fea2646970667358221220ba281daeb3b6294d17efaafa41f7036e33d1abdff69b8d2c729b3f73bd26e73b64736f6c63430008140033", - "deployedBytecode": "0x60806040526004361061004a5760003560e01c8063241774e61461004f57806361bc221a1461008c57806366dafc7a146100b7578063b9a6bbca146100d3578063c5b75f01146100ef575b600080fd5b34801561005b57600080fd5b5061007660048036038101906100719190610b20565b61010b565b6040516100839190610b95565b60405180910390f35b34801561009857600080fd5b506100a1610146565b6040516100ae9190610b95565b60405180910390f35b6100d160048036038101906100cc9190610c26565b61014c565b005b6100ed60048036038101906100e89190610d2c565b610424565b005b61010960048036038101906101049190610e08565b610692565b005b600160205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b60005481565b81156102185760008081548092919061016490610ea6565b919050555060008573ffffffffffffffffffffffffffffffffffffffff16600f60405161019090610f1f565b60006040518083038185875af1925050503d80600081146101cd576040519150601f19603f3d011682016040523d82523d6000602084013e6101d2565b606091505b5050905080610216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020d90610fb7565b60405180910390fd5b505b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3086346040518463ffffffff1660e01b815260040161025993929190611054565b6020604051808303816000875af1158015610278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029c91906110a7565b9050806102de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d590611120565b60405180910390fd5b34600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560405161032c919061117c565b908152602001604051809103902060008282546103499190611193565b92505081905550811561041c5760008081548092919061036890610ea6565b919050555060008673ffffffffffffffffffffffffffffffffffffffff16600f60405161039490610f1f565b60006040518083038185875af1925050503d80600081146103d1576040519150601f19603f3d011682016040523d82523d6000602084013e6103d6565b606091505b505090508061041a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041190610fb7565b60405180910390fd5b505b505050505050565b81156104f05760008081548092919061043c90610ea6565b919050555060008473ffffffffffffffffffffffffffffffffffffffff16600f60405161046890610f1f565b60006040518083038185875af1925050503d80600081146104a5576040519150601f19603f3d011682016040523d82523d6000602084013e6104aa565b606091505b50509050806104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e590610fb7565b60405180910390fd5b505b600061080073ffffffffffffffffffffffffffffffffffffffff1663f7cd55168989898989346040518763ffffffff1660e01b8152600401610537969594939291906113bb565b6020604051808303816000875af1158015610556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a91906110a7565b9050806105bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b390611477565b60405180910390fd5b8115610688576000808154809291906105d490610ea6565b919050555060008573ffffffffffffffffffffffffffffffffffffffff16600f60405161060090610f1f565b60006040518083038185875af1925050503d806000811461063d576040519150601f19603f3d011682016040523d82523d6000602084013e610642565b606091505b5050905080610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d90610fb7565b60405180910390fd5b505b5050505050505050565b811561075e576000808154809291906106aa90610ea6565b919050555060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516106d690610f1f565b60006040518083038185875af1925050503d8060008114610713576040519150601f19603f3d011682016040523d82523d6000602084013e610718565b606091505b505090508061075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075390610fb7565b60405180910390fd5b505b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3086346040518463ffffffff1660e01b815260040161079f93929190611054565b6020604051808303816000875af11580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e291906110a7565b905080610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90611120565b60405180910390fd5b34600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085604051610872919061117c565b9081526020016040518091039020600082825461088f9190611193565b925050819055508115610962576000808154809291906108ae90610ea6565b919050555060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516108da90610f1f565b60006040518083038185875af1925050503d8060008114610917576040519150601f19603f3d011682016040523d82523d6000602084013e61091c565b606091505b5050905080610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790610fb7565b60405180910390fd5b505b50505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109a78261097c565b9050919050565b6109b78161099c565b81146109c257600080fd5b50565b6000813590506109d4816109ae565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610a2d826109e4565b810181811067ffffffffffffffff82111715610a4c57610a4b6109f5565b5b80604052505050565b6000610a5f610968565b9050610a6b8282610a24565b919050565b600067ffffffffffffffff821115610a8b57610a8a6109f5565b5b610a94826109e4565b9050602081019050919050565b82818337600083830152505050565b6000610ac3610abe84610a70565b610a55565b905082815260208101848484011115610adf57610ade6109df565b5b610aea848285610aa1565b509392505050565b600082601f830112610b0757610b066109da565b5b8135610b17848260208601610ab0565b91505092915050565b60008060408385031215610b3757610b36610972565b5b6000610b45858286016109c5565b925050602083013567ffffffffffffffff811115610b6657610b65610977565b5b610b7285828601610af2565b9150509250929050565b6000819050919050565b610b8f81610b7c565b82525050565b6000602082019050610baa6000830184610b86565b92915050565b6000610bbb8261097c565b9050919050565b610bcb81610bb0565b8114610bd657600080fd5b50565b600081359050610be881610bc2565b92915050565b60008115159050919050565b610c0381610bee565b8114610c0e57600080fd5b50565b600081359050610c2081610bfa565b92915050565b600080600080600060a08688031215610c4257610c41610972565b5b6000610c5088828901610bd9565b9550506020610c6188828901610bd9565b945050604086013567ffffffffffffffff811115610c8257610c81610977565b5b610c8e88828901610af2565b9350506060610c9f88828901610c11565b9250506080610cb088828901610c11565b9150509295509295909350565b600080fd5b600060a08284031215610cd857610cd7610cbd565b5b81905092915050565b600060608284031215610cf757610cf6610cbd565b5b81905092915050565b610d0981610b7c565b8114610d1457600080fd5b50565b600081359050610d2681610d00565b92915050565b6000806000806000806000610120888a031215610d4c57610d4b610972565b5b600088013567ffffffffffffffff811115610d6a57610d69610977565b5b610d768a828b01610cc2565b9750506020610d878a828b01610ce1565b9650506080610d988a828b01610d17565b95505060a0610da98a828b016109c5565b94505060c088013567ffffffffffffffff811115610dca57610dc9610977565b5b610dd68a828b01610af2565b93505060e0610de78a828b01610c11565b925050610100610df98a828b01610c11565b91505092959891949750929550565b600080600060608486031215610e2157610e20610972565b5b600084013567ffffffffffffffff811115610e3f57610e3e610977565b5b610e4b86828701610af2565b9350506020610e5c86828701610c11565b9250506040610e6d86828701610c11565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610eb182610b7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ee357610ee2610e77565b5b600182019050919050565b600081905092915050565b50565b6000610f09600083610eee565b9150610f1482610ef9565b600082019050919050565b6000610f2a82610efc565b9150819050919050565b600082825260208201905092915050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602183610f34565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b610fe08161099c565b82525050565b600081519050919050565b60005b8381101561100f578082015181840152602081019050610ff4565b60008484015250505050565b600061102682610fe6565b6110308185610f34565b9350611040818560208601610ff1565b611049816109e4565b840191505092915050565b60006060820190506110696000830186610fd7565b818103602083015261107b818561101b565b905061108a6040830184610b86565b949350505050565b6000815190506110a181610bfa565b92915050565b6000602082840312156110bd576110bc610972565b5b60006110cb84828501611092565b91505092915050565b7f4661696c656420746f2064656c65676174650000000000000000000000000000600082015250565b600061110a601283610f34565b9150611115826110d4565b602082019050919050565b60006020820190508181036000830152611139816110fd565b9050919050565b600081905092915050565b600061115682610fe6565b6111608185611140565b9350611170818560208601610ff1565b80840191505092915050565b6000611188828461114b565b915081905092915050565b600061119e82610b7c565b91506111a983610b7c565b92508282019050808211156111c1576111c0610e77565b5b92915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126111f3576111f26111d1565b5b83810192508235915060208301925067ffffffffffffffff82111561121b5761121a6111c7565b5b600182023603831315611231576112306111cc565b5b509250929050565b600082825260208201905092915050565b60006112568385611239565b9350611263838584610aa1565b61126c836109e4565b840190509392505050565b600060a0830161128a60008401846111d6565b858303600087015261129d83828461124a565b925050506112ae60208401846111d6565b85830360208701526112c183828461124a565b925050506112d260408401846111d6565b85830360408701526112e583828461124a565b925050506112f660608401846111d6565b858303606087015261130983828461124a565b9250505061131a60808401846111d6565b858303608087015261132d83828461124a565b925050508091505092915050565b600061134a6020840184610d17565b905092915050565b61135b81610b7c565b82525050565b60608201611372600083018361133b565b61137f6000850182611352565b5061138d602083018361133b565b61139a6020850182611352565b506113a8604083018361133b565b6113b56040850182611352565b50505050565b60006101008201905081810360008301526113d68189611277565b90506113e56020830188611361565b6113f26080830187610b86565b6113ff60a0830186610fd7565b81810360c0830152611411818561101b565b905061142060e0830184610b86565b979650505050505050565b7f4661696c656420746f20637265617465207468652076616c696461746f720000600082015250565b6000611461601e83610f34565b915061146c8261142b565b602082019050919050565b6000602082019050818103600083015261149081611454565b905091905056fea2646970667358221220ba281daeb3b6294d17efaafa41f7036e33d1abdff69b8d2c729b3f73bd26e73b64736f6c63430008140033", + "bytecode": "0x60808060405234610016576108e6908161001c8239f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c8063241774e6146105b057806361bc221a146105935783816366dafc7a1461042e57508063b9a6bbca146101ba5763c5b75f011461005a57600080fd5b60603660031901126101b65780356001600160401b0381116101b2576100839036908301610694565b6024359081151582036101ae576044359283151584036101aa576100c692610185575b8451906353266bbb60e01b825281806020958693863491309085016107e6565b0381896108005af190811561017b576101089495916100ec91889161014e575b50610810565b33865260018352828187209151948386809551938492016106db565b82019081520301902061011c348254610851565b90556101255780f35b61012f81546106fe565b815561014b81808080600f335af1610145610723565b50610753565b80f35b61016e9150853d8711610174575b6101668183610642565b8101906107a9565b386100e6565b503d61015c565b85513d88823e3d90fd5b61018f86546106fe565b86556101a586808080600f335af1610145610723565b6100a6565b8580fd5b8480fd5b8380fd5b8280fd5b506003199190610120368401126101b2576001600160401b039181358381116101aa57858184019160a087823603011261042a57606036602319011261042a5760a435966001600160a01b038816968789036101b25760c4359081116101b2576102279036908801610694565b60e4359788151589036101ae57610104928335998a15158b0361042657868c9161040c575b50508751637be6aa8b60e11b81526101008a8201529687958695610270838061085e565b9091880160a090526101a48801906102879261088f565b91610295602483018261085e565b936101031994858a8303016101248b01526102af9261088f565b6102bc604484018361085e565b89830386016101448b01526102d1929161088f565b6102de606484018361085e565b89830386016101648b01526102f3929161088f565b916084016103009161085e565b9092878303016101848801526103159261088f565b91602435602486015260443560448601526064356064860152608435608486015260a48501528382030160c484015261034d916107c1565b3460e483015203815a93610800602095f19081156104025786916103e4575b50156103a1575050829061037d5780f35b808080600f61039c9561039083546106fe565b83555af1610145610723565b388180f35b906020606492519162461bcd60e51b8352820152601e60248201527f4661696c656420746f20637265617465207468652076616c696461746f7200006044820152fd5b6103fc915060203d8111610174576101668183610642565b3861036c565b82513d88823e3d90fd5b808080600f61041f9561039083546106fe565b8a8661024c565b8680fd5b5080fd5b82818560a036600319011261042a57610445610627565b926001600160a01b039160243583811691908290036101ae576044356001600160401b0381116101aa5761047c9036908501610694565b906064359283151584036104265760843594851515860361058f578888886104c697610573575b5050508251906353266bbb60e01b825281806020978893883491309085016107e6565b03818b6108005af19081156105695761050895949392916104ed918a9161054c5750610810565b875260018352828188209151948386809551938492016106db565b82019081520301902061051c348254610851565b9055610526575080f35b8180600f81936105479661053a84546106fe565b8455165af1610145610723565b818180f35b6105639150863d8811610174576101668183610642565b8c6100e6565b83513d8a823e3d90fd5b8180600f81936105879661053a84546106fe565b8888886104a3565b8780fd5b50503461042a578160031936011261042a57602091549051908152f35b50346101b657816003193601126101b6576105c9610627565b906024356001600160401b0381116101ae5791836020956105f1879461061696369101610694565b6001600160a01b039093168152600184522084518251909485938290859087016106db565b820190815203019020549051908152f35b600435906001600160a01b038216820361063d57565b600080fd5b90601f801991011681019081106001600160401b0382111761066357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161066357601f01601f191660200190565b81601f8201121561063d578035906106ab82610679565b926106b96040519485610642565b8284526020838301011161063d57816000926020809301838601378301015290565b60005b8381106106ee5750506000910152565b81810151838201526020016106de565b600019811461070d5760010190565b634e487b7160e01b600052601160045260246000fd5b3d1561074e573d9061073482610679565b916107426040519384610642565b82523d6000602084013e565b606090565b1561075a57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fd5b9081602091031261063d5751801515810361063d5790565b906020916107da815180928185528580860191016106db565b601f01601f1916010190565b93929161080b9060409260018060a01b031686526060602087015260608601906107c1565b930152565b1561081757565b60405162461bcd60e51b81526020600482015260126024820152714661696c656420746f2064656c656761746560701b6044820152606490fd5b9190820180921161070d57565b9035601e198236030181121561063d5701602081359101916001600160401b03821161063d57813603831361063d57565b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220350184501da67e3a98092e2f26eaf00d4ee07508f6998e67fcb8e6a420f1682264736f6c63430008140033", + "deployedBytecode": "0x6040608081526004908136101561001557600080fd5b600091823560e01c8063241774e6146105b057806361bc221a146105935783816366dafc7a1461042e57508063b9a6bbca146101ba5763c5b75f011461005a57600080fd5b60603660031901126101b65780356001600160401b0381116101b2576100839036908301610694565b6024359081151582036101ae576044359283151584036101aa576100c692610185575b8451906353266bbb60e01b825281806020958693863491309085016107e6565b0381896108005af190811561017b576101089495916100ec91889161014e575b50610810565b33865260018352828187209151948386809551938492016106db565b82019081520301902061011c348254610851565b90556101255780f35b61012f81546106fe565b815561014b81808080600f335af1610145610723565b50610753565b80f35b61016e9150853d8711610174575b6101668183610642565b8101906107a9565b386100e6565b503d61015c565b85513d88823e3d90fd5b61018f86546106fe565b86556101a586808080600f335af1610145610723565b6100a6565b8580fd5b8480fd5b8380fd5b8280fd5b506003199190610120368401126101b2576001600160401b039181358381116101aa57858184019160a087823603011261042a57606036602319011261042a5760a435966001600160a01b038816968789036101b25760c4359081116101b2576102279036908801610694565b60e4359788151589036101ae57610104928335998a15158b0361042657868c9161040c575b50508751637be6aa8b60e11b81526101008a8201529687958695610270838061085e565b9091880160a090526101a48801906102879261088f565b91610295602483018261085e565b936101031994858a8303016101248b01526102af9261088f565b6102bc604484018361085e565b89830386016101448b01526102d1929161088f565b6102de606484018361085e565b89830386016101648b01526102f3929161088f565b916084016103009161085e565b9092878303016101848801526103159261088f565b91602435602486015260443560448601526064356064860152608435608486015260a48501528382030160c484015261034d916107c1565b3460e483015203815a93610800602095f19081156104025786916103e4575b50156103a1575050829061037d5780f35b808080600f61039c9561039083546106fe565b83555af1610145610723565b388180f35b906020606492519162461bcd60e51b8352820152601e60248201527f4661696c656420746f20637265617465207468652076616c696461746f7200006044820152fd5b6103fc915060203d8111610174576101668183610642565b3861036c565b82513d88823e3d90fd5b808080600f61041f9561039083546106fe565b8a8661024c565b8680fd5b5080fd5b82818560a036600319011261042a57610445610627565b926001600160a01b039160243583811691908290036101ae576044356001600160401b0381116101aa5761047c9036908501610694565b906064359283151584036104265760843594851515860361058f578888886104c697610573575b5050508251906353266bbb60e01b825281806020978893883491309085016107e6565b03818b6108005af19081156105695761050895949392916104ed918a9161054c5750610810565b875260018352828188209151948386809551938492016106db565b82019081520301902061051c348254610851565b9055610526575080f35b8180600f81936105479661053a84546106fe565b8455165af1610145610723565b818180f35b6105639150863d8811610174576101668183610642565b8c6100e6565b83513d8a823e3d90fd5b8180600f81936105879661053a84546106fe565b8888886104a3565b8780fd5b50503461042a578160031936011261042a57602091549051908152f35b50346101b657816003193601126101b6576105c9610627565b906024356001600160401b0381116101ae5791836020956105f1879461061696369101610694565b6001600160a01b039093168152600184522084518251909485938290859087016106db565b820190815203019020549051908152f35b600435906001600160a01b038216820361063d57565b600080fd5b90601f801991011681019081106001600160401b0382111761066357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161066357601f01601f191660200190565b81601f8201121561063d578035906106ab82610679565b926106b96040519485610642565b8284526020838301011161063d57816000926020809301838601378301015290565b60005b8381106106ee5750506000910152565b81810151838201526020016106de565b600019811461070d5760010190565b634e487b7160e01b600052601160045260246000fd5b3d1561074e573d9061073482610679565b916107426040519384610642565b82523d6000602084013e565b606090565b1561075a57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fd5b9081602091031261063d5751801515810361063d5790565b906020916107da815180928185528580860191016106db565b601f01601f1916010190565b93929161080b9060409260018060a01b031686526060602087015260608601906107c1565b930152565b1561081757565b60405162461bcd60e51b81526020600482015260126024820152714661696c656420746f2064656c656761746560701b6044820152606490fd5b9190820180921161070d57565b9035601e198236030181121561063d5701602081359101916001600160401b03821161063d57813603831361063d57565b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220350184501da67e3a98092e2f26eaf00d4ee07508f6998e67fcb8e6a420f1682264736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/staking/types.go b/precompiles/staking/types.go index 7e9d13af4..7c8baae5d 100644 --- a/precompiles/staking/types.go +++ b/precompiles/staking/types.go @@ -76,13 +76,23 @@ type EventCancelUnbonding struct { CreationHeight *big.Int } -// Description use golang type alias defines a validator description. +// Description defines a validator description. type Description = struct { - Moniker string "json:\"moniker\"" - Identity string "json:\"identity\"" - Website string "json:\"website\"" - SecurityContact string "json:\"securityContact\"" - Details string "json:\"details\"" + Moniker string `json:"moniker"` + Identity string `json:"identity"` + Website string `json:"website"` + SecurityContact string `json:"securityContact"` + Details string `json:"details"` +} + +func NewDescriptionFromResponse(d stakingtypes.Description) Description { + return Description{ + Moniker: d.Moniker, + Identity: d.Identity, + Website: d.Website, + SecurityContact: d.SecurityContact, + Details: d.Details, + } } // Commission use golang type alias defines a validator commission. @@ -593,65 +603,51 @@ func (do *DelegationOutput) Pack(args abi.Arguments) ([]byte, error) { // ValidatorInfo is a struct to represent the key information from // a validator response. type ValidatorInfo struct { - OperatorAddress string `abi:"operatorAddress"` - ConsensusPubkey string `abi:"consensusPubkey"` - Jailed bool `abi:"jailed"` - Status uint8 `abi:"status"` - Tokens *big.Int `abi:"tokens"` - DelegatorShares *big.Int `abi:"delegatorShares"` // TODO: Decimal - Description string `abi:"description"` - UnbondingHeight int64 `abi:"unbondingHeight"` - UnbondingTime int64 `abi:"unbondingTime"` - Commission *big.Int `abi:"commission"` - MinSelfDelegation *big.Int `abi:"minSelfDelegation"` -} - -type ValidatorOutput struct { - Validator ValidatorInfo -} + OperatorAddress string `abi:"operatorAddress"` + ConsensusPubkey string `abi:"consensusPubkey"` + Jailed bool `abi:"jailed"` + Status uint8 `abi:"status"` + Tokens *big.Int `abi:"tokens"` + DelegatorShares *big.Int `abi:"delegatorShares"` // TODO: Decimal + Description Description `abi:"description"` + UnbondingHeight int64 `abi:"unbondingHeight"` + UnbondingTime int64 `abi:"unbondingTime"` + Commission *big.Int `abi:"commission"` + MinSelfDelegation *big.Int `abi:"minSelfDelegation"` +} + +func DefaultValidatorInfo() ValidatorInfo { + return ValidatorInfo{ + Tokens: big.NewInt(0), + DelegatorShares: big.NewInt(0), + Commission: big.NewInt(0), + MinSelfDelegation: big.NewInt(0), + } +} + +func NewValidatorInfoFromResponse(v stakingtypes.Validator) ValidatorInfo { + operatorAddress, err := sdk.ValAddressFromBech32(v.OperatorAddress) + if err != nil { + return DefaultValidatorInfo() + } -// DefaultValidatorOutput returns a ValidatorOutput with default values. -func DefaultValidatorOutput() ValidatorOutput { - return ValidatorOutput{ - ValidatorInfo{ - OperatorAddress: "", - ConsensusPubkey: "", - Jailed: false, - Status: uint8(0), - Tokens: big.NewInt(0), - DelegatorShares: big.NewInt(0), - Description: "", - UnbondingHeight: int64(0), - UnbondingTime: int64(0), - Commission: big.NewInt(0), - MinSelfDelegation: big.NewInt(0), - }, + return ValidatorInfo{ + OperatorAddress: common.BytesToAddress(operatorAddress.Bytes()).String(), + ConsensusPubkey: FormatConsensusPubkey(v.ConsensusPubkey), + Jailed: v.Jailed, + Status: uint8(stakingtypes.BondStatus_value[v.Status.String()]), //#nosec G115 // enum will always be convertible to uint8 + Tokens: v.Tokens.BigInt(), + DelegatorShares: v.DelegatorShares.BigInt(), // TODO: Decimal + Description: NewDescriptionFromResponse(v.Description), + UnbondingHeight: v.UnbondingHeight, + UnbondingTime: v.UnbondingTime.UTC().Unix(), + Commission: v.Commission.Rate.BigInt(), + MinSelfDelegation: v.MinSelfDelegation.BigInt(), } } -// FromResponse populates the ValidatorOutput from a QueryValidatorResponse. -func (vo *ValidatorOutput) FromResponse(res *stakingtypes.QueryValidatorResponse) ValidatorOutput { - operatorAddress, err := sdk.ValAddressFromBech32(res.Validator.OperatorAddress) - if err != nil { - return DefaultValidatorOutput() - } - - return ValidatorOutput{ - Validator: ValidatorInfo{ - OperatorAddress: common.BytesToAddress(operatorAddress.Bytes()).String(), - ConsensusPubkey: FormatConsensusPubkey(res.Validator.ConsensusPubkey), - Jailed: res.Validator.Jailed, - Status: uint8(stakingtypes.BondStatus_value[res.Validator.Status.String()]), //#nosec G115 // enum will always be convertible to uint8 - Tokens: res.Validator.Tokens.BigInt(), - DelegatorShares: res.Validator.DelegatorShares.BigInt(), // TODO: Decimal - // TODO: create description type, - Description: res.Validator.Description.Details, - UnbondingHeight: res.Validator.UnbondingHeight, - UnbondingTime: res.Validator.UnbondingTime.UTC().Unix(), - Commission: res.Validator.Commission.Rate.BigInt(), - MinSelfDelegation: res.Validator.MinSelfDelegation.BigInt(), - }, - } +type ValidatorOutput struct { + Validator ValidatorInfo } // ValidatorsInput is a struct to represent the input information for @@ -672,24 +668,7 @@ type ValidatorsOutput struct { func (vo *ValidatorsOutput) FromResponse(res *stakingtypes.QueryValidatorsResponse) *ValidatorsOutput { vo.Validators = make([]ValidatorInfo, len(res.Validators)) for i, v := range res.Validators { - operatorAddress, err := sdk.ValAddressFromBech32(v.OperatorAddress) - if err != nil { - vo.Validators[i] = DefaultValidatorOutput().Validator - } else { - vo.Validators[i] = ValidatorInfo{ - OperatorAddress: common.BytesToAddress(operatorAddress.Bytes()).String(), - ConsensusPubkey: FormatConsensusPubkey(v.ConsensusPubkey), - Jailed: v.Jailed, - Status: uint8(stakingtypes.BondStatus_value[v.Status.String()]), //#nosec G115 // enum will always be convertible to uint8 - Tokens: v.Tokens.BigInt(), - DelegatorShares: v.DelegatorShares.BigInt(), - Description: v.Description.Details, - UnbondingHeight: v.UnbondingHeight, - UnbondingTime: v.UnbondingTime.UTC().Unix(), - Commission: v.Commission.Rate.BigInt(), - MinSelfDelegation: v.MinSelfDelegation.BigInt(), - } - } + vo.Validators[i] = NewValidatorInfoFromResponse(v) } if res.Pagination != nil { diff --git a/precompiles/testutil/contracts/Counter.json b/precompiles/testutil/contracts/Counter.json index b2d5ff5ed..144c81bfe 100644 --- a/precompiles/testutil/contracts/Counter.json +++ b/precompiles/testutil/contracts/Counter.json @@ -57,8 +57,8 @@ "type": "function" } ], - "bytecode": "0x60806040526000805534801561001457600080fd5b50610397806100246000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634f2be91f146100465780636deebae3146100505780638ada066e1461005a575b600080fd5b61004e610078565b005b610058610103565b005b6100626101d2565b60405161006f91906101f4565b60405180910390f35b60008081548092919061008a9061023e565b91905055507f64a55044d1f2eddebe1b90e8e2853e8e96931cefadbfa0b2ceb34bee360619416000546040516100c091906101f4565b60405180910390a17f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b8296000546040516100f991906101f4565b60405180910390a1565b60008054116040518060400160405280600f81526020017f434f554e5445525f544f4f5f4c4f5700000000000000000000000000000000008152509061017f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101769190610316565b60405180910390fd5b5060008081548092919061019290610338565b91905055507f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b8296000546040516101c891906101f4565b60405180910390a1565b60008054905090565b6000819050919050565b6101ee816101db565b82525050565b600060208201905061020960008301846101e5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610249826101db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361027b5761027a61020f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156102c05780820151818401526020810190506102a5565b60008484015250505050565b6000601f19601f8301169050919050565b60006102e882610286565b6102f28185610291565b93506103028185602086016102a2565b61030b816102cc565b840191505092915050565b6000602082019050818103600083015261033081846102dd565b905092915050565b6000610343826101db565b9150600082036103565761035561020f565b5b60018203905091905056fea264697066735822122074fa2d06189fa80d6dad60c419418caf51543918570c195ffca7cee18716e5c064736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634f2be91f146100465780636deebae3146100505780638ada066e1461005a575b600080fd5b61004e610078565b005b610058610103565b005b6100626101d2565b60405161006f91906101f4565b60405180910390f35b60008081548092919061008a9061023e565b91905055507f64a55044d1f2eddebe1b90e8e2853e8e96931cefadbfa0b2ceb34bee360619416000546040516100c091906101f4565b60405180910390a17f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b8296000546040516100f991906101f4565b60405180910390a1565b60008054116040518060400160405280600f81526020017f434f554e5445525f544f4f5f4c4f5700000000000000000000000000000000008152509061017f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101769190610316565b60405180910390fd5b5060008081548092919061019290610338565b91905055507f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b8296000546040516101c891906101f4565b60405180910390a1565b60008054905090565b6000819050919050565b6101ee816101db565b82525050565b600060208201905061020960008301846101e5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610249826101db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361027b5761027a61020f565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156102c05780820151818401526020810190506102a5565b60008484015250505050565b6000601f19601f8301169050919050565b60006102e882610286565b6102f28185610291565b93506103028185602086016102a2565b61030b816102cc565b840191505092915050565b6000602082019050818103600083015261033081846102dd565b905092915050565b6000610343826101db565b9150600082036103565761035561020f565b5b60018203905091905056fea264697066735822122074fa2d06189fa80d6dad60c419418caf51543918570c195ffca7cee18716e5c064736f6c63430008140033", + "bytecode": "0x6080806040523461001a576000805561022190816100208239f35b600080fdfe60806040818152600436101561001457600080fd5b600091823560e01c9081634f2be91f1461015a575080636deebae31461006257638ada066e1461004357600080fd5b3461005e578160031936011261005e57602091549051908152f35b5080fd5b50903461015757806003193601126101575780549180519080820182811067ffffffffffffffff821117610143578152600f82526020916e434f554e5445525f544f4f5f4c4f5760881b8382015284156100ea57507f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b8299293600019019081855551908152a180f35b9192905192839162461bcd60e51b8352816004840152835191826024850152815b83811061012c57505060448094508284010152601f80199101168101030190fd5b80860182015187820160440152869450810161010b565b634e487b7160e01b84526041600452602484fd5b80fd5b919050346101e757826003193601126101e757825460001981146101d357916020917f64a55044d1f2eddebe1b90e8e2853e8e96931cefadbfa0b2ceb34bee360619418360017f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b829960193848855848152a151908152a180f35b634e487b7160e01b84526011600452602484fd5b8280fdfea26469706673582212208cda3063e5b6f9e0bcc39dda3f7fdb292885a257124e36733c773a00c2fa7eb164736f6c63430008140033", + "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c9081634f2be91f1461015a575080636deebae31461006257638ada066e1461004357600080fd5b3461005e578160031936011261005e57602091549051908152f35b5080fd5b50903461015757806003193601126101575780549180519080820182811067ffffffffffffffff821117610143578152600f82526020916e434f554e5445525f544f4f5f4c4f5760881b8382015284156100ea57507f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b8299293600019019081855551908152a180f35b9192905192839162461bcd60e51b8352816004840152835191826024850152815b83811061012c57505060448094508284010152601f80199101168101030190fd5b80860182015187820160440152869450810161010b565b634e487b7160e01b84526041600452602484fd5b80fd5b919050346101e757826003193601126101e757825460001981146101d357916020917f64a55044d1f2eddebe1b90e8e2853e8e96931cefadbfa0b2ceb34bee360619418360017f938d2ee5be9cfb0f7270ee2eff90507e94b37625d9d2b3a61c97d30a4560b829960193848855848152a151908152a180f35b634e487b7160e01b84526011600452602484fd5b8280fdfea26469706673582212208cda3063e5b6f9e0bcc39dda3f7fdb292885a257124e36733c773a00c2fa7eb164736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/DistributionCaller.json b/precompiles/testutil/contracts/DistributionCaller.json index 82f4f9457..e9b32c489 100644 --- a/precompiles/testutil/contracts/DistributionCaller.json +++ b/precompiles/testutil/contracts/DistributionCaller.json @@ -1081,8 +1081,8 @@ "type": "function" } ], - "bytecode": "0x60806040526040518060200160405280604051806060016040528060238152602001620055676023913981525060009060016200003e92919062000053565b503480156200004c57600080fd5b50620004a1565b828054828255906000526020600020908101928215620000a0579160200282015b828111156200009f5782518290816200008e9190620003ba565b509160200191906001019062000074565b5b509050620000af9190620000b3565b5090565b5b80821115620000d75760008181620000cd9190620000db565b50600101620000b4565b5090565b508054620000e990620001a9565b6000825580601f10620000fd57506200011e565b601f0160209004906000526020600020908101906200011d919062000121565b5b50565b5b808211156200013c57600081600090555060010162000122565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001c257607f821691505b602082108103620001d857620001d76200017a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000203565b6200024e868362000203565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200029b620002956200028f8462000266565b62000270565b62000266565b9050919050565b6000819050919050565b620002b7836200027a565b620002cf620002c682620002a2565b84845462000210565b825550505050565b600090565b620002e6620002d7565b620002f3818484620002ac565b505050565b5b818110156200031b576200030f600082620002dc565b600181019050620002f9565b5050565b601f8211156200036a576200033481620001de565b6200033f84620001f3565b810160208510156200034f578190505b620003676200035e85620001f3565b830182620002f8565b50505b505050565b600082821c905092915050565b60006200038f600019846008026200036f565b1980831691505092915050565b6000620003aa83836200037c565b9150826002028217905092915050565b620003c58262000140565b67ffffffffffffffff811115620003e157620003e06200014b565b5b620003ed8254620001a9565b620003fa8282856200031f565b600060209050601f8311600181146200043257600084156200041d578287015190505b6200042985826200039c565b86555062000499565b601f1984166200044286620001de565b60005b828110156200046c5784890151825560018201915060208501945060208101905062000445565b868310156200048c578489015162000488601f8916826200037c565b8355505b6001600288020188555050505b505050505050565b6150b680620004b16000396000f3fe6080604052600436106101e35760003560e01c80637c9db0bb11610102578063cb85aa0a11610095578063ddbfa27111610064578063ddbfa271146107b9578063e0421e39146107f6578063e236c7a614610833578063f9ed9b6714610871576101e3565b8063cb85aa0a14610719578063d0e30db014610756578063d3f831be14610760578063dd987c201461079d576101e3565b8063ad5c4cdd116100d1578063ad5c4cdd14610639578063b2d1788314610676578063b6a216ae146106b3578063be4efc57146106f0576101e3565b80637c9db0bb1461054457806388b2d5811461058157806393574cd1146105bf578063963516e4146105fc576101e3565b8063382d823c1161017a5780636b7a547c116101495780636b7a547c146104645780636f669da4146104a157806378a5dfd1146104de578063796b96d21461051b576101e3565b8063382d823c1461039457806346e16d34146103bf578063613d4de8146103fc57806361bc221a14610439576101e3565b80631b050207116101b65780631b050207146102c8578063201139a2146102f15780632947221b1461032e578063296c60aa1461036b576101e3565b806301b68000146101e85780630c05e9e4146102255780630da8476814610262578063151732ec1461029f575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a9190612986565b61089a565b60405161021c9190612a43565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612b9a565b6109e2565b6040516102599190612ddd565b60405180910390f35b34801561026e57600080fd5b5061028960048036038101906102849190612dff565b610a72565b6040516102969190612f5a565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c1919061313c565b610b01565b005b3480156102d457600080fd5b506102ef60048036038101906102ea9190613219565b610d94565b005b3480156102fd57600080fd5b5061031860048036038101906103139190612b9a565b610f1b565b6040516103259190612f5a565b60405180910390f35b34801561033a57600080fd5b506103556004803603810190610350919061329c565b610fa9565b6040516103629190612f5a565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612dff565b611235565b005b3480156103a057600080fd5b506103a9611376565b6040516103b69190613391565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190612dff565b6113f3565b6040516103f391906133c2565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e91906133dd565b61147d565b6040516104309190612f5a565b60405180910390f35b34801561044557600080fd5b5061044e611770565b60405161045b919061347c565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190613497565b611783565b60405161049891906133c2565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c3919061352f565b61189b565b6040516104d591906133c2565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190612dff565b611925565b6040516105129190613391565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190612dff565b6119b2565b005b34801561055057600080fd5b5061056b60048036038101906105669190612b9a565b611af3565b6040516105789190613391565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a391906135d3565b611b7d565b6040516105b6929190613815565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e1919061352f565b611c1b565b6040516105f391906133c2565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190612b9a565b611cb3565b60405161063091906133c2565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190612dff565b611d3c565b60405161066d9190612f5a565b60405180910390f35b34801561068257600080fd5b5061069d6004803603810190610698919061384c565b611dc8565b6040516106aa9190612f5a565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190612986565b611f1d565b6040516106e79190613999565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906139bb565b611fa7565b005b34801561072557600080fd5b50610740600480360381019061073b9190612986565b61226d565b60405161074d9190613a58565b60405180910390f35b61075e6122f7565b005b34801561076c57600080fd5b5061078760048036038101906107829190612b9a565b6122f9565b6040516107949190613391565b60405180910390f35b6107b760048036038101906107b29190613a7a565b612383565b005b3480156107c557600080fd5b506107e060048036038101906107db9190613ad6565b61240a565b6040516107ed91906133c2565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b9a565b612525565b60405161082a9190612f5a565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190612986565b6125b1565b604051610868929190613c67565b60405180910390f35b34801561087d57600080fd5b5061089860048036038101906108939190613c9e565b61263e565b005b606060008061080173ffffffffffffffffffffffffffffffffffffffff16846040516024016108c99190613d30565b6040516020818303038152906040527f5431f450000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516109539190613d87565b600060405180830381855afa9150503d806000811461098e576040519150601f19603f3d011682016040523d82523d6000602084013e610993565b606091505b5091509150816109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90613dea565b60405180910390fd5b8092505050919050565b6109ea6128cf565b61080173ffffffffffffffffffffffffffffffffffffffff166354212a89836040518263ffffffff1660e01b8152600401610a259190613a58565b600060405180830381865afa158015610a42573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a6b91906140d4565b9050919050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6184846040518363ffffffff1660e01b8152600401610ab192919061411d565b6000604051808303816000875af1158015610ad0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610af9919061426e565b905092915050565b8115610bff576001600081819054906101000a900460070b80929190610b26906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610b779061433c565b60006040518083038185875af1925050503d8060008114610bb4576040519150601f19603f3d011682016040523d82523d6000602084013e610bb9565b606091505b5050905080610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906143c3565b60405180910390fd5b505b600061080173ffffffffffffffffffffffffffffffffffffffff16632eb1df523087876040518463ffffffff1660e01b8152600401610c40939291906143e3565b6020604051808303816000875af1158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c83919061443d565b905080610c8f57600080fd5b8115610d8d576001600081819054906101000a900460070b80929190610cb4906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610d059061433c565b60006040518083038185875af1925050503d8060008114610d42576040519150601f19603f3d011682016040523d82523d6000602084013e610d47565b606091505b5050905080610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d82906143c3565b60405180910390fd5b505b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff1663ad5c4cdd85846040518363ffffffff1660e01b8152600401610dcf9291906144c9565b6000604051808303816000875af1925050508015610e1057506040513d6000823e3d601f19601f82011682018060405250810190610e0d919061426e565b60015b15610e1757505b8015610f15576001600081819054906101000a900460070b80929190610e3c906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008373ffffffffffffffffffffffffffffffffffffffff16600f604051610e8d9061433c565b60006040518083038185875af1925050503d8060008114610eca576040519150601f19603f3d011682016040523d82523d6000602084013e610ecf565b606091505b5050905080610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a906143c3565b60405180910390fd5b505b50505050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6130846040518363ffffffff1660e01b8152600401610f5a92919061411d565b6000604051808303816000875af1158015610f79573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610fa2919061426e565b9050919050565b606082156110a9576001600081819054906101000a900460070b80929190610fd0906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516110219061433c565b60006040518083038185875af1925050503d806000811461105e576040519150601f19603f3d011682016040523d82523d6000602084013e611063565b606091505b50509050806110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e906143c3565b60405180910390fd5b505b61080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6130866040518363ffffffff1660e01b81526004016110e692919061411d565b6000604051808303816000875af1158015611105573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061112e919061426e565b9050811561122e576001600081819054906101000a900460070b80929190611155906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516111a69061433c565b60006040518083038185875af1925050503d80600081146111e3576040519150601f19603f3d011682016040523d82523d6000602084013e6111e8565b606091505b505090508061122c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611223906143c3565b60405180910390fd5b505b9392505050565b600061080173ffffffffffffffffffffffffffffffffffffffff16838360405160240161126392919061411d565b6040516020818303038152906040527f5a9d9a96000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112ed9190613d87565b600060405180830381855af49150503d8060008114611328576040519150601f19603f3d011682016040523d82523d6000602084013e61132d565b606091505b5050905080611371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113689061456b565b60405180910390fd5b505050565b606061080173ffffffffffffffffffffffffffffffffffffffff166314d140b06040518163ffffffff1660e01b8152600401600060405180830381865afa1580156113c5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113ee919061458b565b905090565b600061080173ffffffffffffffffffffffffffffffffffffffff16635a9d9a9684846040518363ffffffff1660e01b815260040161143292919061411d565b6020604051808303816000875af1158015611451573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611475919061443d565b905092915050565b606082156115b1576001600081819054906101000a900460070b809291906114a4906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146115b05760008473ffffffffffffffffffffffffffffffffffffffff16600f6040516115289061433c565b60006040518083038185875af1925050503d8060008114611565576040519150601f19603f3d011682016040523d82523d6000602084013e61156a565b606091505b50509050806115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a5906143c3565b60405180910390fd5b505b5b61080173ffffffffffffffffffffffffffffffffffffffff16633ce4e3be866040518263ffffffff1660e01b81526004016115ec9190613a58565b6000604051808303816000875af115801561160b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611634919061426e565b90508115611768576001600081819054906101000a900460070b8092919061165b906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146117675760008473ffffffffffffffffffffffffffffffffffffffff16600f6040516116df9061433c565b60006040518083038185875af1925050503d806000811461171c576040519150601f19603f3d011682016040523d82523d6000602084013e611721565b606091505b5050905080611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c906143c3565b60405180910390fd5b505b5b949350505050565b600160009054906101000a900460070b81565b600060018060008282829054906101000a900460070b6117a391906145d4565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555061080173ffffffffffffffffffffffffffffffffffffffff16632d2b079c84846040518363ffffffff1660e01b8152600401611809929190614634565b6020604051808303816000875af1158015611828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184c919061443d565b905060018060008282829054906101000a900460070b61186c9190614664565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555092915050565b600061080173ffffffffffffffffffffffffffffffffffffffff16632efe8a5f84846040518363ffffffff1660e01b81526004016118da9291906146d3565b6020604051808303816000875af11580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d919061443d565b905092915050565b606061080173ffffffffffffffffffffffffffffffffffffffff16639ad563b484846040518363ffffffff1660e01b815260040161196492919061411d565b600060405180830381865afa158015611981573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119aa919061458b565b905092915050565b600061080173ffffffffffffffffffffffffffffffffffffffff1683836040516024016119e092919061411d565b6040516020818303038152906040527f5a9d9a96000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611a6a9190613d87565b600060405180830381855afa9150503d8060008114611aa5576040519150601f19603f3d011682016040523d82523d6000602084013e611aaa565b606091505b5050905080611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590613dea565b60405180910390fd5b505050565b606061080173ffffffffffffffffffffffffffffffffffffffff16633dd40f78836040518263ffffffff1660e01b8152600401611b309190613a58565b600060405180830381865afa158015611b4d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b76919061458b565b9050919050565b6060611b876128f0565b61080173ffffffffffffffffffffffffffffffffffffffff16638f2473ce878787876040518563ffffffff1660e01b8152600401611bc89493929190614887565b600060405180830381865afa158015611be5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c0e9190614b5f565b9150915094509492505050565b60008061080173ffffffffffffffffffffffffffffffffffffffff16632efe8a5f85856040518363ffffffff1660e01b8152600401611c5b9291906146d3565b6020604051808303816000875af1925050508015611c9757506040513d601f19601f82011682018060405250810190611c94919061443d565b60015b611ca45760009050611ca9565b809150505b8091505092915050565b600061080173ffffffffffffffffffffffffffffffffffffffff16635a9d9a9630846040518363ffffffff1660e01b8152600401611cf292919061411d565b6020604051808303816000875af1158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d35919061443d565b9050919050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6184846040518363ffffffff1660e01b8152600401611d7b92919061411d565b6000604051808303816000875af1158015611d9a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611dc3919061426e565b600080fd5b6060600061080173ffffffffffffffffffffffffffffffffffffffff16635a9d9a9633876040518363ffffffff1660e01b8152600401611e0992919061411d565b6020604051808303816000875af1158015611e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4c919061443d565b905080611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8590614c23565b60405180910390fd5b61080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6185856040518363ffffffff1660e01b8152600401611ecb92919061411d565b6000604051808303816000875af1158015611eea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611f13919061426e565b9150509392505050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663a66cb605836040518263ffffffff1660e01b8152600401611f5a9190613d30565b600060405180830381865afa158015611f77573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611fa09190614d24565b9050919050565b81156120a5576001600081819054906101000a900460070b80929190611fcc906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f60405161201d9061433c565b60006040518083038185875af1925050503d806000811461205a576040519150601f19603f3d011682016040523d82523d6000602084013e61205f565b606091505b50509050806120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a906143c3565b60405180910390fd5b505b600061080173ffffffffffffffffffffffffffffffffffffffff16632efe8a5f30866040518363ffffffff1660e01b81526004016120e49291906146d3565b6020604051808303816000875af1158015612103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612127919061443d565b905080612169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216090614db9565b60405180910390fd5b8115612267576001600081819054906101000a900460070b8092919061218e906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516121df9061433c565b60006040518083038185875af1925050503d806000811461221c576040519150601f19603f3d011682016040523d82523d6000602084013e612221565b606091505b5050905080612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c906143c3565b60405180910390fd5b505b50505050565b606061080173ffffffffffffffffffffffffffffffffffffffff16635431f450836040518263ffffffff1660e01b81526004016122aa9190613d30565b600060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906122f09190614dd9565b9050919050565b565b606061080173ffffffffffffffffffffffffffffffffffffffff166385b2d2da836040518263ffffffff1660e01b81526004016123369190613a58565b600060405180830381865afa158015612353573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061237c919061458b565b9050919050565b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084846040518463ffffffff1660e01b81526004016123c293929190614e31565b6020604051808303816000875af11580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612405919061443d565b505050565b600060018060008282829054906101000a900460070b61242a91906145d4565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555061080173ffffffffffffffffffffffffffffffffffffffff16632eb1df528585856040518463ffffffff1660e01b8152600401612492939291906143e3565b6020604051808303816000875af11580156124b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d5919061443d565b905060018060008282829054906101000a900460070b6124f59190614664565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055509392505050565b606061080173ffffffffffffffffffffffffffffffffffffffff16633ce4e3be836040518263ffffffff1660e01b81526004016125629190613a58565b6000604051808303816000875af1158015612581573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125aa919061426e565b9050919050565b60608061080173ffffffffffffffffffffffffffffffffffffffff166354be1a28846040518263ffffffff1660e01b81526004016125ef9190613d30565b600060405180830381865afa15801561260c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126359190614fd8565b91509150915091565b811561273c576001600081819054906101000a900460070b80929190612663906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008473ffffffffffffffffffffffffffffffffffffffff16600f6040516126b49061433c565b60006040518083038185875af1925050503d80600081146126f1576040519150601f19603f3d011682016040523d82523d6000602084013e6126f6565b606091505b505090508061273a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612731906143c3565b60405180910390fd5b505b600061080173ffffffffffffffffffffffffffffffffffffffff16632d2b079c86866040518363ffffffff1660e01b815260040161277b929190615050565b6020604051808303816000875af115801561279a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127be919061443d565b9050806127ca57600080fd5b81156128c8576001600081819054906101000a900460070b809291906127ef906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f6040516128409061433c565b60006040518083038185875af1925050503d806000811461287d576040519150601f19603f3d011682016040523d82523d6000602084013e612882565b606091505b50509050806128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd906143c3565b60405180910390fd5b505b5050505050565b60405180606001604052806060815260200160608152602001606081525090565b604051806040016040528060608152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061295382612928565b9050919050565b61296381612948565b811461296e57600080fd5b50565b6000813590506129808161295a565b92915050565b60006020828403121561299c5761299b61291e565b5b60006129aa84828501612971565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129ed5780820151818401526020810190506129d2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a15826129b3565b612a1f81856129be565b9350612a2f8185602086016129cf565b612a38816129f9565b840191505092915050565b60006020820190508181036000830152612a5d8184612a0a565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612aa7826129f9565b810181811067ffffffffffffffff82111715612ac657612ac5612a6f565b5b80604052505050565b6000612ad9612914565b9050612ae58282612a9e565b919050565b600067ffffffffffffffff821115612b0557612b04612a6f565b5b612b0e826129f9565b9050602081019050919050565b82818337600083830152505050565b6000612b3d612b3884612aea565b612acf565b905082815260208101848484011115612b5957612b58612a6a565b5b612b64848285612b1b565b509392505050565b600082601f830112612b8157612b80612a65565b5b8135612b91848260208601612b2a565b91505092915050565b600060208284031215612bb057612baf61291e565b5b600082013567ffffffffffffffff811115612bce57612bcd612923565b5b612bda84828501612b6c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000612c0a82612be3565b612c148185612bee565b9350612c248185602086016129cf565b612c2d816129f9565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b612c7781612c64565b82525050565b600060ff82169050919050565b612c9381612c7d565b82525050565b60006060830160008301518482036000860152612cb68282612bff565b9150506020830151612ccb6020860182612c6e565b506040830151612cde6040860182612c8a565b508091505092915050565b6000612cf58383612c99565b905092915050565b6000602082019050919050565b6000612d1582612c38565b612d1f8185612c43565b935083602082028501612d3185612c54565b8060005b85811015612d6d5784840389528151612d4e8582612ce9565b9450612d5983612cfd565b925060208a01995050600181019050612d35565b50829750879550505050505092915050565b60006060830160008301518482036000860152612d9c8282612bff565b91505060208301518482036020860152612db68282612d0a565b91505060408301518482036040860152612dd08282612d0a565b9150508091505092915050565b60006020820190508181036000830152612df78184612d7f565b905092915050565b60008060408385031215612e1657612e1561291e565b5b6000612e2485828601612971565b925050602083013567ffffffffffffffff811115612e4557612e44612923565b5b612e5185828601612b6c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006040830160008301518482036000860152612ea48282612bff565b9150506020830151612eb96020860182612c6e565b508091505092915050565b6000612ed08383612e87565b905092915050565b6000602082019050919050565b6000612ef082612e5b565b612efa8185612e66565b935083602082028501612f0c85612e77565b8060005b85811015612f485784840389528151612f298582612ec4565b9450612f3483612ed8565b925060208a01995050600181019050612f10565b50829750879550505050505092915050565b60006020820190508181036000830152612f748184612ee5565b905092915050565b600067ffffffffffffffff821115612f9757612f96612a6f565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b612fc081612c64565b8114612fcb57600080fd5b50565b600081359050612fdd81612fb7565b92915050565b600060408284031215612ff957612ff8612fad565b5b6130036040612acf565b9050600082013567ffffffffffffffff81111561302357613022612fb2565b5b61302f84828501612b6c565b600083015250602061304384828501612fce565b60208301525092915050565b600061306261305d84612f7c565b612acf565b9050808382526020820190506020840283018581111561308557613084612fa8565b5b835b818110156130cc57803567ffffffffffffffff8111156130aa576130a9612a65565b5b8086016130b78982612fe3565b85526020850194505050602081019050613087565b5050509392505050565b600082601f8301126130eb576130ea612a65565b5b81356130fb84826020860161304f565b91505092915050565b60008115159050919050565b61311981613104565b811461312457600080fd5b50565b60008135905061313681613110565b92915050565b600080600080608085870312156131565761315561291e565b5b600085013567ffffffffffffffff81111561317457613173612923565b5b61318087828801612b6c565b945050602085013567ffffffffffffffff8111156131a1576131a0612923565b5b6131ad878288016130d6565b93505060406131be87828801613127565b92505060606131cf87828801613127565b91505092959194509250565b60006131e682612928565b9050919050565b6131f6816131db565b811461320157600080fd5b50565b600081359050613213816131ed565b92915050565b600080600080608085870312156132335761323261291e565b5b600061324187828801613204565b945050602061325287828801613204565b935050604085013567ffffffffffffffff81111561327357613272612923565b5b61327f87828801612b6c565b925050606061329087828801613127565b91505092959194509250565b6000806000606084860312156132b5576132b461291e565b5b600084013567ffffffffffffffff8111156132d3576132d2612923565b5b6132df86828701612b6c565b93505060206132f086828701613127565b925050604061330186828701613127565b9150509250925092565b600082825260208201905092915050565b600061332782612c38565b613331818561330b565b93508360208202850161334385612c54565b8060005b8581101561337f57848403895281516133608582612ce9565b945061336b83612cfd565b925060208a01995050600181019050613347565b50829750879550505050505092915050565b600060208201905081810360008301526133ab818461331c565b905092915050565b6133bc81613104565b82525050565b60006020820190506133d760008301846133b3565b92915050565b600080600080608085870312156133f7576133f661291e565b5b600085013567ffffffffffffffff81111561341557613414612923565b5b61342187828801612b6c565b945050602061343287828801613204565b935050604061344387828801613127565b925050606061345487828801613127565b91505092959194509250565b60008160070b9050919050565b61347681613460565b82525050565b6000602082019050613491600083018461346d565b92915050565b600080604083850312156134ae576134ad61291e565b5b60006134bc85828601612971565b925050602083013567ffffffffffffffff8111156134dd576134dc612923565b5b6134e9858286016130d6565b9150509250929050565b600063ffffffff82169050919050565b61350c816134f3565b811461351757600080fd5b50565b60008135905061352981613503565b92915050565b600080604083850312156135465761354561291e565b5b600061355485828601612971565b92505060206135658582860161351a565b9150509250929050565b600067ffffffffffffffff82169050919050565b61358c8161356f565b811461359757600080fd5b50565b6000813590506135a981613583565b92915050565b600080fd5b600060a082840312156135ca576135c96135af565b5b81905092915050565b600080600080608085870312156135ed576135ec61291e565b5b600085013567ffffffffffffffff81111561360b5761360a612923565b5b61361787828801612b6c565b94505060206136288782880161359a565b93505060406136398782880161359a565b925050606085013567ffffffffffffffff81111561365a57613659612923565b5b613666878288016135b4565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136a78161356f565b82525050565b6040820160008201516136c36000850182612c6e565b5060208201516136d66020850182612c8a565b50505050565b6060820160008201516136f2600085018261369e565b50602082015161370560208501826136ad565b50505050565b600061371783836136dc565b60608301905092915050565b6000602082019050919050565b600061373b82613672565b613745818561367d565b93506137508361368e565b8060005b83811015613781578151613768888261370b565b975061377383613723565b925050600181019050613754565b5085935050505092915050565b600082825260208201905092915050565b60006137aa826129b3565b6137b4818561378e565b93506137c48185602086016129cf565b6137cd816129f9565b840191505092915050565b600060408301600083015184820360008601526137f5828261379f565b915050602083015161380a602086018261369e565b508091505092915050565b6000604082019050818103600083015261382f8185613730565b9050818103602083015261384381846137d8565b90509392505050565b6000806000606084860312156138655761386461291e565b5b600084013567ffffffffffffffff81111561388357613882612923565b5b61388f86828701612b6c565b93505060206138a086828701612971565b925050604084013567ffffffffffffffff8111156138c1576138c0612923565b5b6138cd86828701612b6c565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061390f8383612bff565b905092915050565b6000602082019050919050565b600061392f826138d7565b61393981856138e2565b93508360208202850161394b856138f3565b8060005b8581101561398757848403895281516139688582613903565b945061397383613917565b925060208a0199505060018101905061394f565b50829750879550505050505092915050565b600060208201905081810360008301526139b38184613924565b905092915050565b6000806000606084860312156139d4576139d361291e565b5b60006139e28682870161351a565b93505060206139f386828701613127565b9250506040613a0486828701613127565b9150509250925092565b600082825260208201905092915050565b6000613a2a82612be3565b613a348185613a0e565b9350613a448185602086016129cf565b613a4d816129f9565b840191505092915050565b60006020820190508181036000830152613a728184613a1f565b905092915050565b60008060408385031215613a9157613a9061291e565b5b600083013567ffffffffffffffff811115613aaf57613aae612923565b5b613abb85828601612b6c565b9250506020613acc85828601612fce565b9150509250929050565b600080600060608486031215613aef57613aee61291e565b5b6000613afd86828701612971565b935050602084013567ffffffffffffffff811115613b1e57613b1d612923565b5b613b2a86828701612b6c565b925050604084013567ffffffffffffffff811115613b4b57613b4a612923565b5b613b57868287016130d6565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006040830160008301518482036000860152613baa8282612bff565b91505060208301518482036020860152613bc48282612d0a565b9150508091505092915050565b6000613bdd8383613b8d565b905092915050565b6000602082019050919050565b6000613bfd82613b61565b613c078185613b6c565b935083602082028501613c1985613b7d565b8060005b85811015613c555784840389528151613c368582613bd1565b9450613c4183613be5565b925060208a01995050600181019050613c1d565b50829750879550505050505092915050565b60006040820190508181036000830152613c818185613bf2565b90508181036020830152613c95818461331c565b90509392505050565b60008060008060808587031215613cb857613cb761291e565b5b6000613cc687828801613204565b945050602085013567ffffffffffffffff811115613ce757613ce6612923565b5b613cf3878288016130d6565b9350506040613d0487828801613127565b9250506060613d1587828801613127565b91505092959194509250565b613d2a81612948565b82525050565b6000602082019050613d456000830184613d21565b92915050565b600081905092915050565b6000613d61826129b3565b613d6b8185613d4b565b9350613d7b8185602086016129cf565b80840191505092915050565b6000613d938284613d56565b915081905092915050565b7f6661696c65642073746174696343616c6c20746f20707265636f6d70696c6500600082015250565b6000613dd4601f83613a0e565b9150613ddf82613d9e565b602082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b6000613e1d613e1884612aea565b612acf565b905082815260208101848484011115613e3957613e38612a6a565b5b613e448482856129cf565b509392505050565b600082601f830112613e6157613e60612a65565b5b8151613e71848260208601613e0a565b91505092915050565b600067ffffffffffffffff821115613e9557613e94612a6f565b5b602082029050602081019050919050565b600081519050613eb581612fb7565b92915050565b613ec481612c7d565b8114613ecf57600080fd5b50565b600081519050613ee181613ebb565b92915050565b600060608284031215613efd57613efc612fad565b5b613f076060612acf565b9050600082015167ffffffffffffffff811115613f2757613f26612fb2565b5b613f3384828501613e4c565b6000830152506020613f4784828501613ea6565b6020830152506040613f5b84828501613ed2565b60408301525092915050565b6000613f7a613f7584613e7a565b612acf565b90508083825260208201905060208402830185811115613f9d57613f9c612fa8565b5b835b81811015613fe457805167ffffffffffffffff811115613fc257613fc1612a65565b5b808601613fcf8982613ee7565b85526020850194505050602081019050613f9f565b5050509392505050565b600082601f83011261400357614002612a65565b5b8151614013848260208601613f67565b91505092915050565b60006060828403121561403257614031612fad565b5b61403c6060612acf565b9050600082015167ffffffffffffffff81111561405c5761405b612fb2565b5b61406884828501613e4c565b600083015250602082015167ffffffffffffffff81111561408c5761408b612fb2565b5b61409884828501613fee565b602083015250604082015167ffffffffffffffff8111156140bc576140bb612fb2565b5b6140c884828501613fee565b60408301525092915050565b6000602082840312156140ea576140e961291e565b5b600082015167ffffffffffffffff81111561410857614107612923565b5b6141148482850161401c565b91505092915050565b60006040820190506141326000830185613d21565b81810360208301526141448184613a1f565b90509392505050565b60006040828403121561416357614162612fad565b5b61416d6040612acf565b9050600082015167ffffffffffffffff81111561418d5761418c612fb2565b5b61419984828501613e4c565b60008301525060206141ad84828501613ea6565b60208301525092915050565b60006141cc6141c784612f7c565b612acf565b905080838252602082019050602084028301858111156141ef576141ee612fa8565b5b835b8181101561423657805167ffffffffffffffff81111561421457614213612a65565b5b808601614221898261414d565b855260208501945050506020810190506141f1565b5050509392505050565b600082601f83011261425557614254612a65565b5b81516142658482602086016141b9565b91505092915050565b6000602082840312156142845761428361291e565b5b600082015167ffffffffffffffff8111156142a2576142a1612923565b5b6142ae84828501614240565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f182613460565b9150677fffffffffffffff820361430b5761430a6142b7565b5b600182019050919050565b50565b6000614326600083613d4b565b915061433182614316565b600082019050919050565b600061434782614319565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006143ad602183613a0e565b91506143b882614351565b604082019050919050565b600060208201905081810360008301526143dc816143a0565b9050919050565b60006060820190506143f86000830186613d21565b818103602083015261440a8185613a1f565b9050818103604083015261441e8184612ee5565b9050949350505050565b60008151905061443781613110565b92915050565b6000602082840312156144535761445261291e565b5b600061446184828501614428565b91505092915050565b6000819050919050565b600061448f61448a61448584612928565b61446a565b612928565b9050919050565b60006144a182614474565b9050919050565b60006144b382614496565b9050919050565b6144c3816144a8565b82525050565b60006040820190506144de60008301856144ba565b81810360208301526144f08184613a1f565b90509392505050565b7f6661696c65642064656c656761746543616c6c20746f20707265636f6d70696c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614555602183613a0e565b9150614560826144f9565b604082019050919050565b6000602082019050818103600083015261458481614548565b9050919050565b6000602082840312156145a1576145a061291e565b5b600082015167ffffffffffffffff8111156145bf576145be612923565b5b6145cb84828501613fee565b91505092915050565b60006145df82613460565b91506145ea83613460565b925082820190507fffffffffffffffffffffffffffffffffffffffffffffffff80000000000000008112677fffffffffffffff8213171561462e5761462d6142b7565b5b92915050565b60006040820190506146496000830185613d21565b818103602083015261465b8184612ee5565b90509392505050565b600061466f82613460565b915061467a83613460565b92508282039050677fffffffffffffff81137fffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000821217156146be576146bd6142b7565b5b92915050565b6146cd816134f3565b82525050565b60006040820190506146e86000830185613d21565b6146f560208301846146c4565b9392505050565b6147058161356f565b82525050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261473757614736614715565b5b83810192508235915060208301925067ffffffffffffffff82111561475f5761475e61470b565b5b60018202360383131561477557614774614710565b5b509250929050565b6000614789838561378e565b9350614796838584612b1b565b61479f836129f9565b840190509392505050565b60006147b9602084018461359a565b905092915050565b60006147d06020840184613127565b905092915050565b6147e181613104565b82525050565b600060a083016147fa600084018461471a565b858303600087015261480d83828461477d565b9250505061481e60208401846147aa565b61482b602086018261369e565b5061483960408401846147aa565b614846604086018261369e565b5061485460608401846147c1565b61486160608601826147d8565b5061486f60808401846147c1565b61487c60808601826147d8565b508091505092915050565b600060808201905081810360008301526148a18187613a1f565b90506148b060208301866146fc565b6148bd60408301856146fc565b81810360608301526148cf81846147e7565b905095945050505050565b600067ffffffffffffffff8211156148f5576148f4612a6f565b5b602082029050602081019050919050565b60008151905061491581613583565b92915050565b60006040828403121561493157614930612fad565b5b61493b6040612acf565b9050600061494b84828501613ea6565b600083015250602061495f84828501613ed2565b60208301525092915050565b60006060828403121561498157614980612fad565b5b61498b6040612acf565b9050600061499b84828501614906565b60008301525060206149af8482850161491b565b60208301525092915050565b60006149ce6149c9846148da565b612acf565b905080838252602082019050606084028301858111156149f1576149f0612fa8565b5b835b81811015614a1a5780614a06888261496b565b8452602084019350506060810190506149f3565b5050509392505050565b600082601f830112614a3957614a38612a65565b5b8151614a498482602086016149bb565b91505092915050565b600067ffffffffffffffff821115614a6d57614a6c612a6f565b5b614a76826129f9565b9050602081019050919050565b6000614a96614a9184614a52565b612acf565b905082815260208101848484011115614ab257614ab1612a6a565b5b614abd8482856129cf565b509392505050565b600082601f830112614ada57614ad9612a65565b5b8151614aea848260208601614a83565b91505092915050565b600060408284031215614b0957614b08612fad565b5b614b136040612acf565b9050600082015167ffffffffffffffff811115614b3357614b32612fb2565b5b614b3f84828501614ac5565b6000830152506020614b5384828501614906565b60208301525092915050565b60008060408385031215614b7657614b7561291e565b5b600083015167ffffffffffffffff811115614b9457614b93612923565b5b614ba085828601614a24565b925050602083015167ffffffffffffffff811115614bc157614bc0612923565b5b614bcd85828601614af3565b9150509250929050565b7f6661696c656420746f2073657420776974686472617720616464726573730000600082015250565b6000614c0d601e83613a0e565b9150614c1882614bd7565b602082019050919050565b60006020820190508181036000830152614c3c81614c00565b9050919050565b600067ffffffffffffffff821115614c5e57614c5d612a6f565b5b602082029050602081019050919050565b6000614c82614c7d84614c43565b612acf565b90508083825260208201905060208402830185811115614ca557614ca4612fa8565b5b835b81811015614cec57805167ffffffffffffffff811115614cca57614cc9612a65565b5b808601614cd78982613e4c565b85526020850194505050602081019050614ca7565b5050509392505050565b600082601f830112614d0b57614d0a612a65565b5b8151614d1b848260208601614c6f565b91505092915050565b600060208284031215614d3a57614d3961291e565b5b600082015167ffffffffffffffff811115614d5857614d57612923565b5b614d6484828501614cf6565b91505092915050565b7f6661696c656420746f20636c61696d2072657761726473000000000000000000600082015250565b6000614da3601783613a0e565b9150614dae82614d6d565b602082019050919050565b60006020820190508181036000830152614dd281614d96565b9050919050565b600060208284031215614def57614dee61291e565b5b600082015167ffffffffffffffff811115614e0d57614e0c612923565b5b614e1984828501613e4c565b91505092915050565b614e2b81612c64565b82525050565b6000606082019050614e466000830186613d21565b8181036020830152614e588185613a1f565b9050614e676040830184614e22565b949350505050565b600067ffffffffffffffff821115614e8a57614e89612a6f565b5b602082029050602081019050919050565b600060408284031215614eb157614eb0612fad565b5b614ebb6040612acf565b9050600082015167ffffffffffffffff811115614edb57614eda612fb2565b5b614ee784828501613e4c565b600083015250602082015167ffffffffffffffff811115614f0b57614f0a612fb2565b5b614f1784828501613fee565b60208301525092915050565b6000614f36614f3184614e6f565b612acf565b90508083825260208201905060208402830185811115614f5957614f58612fa8565b5b835b81811015614fa057805167ffffffffffffffff811115614f7e57614f7d612a65565b5b808601614f8b8982614e9b565b85526020850194505050602081019050614f5b565b5050509392505050565b600082601f830112614fbf57614fbe612a65565b5b8151614fcf848260208601614f23565b91505092915050565b60008060408385031215614fef57614fee61291e565b5b600083015167ffffffffffffffff81111561500d5761500c612923565b5b61501985828601614faa565b925050602083015167ffffffffffffffff81111561503a57615039612923565b5b61504685828601613fee565b9150509250929050565b600060408201905061506560008301856144ba565b81810360208301526150778184612ee5565b9050939250505056fea264697066735822122029031955eea8124bd387b1347ffc0b95c6f6481176b99631d2f22f619cdd7ae164736f6c634300081400332f636f736d6f732e7374616b696e672e763162657461312e4d736744656c6567617465", - "deployedBytecode": "0x6080604052600436106101e35760003560e01c80637c9db0bb11610102578063cb85aa0a11610095578063ddbfa27111610064578063ddbfa271146107b9578063e0421e39146107f6578063e236c7a614610833578063f9ed9b6714610871576101e3565b8063cb85aa0a14610719578063d0e30db014610756578063d3f831be14610760578063dd987c201461079d576101e3565b8063ad5c4cdd116100d1578063ad5c4cdd14610639578063b2d1788314610676578063b6a216ae146106b3578063be4efc57146106f0576101e3565b80637c9db0bb1461054457806388b2d5811461058157806393574cd1146105bf578063963516e4146105fc576101e3565b8063382d823c1161017a5780636b7a547c116101495780636b7a547c146104645780636f669da4146104a157806378a5dfd1146104de578063796b96d21461051b576101e3565b8063382d823c1461039457806346e16d34146103bf578063613d4de8146103fc57806361bc221a14610439576101e3565b80631b050207116101b65780631b050207146102c8578063201139a2146102f15780632947221b1461032e578063296c60aa1461036b576101e3565b806301b68000146101e85780630c05e9e4146102255780630da8476814610262578063151732ec1461029f575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a9190612986565b61089a565b60405161021c9190612a43565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612b9a565b6109e2565b6040516102599190612ddd565b60405180910390f35b34801561026e57600080fd5b5061028960048036038101906102849190612dff565b610a72565b6040516102969190612f5a565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c1919061313c565b610b01565b005b3480156102d457600080fd5b506102ef60048036038101906102ea9190613219565b610d94565b005b3480156102fd57600080fd5b5061031860048036038101906103139190612b9a565b610f1b565b6040516103259190612f5a565b60405180910390f35b34801561033a57600080fd5b506103556004803603810190610350919061329c565b610fa9565b6040516103629190612f5a565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612dff565b611235565b005b3480156103a057600080fd5b506103a9611376565b6040516103b69190613391565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e19190612dff565b6113f3565b6040516103f391906133c2565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e91906133dd565b61147d565b6040516104309190612f5a565b60405180910390f35b34801561044557600080fd5b5061044e611770565b60405161045b919061347c565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190613497565b611783565b60405161049891906133c2565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c3919061352f565b61189b565b6040516104d591906133c2565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190612dff565b611925565b6040516105129190613391565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d9190612dff565b6119b2565b005b34801561055057600080fd5b5061056b60048036038101906105669190612b9a565b611af3565b6040516105789190613391565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a391906135d3565b611b7d565b6040516105b6929190613815565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e1919061352f565b611c1b565b6040516105f391906133c2565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190612b9a565b611cb3565b60405161063091906133c2565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190612dff565b611d3c565b60405161066d9190612f5a565b60405180910390f35b34801561068257600080fd5b5061069d6004803603810190610698919061384c565b611dc8565b6040516106aa9190612f5a565b60405180910390f35b3480156106bf57600080fd5b506106da60048036038101906106d59190612986565b611f1d565b6040516106e79190613999565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906139bb565b611fa7565b005b34801561072557600080fd5b50610740600480360381019061073b9190612986565b61226d565b60405161074d9190613a58565b60405180910390f35b61075e6122f7565b005b34801561076c57600080fd5b5061078760048036038101906107829190612b9a565b6122f9565b6040516107949190613391565b60405180910390f35b6107b760048036038101906107b29190613a7a565b612383565b005b3480156107c557600080fd5b506107e060048036038101906107db9190613ad6565b61240a565b6040516107ed91906133c2565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612b9a565b612525565b60405161082a9190612f5a565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190612986565b6125b1565b604051610868929190613c67565b60405180910390f35b34801561087d57600080fd5b5061089860048036038101906108939190613c9e565b61263e565b005b606060008061080173ffffffffffffffffffffffffffffffffffffffff16846040516024016108c99190613d30565b6040516020818303038152906040527f5431f450000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516109539190613d87565b600060405180830381855afa9150503d806000811461098e576040519150601f19603f3d011682016040523d82523d6000602084013e610993565b606091505b5091509150816109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90613dea565b60405180910390fd5b8092505050919050565b6109ea6128cf565b61080173ffffffffffffffffffffffffffffffffffffffff166354212a89836040518263ffffffff1660e01b8152600401610a259190613a58565b600060405180830381865afa158015610a42573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a6b91906140d4565b9050919050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6184846040518363ffffffff1660e01b8152600401610ab192919061411d565b6000604051808303816000875af1158015610ad0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610af9919061426e565b905092915050565b8115610bff576001600081819054906101000a900460070b80929190610b26906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610b779061433c565b60006040518083038185875af1925050503d8060008114610bb4576040519150601f19603f3d011682016040523d82523d6000602084013e610bb9565b606091505b5050905080610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906143c3565b60405180910390fd5b505b600061080173ffffffffffffffffffffffffffffffffffffffff16632eb1df523087876040518463ffffffff1660e01b8152600401610c40939291906143e3565b6020604051808303816000875af1158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c83919061443d565b905080610c8f57600080fd5b8115610d8d576001600081819054906101000a900460070b80929190610cb4906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610d059061433c565b60006040518083038185875af1925050503d8060008114610d42576040519150601f19603f3d011682016040523d82523d6000602084013e610d47565b606091505b5050905080610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d82906143c3565b60405180910390fd5b505b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff1663ad5c4cdd85846040518363ffffffff1660e01b8152600401610dcf9291906144c9565b6000604051808303816000875af1925050508015610e1057506040513d6000823e3d601f19601f82011682018060405250810190610e0d919061426e565b60015b15610e1757505b8015610f15576001600081819054906101000a900460070b80929190610e3c906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008373ffffffffffffffffffffffffffffffffffffffff16600f604051610e8d9061433c565b60006040518083038185875af1925050503d8060008114610eca576040519150601f19603f3d011682016040523d82523d6000602084013e610ecf565b606091505b5050905080610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a906143c3565b60405180910390fd5b505b50505050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6130846040518363ffffffff1660e01b8152600401610f5a92919061411d565b6000604051808303816000875af1158015610f79573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610fa2919061426e565b9050919050565b606082156110a9576001600081819054906101000a900460070b80929190610fd0906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516110219061433c565b60006040518083038185875af1925050503d806000811461105e576040519150601f19603f3d011682016040523d82523d6000602084013e611063565b606091505b50509050806110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e906143c3565b60405180910390fd5b505b61080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6130866040518363ffffffff1660e01b81526004016110e692919061411d565b6000604051808303816000875af1158015611105573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061112e919061426e565b9050811561122e576001600081819054906101000a900460070b80929190611155906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516111a69061433c565b60006040518083038185875af1925050503d80600081146111e3576040519150601f19603f3d011682016040523d82523d6000602084013e6111e8565b606091505b505090508061122c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611223906143c3565b60405180910390fd5b505b9392505050565b600061080173ffffffffffffffffffffffffffffffffffffffff16838360405160240161126392919061411d565b6040516020818303038152906040527f5a9d9a96000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112ed9190613d87565b600060405180830381855af49150503d8060008114611328576040519150601f19603f3d011682016040523d82523d6000602084013e61132d565b606091505b5050905080611371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113689061456b565b60405180910390fd5b505050565b606061080173ffffffffffffffffffffffffffffffffffffffff166314d140b06040518163ffffffff1660e01b8152600401600060405180830381865afa1580156113c5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113ee919061458b565b905090565b600061080173ffffffffffffffffffffffffffffffffffffffff16635a9d9a9684846040518363ffffffff1660e01b815260040161143292919061411d565b6020604051808303816000875af1158015611451573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611475919061443d565b905092915050565b606082156115b1576001600081819054906101000a900460070b809291906114a4906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146115b05760008473ffffffffffffffffffffffffffffffffffffffff16600f6040516115289061433c565b60006040518083038185875af1925050503d8060008114611565576040519150601f19603f3d011682016040523d82523d6000602084013e61156a565b606091505b50509050806115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a5906143c3565b60405180910390fd5b505b5b61080173ffffffffffffffffffffffffffffffffffffffff16633ce4e3be866040518263ffffffff1660e01b81526004016115ec9190613a58565b6000604051808303816000875af115801561160b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611634919061426e565b90508115611768576001600081819054906101000a900460070b8092919061165b906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146117675760008473ffffffffffffffffffffffffffffffffffffffff16600f6040516116df9061433c565b60006040518083038185875af1925050503d806000811461171c576040519150601f19603f3d011682016040523d82523d6000602084013e611721565b606091505b5050905080611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c906143c3565b60405180910390fd5b505b5b949350505050565b600160009054906101000a900460070b81565b600060018060008282829054906101000a900460070b6117a391906145d4565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555061080173ffffffffffffffffffffffffffffffffffffffff16632d2b079c84846040518363ffffffff1660e01b8152600401611809929190614634565b6020604051808303816000875af1158015611828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184c919061443d565b905060018060008282829054906101000a900460070b61186c9190614664565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555092915050565b600061080173ffffffffffffffffffffffffffffffffffffffff16632efe8a5f84846040518363ffffffff1660e01b81526004016118da9291906146d3565b6020604051808303816000875af11580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d919061443d565b905092915050565b606061080173ffffffffffffffffffffffffffffffffffffffff16639ad563b484846040518363ffffffff1660e01b815260040161196492919061411d565b600060405180830381865afa158015611981573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119aa919061458b565b905092915050565b600061080173ffffffffffffffffffffffffffffffffffffffff1683836040516024016119e092919061411d565b6040516020818303038152906040527f5a9d9a96000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611a6a9190613d87565b600060405180830381855afa9150503d8060008114611aa5576040519150601f19603f3d011682016040523d82523d6000602084013e611aaa565b606091505b5050905080611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590613dea565b60405180910390fd5b505050565b606061080173ffffffffffffffffffffffffffffffffffffffff16633dd40f78836040518263ffffffff1660e01b8152600401611b309190613a58565b600060405180830381865afa158015611b4d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b76919061458b565b9050919050565b6060611b876128f0565b61080173ffffffffffffffffffffffffffffffffffffffff16638f2473ce878787876040518563ffffffff1660e01b8152600401611bc89493929190614887565b600060405180830381865afa158015611be5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c0e9190614b5f565b9150915094509492505050565b60008061080173ffffffffffffffffffffffffffffffffffffffff16632efe8a5f85856040518363ffffffff1660e01b8152600401611c5b9291906146d3565b6020604051808303816000875af1925050508015611c9757506040513d601f19601f82011682018060405250810190611c94919061443d565b60015b611ca45760009050611ca9565b809150505b8091505092915050565b600061080173ffffffffffffffffffffffffffffffffffffffff16635a9d9a9630846040518363ffffffff1660e01b8152600401611cf292919061411d565b6020604051808303816000875af1158015611d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d35919061443d565b9050919050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6184846040518363ffffffff1660e01b8152600401611d7b92919061411d565b6000604051808303816000875af1158015611d9a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611dc3919061426e565b600080fd5b6060600061080173ffffffffffffffffffffffffffffffffffffffff16635a9d9a9633876040518363ffffffff1660e01b8152600401611e0992919061411d565b6020604051808303816000875af1158015611e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4c919061443d565b905080611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8590614c23565b60405180910390fd5b61080173ffffffffffffffffffffffffffffffffffffffff1663b46a8d6185856040518363ffffffff1660e01b8152600401611ecb92919061411d565b6000604051808303816000875af1158015611eea573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611f13919061426e565b9150509392505050565b606061080173ffffffffffffffffffffffffffffffffffffffff1663a66cb605836040518263ffffffff1660e01b8152600401611f5a9190613d30565b600060405180830381865afa158015611f77573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611fa09190614d24565b9050919050565b81156120a5576001600081819054906101000a900460070b80929190611fcc906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f60405161201d9061433c565b60006040518083038185875af1925050503d806000811461205a576040519150601f19603f3d011682016040523d82523d6000602084013e61205f565b606091505b50509050806120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a906143c3565b60405180910390fd5b505b600061080173ffffffffffffffffffffffffffffffffffffffff16632efe8a5f30866040518363ffffffff1660e01b81526004016120e49291906146d3565b6020604051808303816000875af1158015612103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612127919061443d565b905080612169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216090614db9565b60405180910390fd5b8115612267576001600081819054906101000a900460070b8092919061218e906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516121df9061433c565b60006040518083038185875af1925050503d806000811461221c576040519150601f19603f3d011682016040523d82523d6000602084013e612221565b606091505b5050905080612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c906143c3565b60405180910390fd5b505b50505050565b606061080173ffffffffffffffffffffffffffffffffffffffff16635431f450836040518263ffffffff1660e01b81526004016122aa9190613d30565b600060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906122f09190614dd9565b9050919050565b565b606061080173ffffffffffffffffffffffffffffffffffffffff166385b2d2da836040518263ffffffff1660e01b81526004016123369190613a58565b600060405180830381865afa158015612353573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061237c919061458b565b9050919050565b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3084846040518463ffffffff1660e01b81526004016123c293929190614e31565b6020604051808303816000875af11580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612405919061443d565b505050565b600060018060008282829054906101000a900460070b61242a91906145d4565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555061080173ffffffffffffffffffffffffffffffffffffffff16632eb1df528585856040518463ffffffff1660e01b8152600401612492939291906143e3565b6020604051808303816000875af11580156124b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d5919061443d565b905060018060008282829054906101000a900460070b6124f59190614664565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055509392505050565b606061080173ffffffffffffffffffffffffffffffffffffffff16633ce4e3be836040518263ffffffff1660e01b81526004016125629190613a58565b6000604051808303816000875af1158015612581573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125aa919061426e565b9050919050565b60608061080173ffffffffffffffffffffffffffffffffffffffff166354be1a28846040518263ffffffff1660e01b81526004016125ef9190613d30565b600060405180830381865afa15801561260c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126359190614fd8565b91509150915091565b811561273c576001600081819054906101000a900460070b80929190612663906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008473ffffffffffffffffffffffffffffffffffffffff16600f6040516126b49061433c565b60006040518083038185875af1925050503d80600081146126f1576040519150601f19603f3d011682016040523d82523d6000602084013e6126f6565b606091505b505090508061273a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612731906143c3565b60405180910390fd5b505b600061080173ffffffffffffffffffffffffffffffffffffffff16632d2b079c86866040518363ffffffff1660e01b815260040161277b929190615050565b6020604051808303816000875af115801561279a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127be919061443d565b9050806127ca57600080fd5b81156128c8576001600081819054906101000a900460070b809291906127ef906142e6565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f6040516128409061433c565b60006040518083038185875af1925050503d806000811461287d576040519150601f19603f3d011682016040523d82523d6000602084013e612882565b606091505b50509050806128c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bd906143c3565b60405180910390fd5b505b5050505050565b60405180606001604052806060815260200160608152602001606081525090565b604051806040016040528060608152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061295382612928565b9050919050565b61296381612948565b811461296e57600080fd5b50565b6000813590506129808161295a565b92915050565b60006020828403121561299c5761299b61291e565b5b60006129aa84828501612971565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129ed5780820151818401526020810190506129d2565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a15826129b3565b612a1f81856129be565b9350612a2f8185602086016129cf565b612a38816129f9565b840191505092915050565b60006020820190508181036000830152612a5d8184612a0a565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612aa7826129f9565b810181811067ffffffffffffffff82111715612ac657612ac5612a6f565b5b80604052505050565b6000612ad9612914565b9050612ae58282612a9e565b919050565b600067ffffffffffffffff821115612b0557612b04612a6f565b5b612b0e826129f9565b9050602081019050919050565b82818337600083830152505050565b6000612b3d612b3884612aea565b612acf565b905082815260208101848484011115612b5957612b58612a6a565b5b612b64848285612b1b565b509392505050565b600082601f830112612b8157612b80612a65565b5b8135612b91848260208601612b2a565b91505092915050565b600060208284031215612bb057612baf61291e565b5b600082013567ffffffffffffffff811115612bce57612bcd612923565b5b612bda84828501612b6c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000612c0a82612be3565b612c148185612bee565b9350612c248185602086016129cf565b612c2d816129f9565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b612c7781612c64565b82525050565b600060ff82169050919050565b612c9381612c7d565b82525050565b60006060830160008301518482036000860152612cb68282612bff565b9150506020830151612ccb6020860182612c6e565b506040830151612cde6040860182612c8a565b508091505092915050565b6000612cf58383612c99565b905092915050565b6000602082019050919050565b6000612d1582612c38565b612d1f8185612c43565b935083602082028501612d3185612c54565b8060005b85811015612d6d5784840389528151612d4e8582612ce9565b9450612d5983612cfd565b925060208a01995050600181019050612d35565b50829750879550505050505092915050565b60006060830160008301518482036000860152612d9c8282612bff565b91505060208301518482036020860152612db68282612d0a565b91505060408301518482036040860152612dd08282612d0a565b9150508091505092915050565b60006020820190508181036000830152612df78184612d7f565b905092915050565b60008060408385031215612e1657612e1561291e565b5b6000612e2485828601612971565b925050602083013567ffffffffffffffff811115612e4557612e44612923565b5b612e5185828601612b6c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006040830160008301518482036000860152612ea48282612bff565b9150506020830151612eb96020860182612c6e565b508091505092915050565b6000612ed08383612e87565b905092915050565b6000602082019050919050565b6000612ef082612e5b565b612efa8185612e66565b935083602082028501612f0c85612e77565b8060005b85811015612f485784840389528151612f298582612ec4565b9450612f3483612ed8565b925060208a01995050600181019050612f10565b50829750879550505050505092915050565b60006020820190508181036000830152612f748184612ee5565b905092915050565b600067ffffffffffffffff821115612f9757612f96612a6f565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b612fc081612c64565b8114612fcb57600080fd5b50565b600081359050612fdd81612fb7565b92915050565b600060408284031215612ff957612ff8612fad565b5b6130036040612acf565b9050600082013567ffffffffffffffff81111561302357613022612fb2565b5b61302f84828501612b6c565b600083015250602061304384828501612fce565b60208301525092915050565b600061306261305d84612f7c565b612acf565b9050808382526020820190506020840283018581111561308557613084612fa8565b5b835b818110156130cc57803567ffffffffffffffff8111156130aa576130a9612a65565b5b8086016130b78982612fe3565b85526020850194505050602081019050613087565b5050509392505050565b600082601f8301126130eb576130ea612a65565b5b81356130fb84826020860161304f565b91505092915050565b60008115159050919050565b61311981613104565b811461312457600080fd5b50565b60008135905061313681613110565b92915050565b600080600080608085870312156131565761315561291e565b5b600085013567ffffffffffffffff81111561317457613173612923565b5b61318087828801612b6c565b945050602085013567ffffffffffffffff8111156131a1576131a0612923565b5b6131ad878288016130d6565b93505060406131be87828801613127565b92505060606131cf87828801613127565b91505092959194509250565b60006131e682612928565b9050919050565b6131f6816131db565b811461320157600080fd5b50565b600081359050613213816131ed565b92915050565b600080600080608085870312156132335761323261291e565b5b600061324187828801613204565b945050602061325287828801613204565b935050604085013567ffffffffffffffff81111561327357613272612923565b5b61327f87828801612b6c565b925050606061329087828801613127565b91505092959194509250565b6000806000606084860312156132b5576132b461291e565b5b600084013567ffffffffffffffff8111156132d3576132d2612923565b5b6132df86828701612b6c565b93505060206132f086828701613127565b925050604061330186828701613127565b9150509250925092565b600082825260208201905092915050565b600061332782612c38565b613331818561330b565b93508360208202850161334385612c54565b8060005b8581101561337f57848403895281516133608582612ce9565b945061336b83612cfd565b925060208a01995050600181019050613347565b50829750879550505050505092915050565b600060208201905081810360008301526133ab818461331c565b905092915050565b6133bc81613104565b82525050565b60006020820190506133d760008301846133b3565b92915050565b600080600080608085870312156133f7576133f661291e565b5b600085013567ffffffffffffffff81111561341557613414612923565b5b61342187828801612b6c565b945050602061343287828801613204565b935050604061344387828801613127565b925050606061345487828801613127565b91505092959194509250565b60008160070b9050919050565b61347681613460565b82525050565b6000602082019050613491600083018461346d565b92915050565b600080604083850312156134ae576134ad61291e565b5b60006134bc85828601612971565b925050602083013567ffffffffffffffff8111156134dd576134dc612923565b5b6134e9858286016130d6565b9150509250929050565b600063ffffffff82169050919050565b61350c816134f3565b811461351757600080fd5b50565b60008135905061352981613503565b92915050565b600080604083850312156135465761354561291e565b5b600061355485828601612971565b92505060206135658582860161351a565b9150509250929050565b600067ffffffffffffffff82169050919050565b61358c8161356f565b811461359757600080fd5b50565b6000813590506135a981613583565b92915050565b600080fd5b600060a082840312156135ca576135c96135af565b5b81905092915050565b600080600080608085870312156135ed576135ec61291e565b5b600085013567ffffffffffffffff81111561360b5761360a612923565b5b61361787828801612b6c565b94505060206136288782880161359a565b93505060406136398782880161359a565b925050606085013567ffffffffffffffff81111561365a57613659612923565b5b613666878288016135b4565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136a78161356f565b82525050565b6040820160008201516136c36000850182612c6e565b5060208201516136d66020850182612c8a565b50505050565b6060820160008201516136f2600085018261369e565b50602082015161370560208501826136ad565b50505050565b600061371783836136dc565b60608301905092915050565b6000602082019050919050565b600061373b82613672565b613745818561367d565b93506137508361368e565b8060005b83811015613781578151613768888261370b565b975061377383613723565b925050600181019050613754565b5085935050505092915050565b600082825260208201905092915050565b60006137aa826129b3565b6137b4818561378e565b93506137c48185602086016129cf565b6137cd816129f9565b840191505092915050565b600060408301600083015184820360008601526137f5828261379f565b915050602083015161380a602086018261369e565b508091505092915050565b6000604082019050818103600083015261382f8185613730565b9050818103602083015261384381846137d8565b90509392505050565b6000806000606084860312156138655761386461291e565b5b600084013567ffffffffffffffff81111561388357613882612923565b5b61388f86828701612b6c565b93505060206138a086828701612971565b925050604084013567ffffffffffffffff8111156138c1576138c0612923565b5b6138cd86828701612b6c565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061390f8383612bff565b905092915050565b6000602082019050919050565b600061392f826138d7565b61393981856138e2565b93508360208202850161394b856138f3565b8060005b8581101561398757848403895281516139688582613903565b945061397383613917565b925060208a0199505060018101905061394f565b50829750879550505050505092915050565b600060208201905081810360008301526139b38184613924565b905092915050565b6000806000606084860312156139d4576139d361291e565b5b60006139e28682870161351a565b93505060206139f386828701613127565b9250506040613a0486828701613127565b9150509250925092565b600082825260208201905092915050565b6000613a2a82612be3565b613a348185613a0e565b9350613a448185602086016129cf565b613a4d816129f9565b840191505092915050565b60006020820190508181036000830152613a728184613a1f565b905092915050565b60008060408385031215613a9157613a9061291e565b5b600083013567ffffffffffffffff811115613aaf57613aae612923565b5b613abb85828601612b6c565b9250506020613acc85828601612fce565b9150509250929050565b600080600060608486031215613aef57613aee61291e565b5b6000613afd86828701612971565b935050602084013567ffffffffffffffff811115613b1e57613b1d612923565b5b613b2a86828701612b6c565b925050604084013567ffffffffffffffff811115613b4b57613b4a612923565b5b613b57868287016130d6565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006040830160008301518482036000860152613baa8282612bff565b91505060208301518482036020860152613bc48282612d0a565b9150508091505092915050565b6000613bdd8383613b8d565b905092915050565b6000602082019050919050565b6000613bfd82613b61565b613c078185613b6c565b935083602082028501613c1985613b7d565b8060005b85811015613c555784840389528151613c368582613bd1565b9450613c4183613be5565b925060208a01995050600181019050613c1d565b50829750879550505050505092915050565b60006040820190508181036000830152613c818185613bf2565b90508181036020830152613c95818461331c565b90509392505050565b60008060008060808587031215613cb857613cb761291e565b5b6000613cc687828801613204565b945050602085013567ffffffffffffffff811115613ce757613ce6612923565b5b613cf3878288016130d6565b9350506040613d0487828801613127565b9250506060613d1587828801613127565b91505092959194509250565b613d2a81612948565b82525050565b6000602082019050613d456000830184613d21565b92915050565b600081905092915050565b6000613d61826129b3565b613d6b8185613d4b565b9350613d7b8185602086016129cf565b80840191505092915050565b6000613d938284613d56565b915081905092915050565b7f6661696c65642073746174696343616c6c20746f20707265636f6d70696c6500600082015250565b6000613dd4601f83613a0e565b9150613ddf82613d9e565b602082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b6000613e1d613e1884612aea565b612acf565b905082815260208101848484011115613e3957613e38612a6a565b5b613e448482856129cf565b509392505050565b600082601f830112613e6157613e60612a65565b5b8151613e71848260208601613e0a565b91505092915050565b600067ffffffffffffffff821115613e9557613e94612a6f565b5b602082029050602081019050919050565b600081519050613eb581612fb7565b92915050565b613ec481612c7d565b8114613ecf57600080fd5b50565b600081519050613ee181613ebb565b92915050565b600060608284031215613efd57613efc612fad565b5b613f076060612acf565b9050600082015167ffffffffffffffff811115613f2757613f26612fb2565b5b613f3384828501613e4c565b6000830152506020613f4784828501613ea6565b6020830152506040613f5b84828501613ed2565b60408301525092915050565b6000613f7a613f7584613e7a565b612acf565b90508083825260208201905060208402830185811115613f9d57613f9c612fa8565b5b835b81811015613fe457805167ffffffffffffffff811115613fc257613fc1612a65565b5b808601613fcf8982613ee7565b85526020850194505050602081019050613f9f565b5050509392505050565b600082601f83011261400357614002612a65565b5b8151614013848260208601613f67565b91505092915050565b60006060828403121561403257614031612fad565b5b61403c6060612acf565b9050600082015167ffffffffffffffff81111561405c5761405b612fb2565b5b61406884828501613e4c565b600083015250602082015167ffffffffffffffff81111561408c5761408b612fb2565b5b61409884828501613fee565b602083015250604082015167ffffffffffffffff8111156140bc576140bb612fb2565b5b6140c884828501613fee565b60408301525092915050565b6000602082840312156140ea576140e961291e565b5b600082015167ffffffffffffffff81111561410857614107612923565b5b6141148482850161401c565b91505092915050565b60006040820190506141326000830185613d21565b81810360208301526141448184613a1f565b90509392505050565b60006040828403121561416357614162612fad565b5b61416d6040612acf565b9050600082015167ffffffffffffffff81111561418d5761418c612fb2565b5b61419984828501613e4c565b60008301525060206141ad84828501613ea6565b60208301525092915050565b60006141cc6141c784612f7c565b612acf565b905080838252602082019050602084028301858111156141ef576141ee612fa8565b5b835b8181101561423657805167ffffffffffffffff81111561421457614213612a65565b5b808601614221898261414d565b855260208501945050506020810190506141f1565b5050509392505050565b600082601f83011261425557614254612a65565b5b81516142658482602086016141b9565b91505092915050565b6000602082840312156142845761428361291e565b5b600082015167ffffffffffffffff8111156142a2576142a1612923565b5b6142ae84828501614240565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f182613460565b9150677fffffffffffffff820361430b5761430a6142b7565b5b600182019050919050565b50565b6000614326600083613d4b565b915061433182614316565b600082019050919050565b600061434782614319565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006143ad602183613a0e565b91506143b882614351565b604082019050919050565b600060208201905081810360008301526143dc816143a0565b9050919050565b60006060820190506143f86000830186613d21565b818103602083015261440a8185613a1f565b9050818103604083015261441e8184612ee5565b9050949350505050565b60008151905061443781613110565b92915050565b6000602082840312156144535761445261291e565b5b600061446184828501614428565b91505092915050565b6000819050919050565b600061448f61448a61448584612928565b61446a565b612928565b9050919050565b60006144a182614474565b9050919050565b60006144b382614496565b9050919050565b6144c3816144a8565b82525050565b60006040820190506144de60008301856144ba565b81810360208301526144f08184613a1f565b90509392505050565b7f6661696c65642064656c656761746543616c6c20746f20707265636f6d70696c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614555602183613a0e565b9150614560826144f9565b604082019050919050565b6000602082019050818103600083015261458481614548565b9050919050565b6000602082840312156145a1576145a061291e565b5b600082015167ffffffffffffffff8111156145bf576145be612923565b5b6145cb84828501613fee565b91505092915050565b60006145df82613460565b91506145ea83613460565b925082820190507fffffffffffffffffffffffffffffffffffffffffffffffff80000000000000008112677fffffffffffffff8213171561462e5761462d6142b7565b5b92915050565b60006040820190506146496000830185613d21565b818103602083015261465b8184612ee5565b90509392505050565b600061466f82613460565b915061467a83613460565b92508282039050677fffffffffffffff81137fffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000821217156146be576146bd6142b7565b5b92915050565b6146cd816134f3565b82525050565b60006040820190506146e86000830185613d21565b6146f560208301846146c4565b9392505050565b6147058161356f565b82525050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261473757614736614715565b5b83810192508235915060208301925067ffffffffffffffff82111561475f5761475e61470b565b5b60018202360383131561477557614774614710565b5b509250929050565b6000614789838561378e565b9350614796838584612b1b565b61479f836129f9565b840190509392505050565b60006147b9602084018461359a565b905092915050565b60006147d06020840184613127565b905092915050565b6147e181613104565b82525050565b600060a083016147fa600084018461471a565b858303600087015261480d83828461477d565b9250505061481e60208401846147aa565b61482b602086018261369e565b5061483960408401846147aa565b614846604086018261369e565b5061485460608401846147c1565b61486160608601826147d8565b5061486f60808401846147c1565b61487c60808601826147d8565b508091505092915050565b600060808201905081810360008301526148a18187613a1f565b90506148b060208301866146fc565b6148bd60408301856146fc565b81810360608301526148cf81846147e7565b905095945050505050565b600067ffffffffffffffff8211156148f5576148f4612a6f565b5b602082029050602081019050919050565b60008151905061491581613583565b92915050565b60006040828403121561493157614930612fad565b5b61493b6040612acf565b9050600061494b84828501613ea6565b600083015250602061495f84828501613ed2565b60208301525092915050565b60006060828403121561498157614980612fad565b5b61498b6040612acf565b9050600061499b84828501614906565b60008301525060206149af8482850161491b565b60208301525092915050565b60006149ce6149c9846148da565b612acf565b905080838252602082019050606084028301858111156149f1576149f0612fa8565b5b835b81811015614a1a5780614a06888261496b565b8452602084019350506060810190506149f3565b5050509392505050565b600082601f830112614a3957614a38612a65565b5b8151614a498482602086016149bb565b91505092915050565b600067ffffffffffffffff821115614a6d57614a6c612a6f565b5b614a76826129f9565b9050602081019050919050565b6000614a96614a9184614a52565b612acf565b905082815260208101848484011115614ab257614ab1612a6a565b5b614abd8482856129cf565b509392505050565b600082601f830112614ada57614ad9612a65565b5b8151614aea848260208601614a83565b91505092915050565b600060408284031215614b0957614b08612fad565b5b614b136040612acf565b9050600082015167ffffffffffffffff811115614b3357614b32612fb2565b5b614b3f84828501614ac5565b6000830152506020614b5384828501614906565b60208301525092915050565b60008060408385031215614b7657614b7561291e565b5b600083015167ffffffffffffffff811115614b9457614b93612923565b5b614ba085828601614a24565b925050602083015167ffffffffffffffff811115614bc157614bc0612923565b5b614bcd85828601614af3565b9150509250929050565b7f6661696c656420746f2073657420776974686472617720616464726573730000600082015250565b6000614c0d601e83613a0e565b9150614c1882614bd7565b602082019050919050565b60006020820190508181036000830152614c3c81614c00565b9050919050565b600067ffffffffffffffff821115614c5e57614c5d612a6f565b5b602082029050602081019050919050565b6000614c82614c7d84614c43565b612acf565b90508083825260208201905060208402830185811115614ca557614ca4612fa8565b5b835b81811015614cec57805167ffffffffffffffff811115614cca57614cc9612a65565b5b808601614cd78982613e4c565b85526020850194505050602081019050614ca7565b5050509392505050565b600082601f830112614d0b57614d0a612a65565b5b8151614d1b848260208601614c6f565b91505092915050565b600060208284031215614d3a57614d3961291e565b5b600082015167ffffffffffffffff811115614d5857614d57612923565b5b614d6484828501614cf6565b91505092915050565b7f6661696c656420746f20636c61696d2072657761726473000000000000000000600082015250565b6000614da3601783613a0e565b9150614dae82614d6d565b602082019050919050565b60006020820190508181036000830152614dd281614d96565b9050919050565b600060208284031215614def57614dee61291e565b5b600082015167ffffffffffffffff811115614e0d57614e0c612923565b5b614e1984828501613e4c565b91505092915050565b614e2b81612c64565b82525050565b6000606082019050614e466000830186613d21565b8181036020830152614e588185613a1f565b9050614e676040830184614e22565b949350505050565b600067ffffffffffffffff821115614e8a57614e89612a6f565b5b602082029050602081019050919050565b600060408284031215614eb157614eb0612fad565b5b614ebb6040612acf565b9050600082015167ffffffffffffffff811115614edb57614eda612fb2565b5b614ee784828501613e4c565b600083015250602082015167ffffffffffffffff811115614f0b57614f0a612fb2565b5b614f1784828501613fee565b60208301525092915050565b6000614f36614f3184614e6f565b612acf565b90508083825260208201905060208402830185811115614f5957614f58612fa8565b5b835b81811015614fa057805167ffffffffffffffff811115614f7e57614f7d612a65565b5b808601614f8b8982614e9b565b85526020850194505050602081019050614f5b565b5050509392505050565b600082601f830112614fbf57614fbe612a65565b5b8151614fcf848260208601614f23565b91505092915050565b60008060408385031215614fef57614fee61291e565b5b600083015167ffffffffffffffff81111561500d5761500c612923565b5b61501985828601614faa565b925050602083015167ffffffffffffffff81111561503a57615039612923565b5b61504685828601613fee565b9150509250929050565b600060408201905061506560008301856144ba565b81810360208301526150778184612ee5565b9050939250505056fea264697066735822122029031955eea8124bd387b1347ffc0b95c6f6481176b99631d2f22f619cdd7ae164736f6c63430008140033", + "bytecode": "0x60803462000260576020906001600160401b03818301818111838210176200024a5760808301818110838211176200024a57604052602381527f2f636f736d6f732e7374616b696e672e763162657461312e4d736744656c656760408401526261746560e81b60608401528252600092835492600193848655808510620001ce575b509084805280852085925b858410620000a45760405161240b9081620002bc8239f35b8051908151868111620001ba5787918591620000c1865462000265565b948b601f96858882116200017f575b505050839582116001146200011857849582918d926200010c575b5050600019600383901b1c191690841b1785555b019201930192906200008c565b015190503880620000eb565b868c52838c209095601f1983168d5b8181106200016757509086978488959493106200014d575b505050811b018555620000ff565b015160001960f88460031b161c191690553880806200013f565b8289015184558d978b97940193928301920162000127565b828a620001a7945220600589808701821c830193898810620001b0575b01901c0190620002a2565b8b3885620000d0565b935082936200019c565b634e487b7160e01b89526041600452602489fd5b858052848084882092830192015b828110620001ec57505062000081565b87620001f9825462000265565b806200020b575b5050018590620001dc565b601f8082116001146200022557505081555b873862000200565b6200024090848452888420920160051c8201858301620002a2565b818355556200021d565b634e487b7160e01b600052604160045260246000fd5b600080fd5b90600182811c9216801562000297575b60208310146200028157565b634e487b7160e01b600052602260045260246000fd5b91607f169162000275565b818110620002ae575050565b60008155600101620002a256fe6080604081815260048036101561001557600080fd5b600092833560e01c90816301b6800014611b43575080630c05e9e4146119c85780630da847681461199b578063151732ec1461186c578381631b0502071461177e57508063201139a21461172e5780632947221b146115f8578063296c60aa1461155a578063382d823c1461150e57806346e16d34146114e0578063613d4de81461136257806361bc221a146113405780636b7a547c146112b15780636f669da41461127157806378a5dfd114611244578063796b96d2146111e75780637c9db0bb1461119257806388b2d58114610e7257806393574cd114610de9578063963516e414610d58578063ad5c4cdd14610d00578063b2d1788314610b8e578063b6a216ae14610a27578063be4efc57146108c8578063cb85aa0a1461080f578063d0e30db014610800578063d3f831be14610759578063dd987c20146106b9578063ddbfa271146105ba578063e0421e3914610508578063e236c7a6146102fc5763f9ed9b671461018557600080fd5b8290346102f85760803660031901126102f8576101a0611bbf565b6001600160401b03936024358581116102f45760206101c56102109236908701611e4b565b6101cd611efd565b946101d6611f0c565b956102af575b8451630b4ac1e760e21b81526001600160a01b03909116968101879052602481018590529283918291906044830190611dc5565b0381886108015af19182156102a657508491610278575b501561027457610235575080f35b8180600f819361026f966001549061024f8260070b612126565b16906001600160401b031916176001555af1610269612154565b50612184565b388180f35b8280fd5b610299915060203d811161029f575b6102918183611c84565b810190611fd3565b38610227565b503d610287565b513d86823e3d90fd5b6001546102be8160070b612126565b67ffffffffffffffff19909116908a16176001556102ef88808080600f6001600160a01b0387165af1610269612154565b6101dc565b8480fd5b5080fd5b508234610505576020806003193601126102f857610318611bbf565b8451630a97c34560e31b81526001600160a01b039091169381019390935281836024816108015afa9182156104fa57809381936103e8575b50929093918251948386948501908086528451809252606086018360608460051b890101960197915b838310610397578787038589015287806103938989611f37565b0390f35b919360019193959750806103d48198605f198d82030187528b5190836103c4835189845289840190611c13565b9201519084818403910152611d07565b990193019301909288969492979593610379565b935091503d8083853e6103fb8185611c84565b830184848203126102745783516001600160401b03908181116102f45785019482601f870112156102f45785519561043287611e34565b9661043f89519889611c84565b808852858089019160051b830101918583116104f657868101915b8383106104825750505050838101519182116102f45761047b929101612289565b9185610350565b82518681116104f25782018b601f19828a0301126104f2578b51906104a682611c69565b898101518881116104ee57898b6104bf92840101612044565b82528c810151908882116104ee57916104df8a8c80969481960101612289565b8382015281520192019161045a565b8b80fd5b8980fd5b8780fd5b8451903d90823e3d90fd5b80fd5b509034610274576020366003190112610274578282356001600160401b0381116102f85761053b60209136908601611cc0565b9361055d84519586938493631e7271df60e11b85528401526024830190611c13565b0381836108015af19182156105b05783610393949361058b575b505051918291602083526020830190611dc5565b6105a89293503d8091833e6105a08183611c84565b81019061205e565b903880610577565b81513d85823e3d90fd5b509034610274576060366003190112610274576105d5611bbf565b916001600160401b03906024358281116106b5576105f69036908301611cc0565b93604435908382116106b15761061160209236908501611e4b565b92610650600154946106258660070b6121fa565b871667ffffffffffffffff19968716176001558751631758efa960e11b815298899485948501612245565b0381886108015af19384156106a75760209594610688575b50600154916106798360070b61221f565b16911617600155519015158152f35b6106a0919450853d811161029f576102918183611c84565b9238610668565b83513d87823e3d90fd5b8680fd5b8580fd5b5090806003193601126102745781356001600160401b03811161075557610711926106e960209236908301611cc0565b90835194859283926353266bbb60e01b84523090840152606060248401526064830190611c13565b60243560448301520381866108005af190811561074c5750610731575080f35b6107489060203d811161029f576102918183611c84565b5080f35b513d84823e3d90fd5b8380fd5b509034610274576020366003190112610274578282356001600160401b0381116102f85761078c60209136908601611cc0565b936107ae845195869384936342d9696d60e11b85528401526024830190611c13565b03816108015afa9182156105b0578361039394936107db575b505051918291602083526020830190611f37565b6107f89293503d8091833e6107f08183611c84565b810190612350565b9038806107c7565b83806003193601126105055780f35b509190346102f85760203660031901126102f85761082b611bbf565b81516305431f4560e41b81526001600160a01b039091169381019390935281836024816108015afa9182156108bd578092610876575b81516020808252819061039390820186611c13565b9091503d8082853e6108888185611c84565b8301926020818503126102f8578051916001600160401b0383116105055750926108b6916103939401612044565b9038610861565b9051903d90823e3d90fd5b50346102745760603660031901126102745780359163ffffffff831683036107555761091f60206108f7611f1b565b94610900611efd565b956109e7575b835180938192632efe8a5f60e01b8352308884016121da565b0381886108015af19081156109dd5785916109bf575b50156109825750506109445780f35b6001546109538160070b612126565b6001600160401b0316906001600160401b0319161760015561097f81808080600f335af1610269612154565b80f35b906020606492519162461bcd60e51b835282015260176024820152766661696c656420746f20636c61696d207265776172647360481b6044820152fd5b6109d7915060203d811161029f576102918183611c84565b38610935565b82513d87823e3d90fd5b6001546109f68160070b612126565b6001600160401b0316906001600160401b03191617600155610a2287808080600f335af1610269612154565b610906565b508290346102f8576020918260031936011261050557610a45611bbf565b845163a66cb60560e01b81526001600160a01b039091169281019290925280826024816108015afa918215610b82578192610ad5575b5083519280840190808552835180925280868601968360051b870101940192955b828710610aa95785850386f35b909192938280610ac5600193603f198a82030186528851611c13565b9601920196019592919092610a9c565b9091503d8083833e610ae78183611c84565b810183828203126102745781516001600160401b03928382116102f457019080601f8301121561075557815190610b1d82611e34565b93610b2a88519586611c84565b828552868086019360051b850101938285116106b157878101935b858510610b59575050505050509084610a7b565b8451838111610b7e578991610b7386848094870101612044565b815201940193610b45565b8880fd5b508351903d90823e3d90fd5b509034610274576060366003190112610274576001600160401b0382358181116102f457610bbf9036908501611cc0565b92610bc8611bda565b916044359081116106b557610be09036908301611cc0565b91835191632d4ecd4b60e11b835282610bfe60209733848401611feb565b0392868161080195818b885af1908115610cf6578891610cd9575b5015610c965791610c42939187809487519687958694859363b46a8d6160e01b85528401611feb565b03925af1938415610c8b578094610c69575b50506103939051928284938452830190611dc5565b61039392945090610c83913d8091833e6105a08183611c84565b929038610c54565b8251903d90823e3d90fd5b845162461bcd60e51b8152908101869052601e60248201527f6661696c656420746f20736574207769746864726177206164647265737300006044820152606490fd5b610cf09150873d891161029f576102918183611c84565b38610c19565b86513d8a823e3d90fd5b5090346102745782610d1136611d83565b93610d2d8451958693849363b46a8d6160e01b85528401611feb565b0381836108015af190811561074c5750610d45575080fd5b6102f8903d8084833e6105a08183611c84565b5090346102745760203660031901126102745781356001600160401b03811161075557610da992610d8e60209236908301611cc0565b8351632d4ecd4b60e11b815294859283929030908401611feb565b0381866108015af19182156105b05760209392610dca575b50519015158152f35b610de2919250833d811161029f576102918183611c84565b9038610dc1565b50346102745781600319360112610274579160209283610e07611bbf565b610e0f611fac565b92610e2b86519485938493632efe8a5f60e01b855284016121da565b0381856108015af1829181610e53575b50610e4b5750905b519015158152f35b905090610e43565b610e6b919250853d811161029f576102918183611c84565b9038610e3b565b508290346102f857600319608036820112610274576001600160401b0382358181116102f457610ea59036908501611cc0565b926024358281168091036106b557604435918383168093036106b1576064358481116104f65780360360a087820112610b7e57895196610ee488611c69565b6060958689528a6020809a0152610f118c519a63479239e760e11b8c526080878d015260848c0190611c13565b9560248b015260448a0152888503016064890152818301359060221901811215610b7e5781019182013591602401858311610b7e578236038113610b7e57878484610fb6608484968f8f9960c098601f9f9e9d9c60a090528160a089015289880137898886880101528b610f8760248401611fbf565b168d8701528b610f9960448401611fbf565b1690860152610faa60648201611f2a565b15158a86015201611f2a565b15156080830152891999018916010301816108015afa9485156111885786948796611054575b5050865187815284518189018190529096878301958501925b82821061102657505050508161101b869787860383890152865190808752860190611c13565b940151169101520390f35b835180518616885286015180518789015286015160ff168a8801529586019592850192600190910190610ff5565b91955093503d8087863e6110688186611c84565b84019387818603126106b15780518381116104f657810185601f820112156104f657805161109581611e34565b936110a28b519586611c84565b8185528689818701930284010192888411611184578701915b838310611127575050505083810151908382116104f6570187818603126106b1578751946110e886611c69565b8151848111610b7e57820181601f82011215610b7e57916111128692848461111a9651910161200d565b875201612375565b8385015292938780610fdc565b8289038a81126104ee578c8381519261113f84611c69565b61114887612375565b845201126104ee578a9189918e61117181519161116483611c69565b858901518352880161227b565b84820152838201528152019201916110bb565b8a80fd5b87513d88823e3d90fd5b509034610274576020366003190112610274578282356001600160401b0381116102f8576111c560209136908601611cc0565b936107ae845195869384936307ba81ef60e31b85528401526024830190611c13565b50508134610505578061097f9261122161122f61120336611d83565b9093519283916020830195632d4ecd4b60e11b875260248401611feb565b03601f198101835282611c84565b51906108015afa61123e612154565b50612389565b509034610274578261125536611d83565b936107ae845195869384936326b558ed60e21b85528401611feb565b509034610274578060031936011261027457602061128d611bbf565b611295611fac565b93610da984519586938493632efe8a5f60e01b855284016121da565b5090346102745780600319360112610274576112cb611bbf565b6001600160401b03906024358281116106b5576112ed60209136908701611e4b565b94600154926112fe8460070b6121fa565b85166001600160401b03198095161760015561065086519788938493630b4ac1e760e21b855260018060a01b0316908401528760248401526044830190611dc5565b5050346102f857816003193601126102f85760209060015460070b9051908152f35b509034610274576080366003190112610274576001600160401b039282358481116102f8576113949036908501611cc0565b9361139d611bda565b908260206113a9611efd565b966113b2611f0c565b97611489575b6113d98751998a938493631e7271df60e11b85528401526024830190611c13565b0381836108015af194851561147f57610393968496611463575b5061140e575b50505051918291602083526020830190611dc5565b6001549061141e8260070b612126565b67ffffffffffffffff199092169116176001556001600160a01b031690308203611449575b806113f9565b808080600f61145c955af1610269612154565b3880611443565b6114789196503d8086833e6105a08183611c84565b94386113f3565b84513d85823e3d90fd5b6001546114988160070b612126565b67ffffffffffffffff19909116908516176001556001600160a01b038516833082036114c6575b50506113b8565b808080600f6114d9955af1610269612154565b38836114bf565b5090346102745760206114f236611d83565b93610da984519586938493632d4ecd4b60e11b85528401611feb565b509034610274578260031936011261027457828151809363014d140b60e41b8252816108015afa9182156105b0578361039394936107db57505051918291602083526020830190611f37565b50903461027457828061159261122161157236611d83565b86939193519283916020830195632d4ecd4b60e11b875260248401611feb565b51906108015af46115a1612154565b50156115ab578280f35b906020608492519162461bcd60e51b8352820152602160248201527f6661696c65642064656c656761746543616c6c20746f20707265636f6d70696c6044820152606560f81b6064820152fd5b509034610274576060366003190112610274576001600160401b0382358181116102f457938061162e61165f9636908701611cc0565b611636611f1b565b9561163f611efd565b966116f5575b855163b46a8d6160e01b8152978892839230908401611feb565b0381836108015af19384156116e9576103939582956116cd575b5061169257505051918291602083526020830190611dc5565b6116c691600154906116a68260070b612126565b16906001600160401b03191617600155808080600f335af1610269612154565b3880610577565b6116e29195503d8084833e6105a08183611c84565b9338611679565b508251903d90823e3d90fd5b6001546117048160070b612126565b8616906001600160401b0319161760015561172983808080600f335af1610269612154565b611645565b50903461027457602036600319011261027457828235926001600160401b0384116102f85761176361055d9436908301611cc0565b835163b46a8d6160e01b815294859283929030908401611feb565b828185346102f85760803660031901126102f85761179a611bbf565b6117a2611bda565b936001600160401b03926044358481116106b5576117c4869136908501611cc0565b916117cd611f0c565b936117ff8251948593849363ad5c4cdd60e01b855260018060a01b03809a169085015260248401526044830190611c13565b038183305af1611852575b50611813578280f35b82600f81939261184a9683946001549061182f8260070b612126565b16906001600160401b03191617600155165af1610269612154565b818181808280f35b611865903d8087833e6105a08183611c84565b508661180a565b5034610274576080366003190112610274576001600160401b039181358381116102f45761189d9036908401611cc0565b6024358481116106b5576118b660209136908601611e4b565b916118bf611efd565b946118c8611f0c565b95611962575b6118eb85519485938493631758efa960e11b855230908501612245565b0381886108015af19182156102a657508491611944575b501561027457611910575080f35b600154906119208260070b612126565b16906001600160401b0319161760015561097f81808080600f335af1610269612154565b61195c915060203d811161029f576102918183611c84565b38611902565b6001546119718160070b612126565b8816906001600160401b0319161760015561199688808080600f335af1610269612154565b6118ce565b50903461027457826119ac36611d83565b9361055d8451958693849363b46a8d6160e01b85528401611feb565b50346102745760209081600319360112610755578035936001600160401b03918286116102f85781846119ff879836908501611cc0565b928751611a0b81611c38565b606099818b80935282858201520152611a3b885194859384936354212a8960e01b85528401526024830190611c13565b03816108015afa928315611b39578293611a9e575b505050610393918351948594828652611a8d611a76855184868a01526080890190611c13565b9385015193601f19948589830301848a0152611d07565b930151918584030190850152611d07565b909192503d8084843e611ab18184611c84565b8201918481840312610755578051908282116102f45701868184031261075557855193611add85611c38565b81518381116102f85784611af2918401612044565b8552858201518381116102f85784611b0b918401612289565b8686015286820151928311610505575091611b2c9161039395949301612289565b8482015290913880611a50565b85513d84823e3d90fd5b9150503461027457602036600319011261027457918061039393611b65611bbf565b6305431f4560e41b602083019081526001600160a01b03909116602480840191909152825290611b9481611c38565b51906108015afa90611bad611ba7612154565b92612389565b51918291602083526020830190611c13565b600435906001600160a01b0382168203611bd557565b600080fd5b602435906001600160a01b0382168203611bd557565b60005b838110611c035750506000910152565b8181015183820152602001611bf3565b90602091611c2c81518092818552858086019101611bf0565b601f01601f1916010190565b606081019081106001600160401b03821117611c5357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611c5357604052565b90601f801991011681019081106001600160401b03821117611c5357604052565b6001600160401b038111611c5357601f01601f191660200190565b81601f82011215611bd557803590611cd782611ca5565b92611ce56040519485611c84565b82845260208383010111611bd557816000926020809301838601378301015290565b908082519081815260208091019281808460051b8301019501936000915b848310611d355750505050505090565b9091929394958480600192601f19858203018652895190611d5e82516060808452830190611c13565b91838101518483015260ff604080920151169101529801930193019194939290611d25565b906040600319830112611bd5576004356001600160a01b0381168103611bd55791602435906001600160401b038211611bd557611dc291600401611cc0565b90565b908082519081815260208091019281808460051b8301019501936000915b848310611df35750505050505090565b9091929394958480600192601f198582030186528951908280611e1e84516040808652850190611c13565b9301519101529801930193019194939290611de3565b6001600160401b038111611c535760051b60200190565b81601f82011215611bd5578035611e6181611e34565b92604091611e7183519586611c84565b808552602093848087019260051b82010193838511611bd557858201925b858410611ea0575050505050505090565b6001600160401b03908435828111611bd55784019083601f198389030112611bd5578351611ecd81611c69565b89830135938411611bd5578483611eea8a8d809881980101611cc0565b8352013583820152815201930192611e8f565b604435908115158203611bd557565b606435908115158203611bd557565b602435908115158203611bd557565b35908115158203611bd557565b90815180825260208092019182818360051b82019501936000915b848310611f625750505050505090565b90919293949584808284600194038652895190611f8782516060808452830190611c13565b91838101518483015260ff604080920151169101529801930193019194939290611f52565b6024359063ffffffff82168203611bd557565b35906001600160401b0382168203611bd557565b90816020910312611bd557518015158103611bd55790565b6001600160a01b039091168152604060208201819052611dc292910190611c13565b9092919261201a81611ca5565b916120286040519384611c84565b829482845282820111611bd5576020612042930190611bf0565b565b9080601f83011215611bd5578151611dc29260200161200d565b906020908183820312611bd55782516001600160401b0393848211611bd557019080601f83011215611bd557815161209581611e34565b9460406120a481519788611c84565b828752858088019360051b86010194848611611bd557868101935b8685106120d157505050505050505090565b8451848111611bd557820183601f198289030112611bd5578351916120f583611c69565b8982015192868411611bd55785836121138b8e809881980101612044565b83520151838201528152019401936120bf565b60070b677fffffffffffffff811461213e5760010190565b634e487b7160e01b600052601160045260246000fd5b3d1561217f573d9061216582611ca5565b916121736040519384611c84565b82523d6000602084013e565b606090565b1561218b57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fd5b6001600160a01b03909116815263ffffffff909116602082015260400190565b60070b60010190677fffffffffffffff8213677fffffffffffffff1983121761213e57565b60070b6000190190677fffffffffffffff198212677fffffffffffffff83131761213e57565b6001600160a01b039091168152606060208201819052611dc293919261226d91840190611c13565b916040818403910152611dc5565b519060ff82168203611bd557565b9080601f83011215611bd55781516122a081611e34565b926040916122b083519586611c84565b808552602093848087019260051b84010193818511611bd557858401925b8584106122df575050505050505090565b8351906001600160401b0391828111611bd55786019060609283601f198488030112611bd55784519061231182611c38565b8a840151908111611bd5578a948461233189886123419581990101612044565b845287810151868501520161227b565b858201528152019301926122ce565b90602082820312611bd55781516001600160401b038111611bd557611dc29201612289565b51906001600160401b0382168203611bd557565b1561239057565b60405162461bcd60e51b815260206004820152601f60248201527f6661696c65642073746174696343616c6c20746f20707265636f6d70696c65006044820152606490fdfea2646970667358221220c29b806ba0c5393e3d3328caa418ca6534f2dcf4f200fd01cb544b8d104e1e3564736f6c63430008140033", + "deployedBytecode": "0x6080604081815260048036101561001557600080fd5b600092833560e01c90816301b6800014611b43575080630c05e9e4146119c85780630da847681461199b578063151732ec1461186c578381631b0502071461177e57508063201139a21461172e5780632947221b146115f8578063296c60aa1461155a578063382d823c1461150e57806346e16d34146114e0578063613d4de81461136257806361bc221a146113405780636b7a547c146112b15780636f669da41461127157806378a5dfd114611244578063796b96d2146111e75780637c9db0bb1461119257806388b2d58114610e7257806393574cd114610de9578063963516e414610d58578063ad5c4cdd14610d00578063b2d1788314610b8e578063b6a216ae14610a27578063be4efc57146108c8578063cb85aa0a1461080f578063d0e30db014610800578063d3f831be14610759578063dd987c20146106b9578063ddbfa271146105ba578063e0421e3914610508578063e236c7a6146102fc5763f9ed9b671461018557600080fd5b8290346102f85760803660031901126102f8576101a0611bbf565b6001600160401b03936024358581116102f45760206101c56102109236908701611e4b565b6101cd611efd565b946101d6611f0c565b956102af575b8451630b4ac1e760e21b81526001600160a01b03909116968101879052602481018590529283918291906044830190611dc5565b0381886108015af19182156102a657508491610278575b501561027457610235575080f35b8180600f819361026f966001549061024f8260070b612126565b16906001600160401b031916176001555af1610269612154565b50612184565b388180f35b8280fd5b610299915060203d811161029f575b6102918183611c84565b810190611fd3565b38610227565b503d610287565b513d86823e3d90fd5b6001546102be8160070b612126565b67ffffffffffffffff19909116908a16176001556102ef88808080600f6001600160a01b0387165af1610269612154565b6101dc565b8480fd5b5080fd5b508234610505576020806003193601126102f857610318611bbf565b8451630a97c34560e31b81526001600160a01b039091169381019390935281836024816108015afa9182156104fa57809381936103e8575b50929093918251948386948501908086528451809252606086018360608460051b890101960197915b838310610397578787038589015287806103938989611f37565b0390f35b919360019193959750806103d48198605f198d82030187528b5190836103c4835189845289840190611c13565b9201519084818403910152611d07565b990193019301909288969492979593610379565b935091503d8083853e6103fb8185611c84565b830184848203126102745783516001600160401b03908181116102f45785019482601f870112156102f45785519561043287611e34565b9661043f89519889611c84565b808852858089019160051b830101918583116104f657868101915b8383106104825750505050838101519182116102f45761047b929101612289565b9185610350565b82518681116104f25782018b601f19828a0301126104f2578b51906104a682611c69565b898101518881116104ee57898b6104bf92840101612044565b82528c810151908882116104ee57916104df8a8c80969481960101612289565b8382015281520192019161045a565b8b80fd5b8980fd5b8780fd5b8451903d90823e3d90fd5b80fd5b509034610274576020366003190112610274578282356001600160401b0381116102f85761053b60209136908601611cc0565b9361055d84519586938493631e7271df60e11b85528401526024830190611c13565b0381836108015af19182156105b05783610393949361058b575b505051918291602083526020830190611dc5565b6105a89293503d8091833e6105a08183611c84565b81019061205e565b903880610577565b81513d85823e3d90fd5b509034610274576060366003190112610274576105d5611bbf565b916001600160401b03906024358281116106b5576105f69036908301611cc0565b93604435908382116106b15761061160209236908501611e4b565b92610650600154946106258660070b6121fa565b871667ffffffffffffffff19968716176001558751631758efa960e11b815298899485948501612245565b0381886108015af19384156106a75760209594610688575b50600154916106798360070b61221f565b16911617600155519015158152f35b6106a0919450853d811161029f576102918183611c84565b9238610668565b83513d87823e3d90fd5b8680fd5b8580fd5b5090806003193601126102745781356001600160401b03811161075557610711926106e960209236908301611cc0565b90835194859283926353266bbb60e01b84523090840152606060248401526064830190611c13565b60243560448301520381866108005af190811561074c5750610731575080f35b6107489060203d811161029f576102918183611c84565b5080f35b513d84823e3d90fd5b8380fd5b509034610274576020366003190112610274578282356001600160401b0381116102f85761078c60209136908601611cc0565b936107ae845195869384936342d9696d60e11b85528401526024830190611c13565b03816108015afa9182156105b0578361039394936107db575b505051918291602083526020830190611f37565b6107f89293503d8091833e6107f08183611c84565b810190612350565b9038806107c7565b83806003193601126105055780f35b509190346102f85760203660031901126102f85761082b611bbf565b81516305431f4560e41b81526001600160a01b039091169381019390935281836024816108015afa9182156108bd578092610876575b81516020808252819061039390820186611c13565b9091503d8082853e6108888185611c84565b8301926020818503126102f8578051916001600160401b0383116105055750926108b6916103939401612044565b9038610861565b9051903d90823e3d90fd5b50346102745760603660031901126102745780359163ffffffff831683036107555761091f60206108f7611f1b565b94610900611efd565b956109e7575b835180938192632efe8a5f60e01b8352308884016121da565b0381886108015af19081156109dd5785916109bf575b50156109825750506109445780f35b6001546109538160070b612126565b6001600160401b0316906001600160401b0319161760015561097f81808080600f335af1610269612154565b80f35b906020606492519162461bcd60e51b835282015260176024820152766661696c656420746f20636c61696d207265776172647360481b6044820152fd5b6109d7915060203d811161029f576102918183611c84565b38610935565b82513d87823e3d90fd5b6001546109f68160070b612126565b6001600160401b0316906001600160401b03191617600155610a2287808080600f335af1610269612154565b610906565b508290346102f8576020918260031936011261050557610a45611bbf565b845163a66cb60560e01b81526001600160a01b039091169281019290925280826024816108015afa918215610b82578192610ad5575b5083519280840190808552835180925280868601968360051b870101940192955b828710610aa95785850386f35b909192938280610ac5600193603f198a82030186528851611c13565b9601920196019592919092610a9c565b9091503d8083833e610ae78183611c84565b810183828203126102745781516001600160401b03928382116102f457019080601f8301121561075557815190610b1d82611e34565b93610b2a88519586611c84565b828552868086019360051b850101938285116106b157878101935b858510610b59575050505050509084610a7b565b8451838111610b7e578991610b7386848094870101612044565b815201940193610b45565b8880fd5b508351903d90823e3d90fd5b509034610274576060366003190112610274576001600160401b0382358181116102f457610bbf9036908501611cc0565b92610bc8611bda565b916044359081116106b557610be09036908301611cc0565b91835191632d4ecd4b60e11b835282610bfe60209733848401611feb565b0392868161080195818b885af1908115610cf6578891610cd9575b5015610c965791610c42939187809487519687958694859363b46a8d6160e01b85528401611feb565b03925af1938415610c8b578094610c69575b50506103939051928284938452830190611dc5565b61039392945090610c83913d8091833e6105a08183611c84565b929038610c54565b8251903d90823e3d90fd5b845162461bcd60e51b8152908101869052601e60248201527f6661696c656420746f20736574207769746864726177206164647265737300006044820152606490fd5b610cf09150873d891161029f576102918183611c84565b38610c19565b86513d8a823e3d90fd5b5090346102745782610d1136611d83565b93610d2d8451958693849363b46a8d6160e01b85528401611feb565b0381836108015af190811561074c5750610d45575080fd5b6102f8903d8084833e6105a08183611c84565b5090346102745760203660031901126102745781356001600160401b03811161075557610da992610d8e60209236908301611cc0565b8351632d4ecd4b60e11b815294859283929030908401611feb565b0381866108015af19182156105b05760209392610dca575b50519015158152f35b610de2919250833d811161029f576102918183611c84565b9038610dc1565b50346102745781600319360112610274579160209283610e07611bbf565b610e0f611fac565b92610e2b86519485938493632efe8a5f60e01b855284016121da565b0381856108015af1829181610e53575b50610e4b5750905b519015158152f35b905090610e43565b610e6b919250853d811161029f576102918183611c84565b9038610e3b565b508290346102f857600319608036820112610274576001600160401b0382358181116102f457610ea59036908501611cc0565b926024358281168091036106b557604435918383168093036106b1576064358481116104f65780360360a087820112610b7e57895196610ee488611c69565b6060958689528a6020809a0152610f118c519a63479239e760e11b8c526080878d015260848c0190611c13565b9560248b015260448a0152888503016064890152818301359060221901811215610b7e5781019182013591602401858311610b7e578236038113610b7e57878484610fb6608484968f8f9960c098601f9f9e9d9c60a090528160a089015289880137898886880101528b610f8760248401611fbf565b168d8701528b610f9960448401611fbf565b1690860152610faa60648201611f2a565b15158a86015201611f2a565b15156080830152891999018916010301816108015afa9485156111885786948796611054575b5050865187815284518189018190529096878301958501925b82821061102657505050508161101b869787860383890152865190808752860190611c13565b940151169101520390f35b835180518616885286015180518789015286015160ff168a8801529586019592850192600190910190610ff5565b91955093503d8087863e6110688186611c84565b84019387818603126106b15780518381116104f657810185601f820112156104f657805161109581611e34565b936110a28b519586611c84565b8185528689818701930284010192888411611184578701915b838310611127575050505083810151908382116104f6570187818603126106b1578751946110e886611c69565b8151848111610b7e57820181601f82011215610b7e57916111128692848461111a9651910161200d565b875201612375565b8385015292938780610fdc565b8289038a81126104ee578c8381519261113f84611c69565b61114887612375565b845201126104ee578a9189918e61117181519161116483611c69565b858901518352880161227b565b84820152838201528152019201916110bb565b8a80fd5b87513d88823e3d90fd5b509034610274576020366003190112610274578282356001600160401b0381116102f8576111c560209136908601611cc0565b936107ae845195869384936307ba81ef60e31b85528401526024830190611c13565b50508134610505578061097f9261122161122f61120336611d83565b9093519283916020830195632d4ecd4b60e11b875260248401611feb565b03601f198101835282611c84565b51906108015afa61123e612154565b50612389565b509034610274578261125536611d83565b936107ae845195869384936326b558ed60e21b85528401611feb565b509034610274578060031936011261027457602061128d611bbf565b611295611fac565b93610da984519586938493632efe8a5f60e01b855284016121da565b5090346102745780600319360112610274576112cb611bbf565b6001600160401b03906024358281116106b5576112ed60209136908701611e4b565b94600154926112fe8460070b6121fa565b85166001600160401b03198095161760015561065086519788938493630b4ac1e760e21b855260018060a01b0316908401528760248401526044830190611dc5565b5050346102f857816003193601126102f85760209060015460070b9051908152f35b509034610274576080366003190112610274576001600160401b039282358481116102f8576113949036908501611cc0565b9361139d611bda565b908260206113a9611efd565b966113b2611f0c565b97611489575b6113d98751998a938493631e7271df60e11b85528401526024830190611c13565b0381836108015af194851561147f57610393968496611463575b5061140e575b50505051918291602083526020830190611dc5565b6001549061141e8260070b612126565b67ffffffffffffffff199092169116176001556001600160a01b031690308203611449575b806113f9565b808080600f61145c955af1610269612154565b3880611443565b6114789196503d8086833e6105a08183611c84565b94386113f3565b84513d85823e3d90fd5b6001546114988160070b612126565b67ffffffffffffffff19909116908516176001556001600160a01b038516833082036114c6575b50506113b8565b808080600f6114d9955af1610269612154565b38836114bf565b5090346102745760206114f236611d83565b93610da984519586938493632d4ecd4b60e11b85528401611feb565b509034610274578260031936011261027457828151809363014d140b60e41b8252816108015afa9182156105b0578361039394936107db57505051918291602083526020830190611f37565b50903461027457828061159261122161157236611d83565b86939193519283916020830195632d4ecd4b60e11b875260248401611feb565b51906108015af46115a1612154565b50156115ab578280f35b906020608492519162461bcd60e51b8352820152602160248201527f6661696c65642064656c656761746543616c6c20746f20707265636f6d70696c6044820152606560f81b6064820152fd5b509034610274576060366003190112610274576001600160401b0382358181116102f457938061162e61165f9636908701611cc0565b611636611f1b565b9561163f611efd565b966116f5575b855163b46a8d6160e01b8152978892839230908401611feb565b0381836108015af19384156116e9576103939582956116cd575b5061169257505051918291602083526020830190611dc5565b6116c691600154906116a68260070b612126565b16906001600160401b03191617600155808080600f335af1610269612154565b3880610577565b6116e29195503d8084833e6105a08183611c84565b9338611679565b508251903d90823e3d90fd5b6001546117048160070b612126565b8616906001600160401b0319161760015561172983808080600f335af1610269612154565b611645565b50903461027457602036600319011261027457828235926001600160401b0384116102f85761176361055d9436908301611cc0565b835163b46a8d6160e01b815294859283929030908401611feb565b828185346102f85760803660031901126102f85761179a611bbf565b6117a2611bda565b936001600160401b03926044358481116106b5576117c4869136908501611cc0565b916117cd611f0c565b936117ff8251948593849363ad5c4cdd60e01b855260018060a01b03809a169085015260248401526044830190611c13565b038183305af1611852575b50611813578280f35b82600f81939261184a9683946001549061182f8260070b612126565b16906001600160401b03191617600155165af1610269612154565b818181808280f35b611865903d8087833e6105a08183611c84565b508661180a565b5034610274576080366003190112610274576001600160401b039181358381116102f45761189d9036908401611cc0565b6024358481116106b5576118b660209136908601611e4b565b916118bf611efd565b946118c8611f0c565b95611962575b6118eb85519485938493631758efa960e11b855230908501612245565b0381886108015af19182156102a657508491611944575b501561027457611910575080f35b600154906119208260070b612126565b16906001600160401b0319161760015561097f81808080600f335af1610269612154565b61195c915060203d811161029f576102918183611c84565b38611902565b6001546119718160070b612126565b8816906001600160401b0319161760015561199688808080600f335af1610269612154565b6118ce565b50903461027457826119ac36611d83565b9361055d8451958693849363b46a8d6160e01b85528401611feb565b50346102745760209081600319360112610755578035936001600160401b03918286116102f85781846119ff879836908501611cc0565b928751611a0b81611c38565b606099818b80935282858201520152611a3b885194859384936354212a8960e01b85528401526024830190611c13565b03816108015afa928315611b39578293611a9e575b505050610393918351948594828652611a8d611a76855184868a01526080890190611c13565b9385015193601f19948589830301848a0152611d07565b930151918584030190850152611d07565b909192503d8084843e611ab18184611c84565b8201918481840312610755578051908282116102f45701868184031261075557855193611add85611c38565b81518381116102f85784611af2918401612044565b8552858201518381116102f85784611b0b918401612289565b8686015286820151928311610505575091611b2c9161039395949301612289565b8482015290913880611a50565b85513d84823e3d90fd5b9150503461027457602036600319011261027457918061039393611b65611bbf565b6305431f4560e41b602083019081526001600160a01b03909116602480840191909152825290611b9481611c38565b51906108015afa90611bad611ba7612154565b92612389565b51918291602083526020830190611c13565b600435906001600160a01b0382168203611bd557565b600080fd5b602435906001600160a01b0382168203611bd557565b60005b838110611c035750506000910152565b8181015183820152602001611bf3565b90602091611c2c81518092818552858086019101611bf0565b601f01601f1916010190565b606081019081106001600160401b03821117611c5357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611c5357604052565b90601f801991011681019081106001600160401b03821117611c5357604052565b6001600160401b038111611c5357601f01601f191660200190565b81601f82011215611bd557803590611cd782611ca5565b92611ce56040519485611c84565b82845260208383010111611bd557816000926020809301838601378301015290565b908082519081815260208091019281808460051b8301019501936000915b848310611d355750505050505090565b9091929394958480600192601f19858203018652895190611d5e82516060808452830190611c13565b91838101518483015260ff604080920151169101529801930193019194939290611d25565b906040600319830112611bd5576004356001600160a01b0381168103611bd55791602435906001600160401b038211611bd557611dc291600401611cc0565b90565b908082519081815260208091019281808460051b8301019501936000915b848310611df35750505050505090565b9091929394958480600192601f198582030186528951908280611e1e84516040808652850190611c13565b9301519101529801930193019194939290611de3565b6001600160401b038111611c535760051b60200190565b81601f82011215611bd5578035611e6181611e34565b92604091611e7183519586611c84565b808552602093848087019260051b82010193838511611bd557858201925b858410611ea0575050505050505090565b6001600160401b03908435828111611bd55784019083601f198389030112611bd5578351611ecd81611c69565b89830135938411611bd5578483611eea8a8d809881980101611cc0565b8352013583820152815201930192611e8f565b604435908115158203611bd557565b606435908115158203611bd557565b602435908115158203611bd557565b35908115158203611bd557565b90815180825260208092019182818360051b82019501936000915b848310611f625750505050505090565b90919293949584808284600194038652895190611f8782516060808452830190611c13565b91838101518483015260ff604080920151169101529801930193019194939290611f52565b6024359063ffffffff82168203611bd557565b35906001600160401b0382168203611bd557565b90816020910312611bd557518015158103611bd55790565b6001600160a01b039091168152604060208201819052611dc292910190611c13565b9092919261201a81611ca5565b916120286040519384611c84565b829482845282820111611bd5576020612042930190611bf0565b565b9080601f83011215611bd5578151611dc29260200161200d565b906020908183820312611bd55782516001600160401b0393848211611bd557019080601f83011215611bd557815161209581611e34565b9460406120a481519788611c84565b828752858088019360051b86010194848611611bd557868101935b8685106120d157505050505050505090565b8451848111611bd557820183601f198289030112611bd5578351916120f583611c69565b8982015192868411611bd55785836121138b8e809881980101612044565b83520151838201528152019401936120bf565b60070b677fffffffffffffff811461213e5760010190565b634e487b7160e01b600052601160045260246000fd5b3d1561217f573d9061216582611ca5565b916121736040519384611c84565b82523d6000602084013e565b606090565b1561218b57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fd5b6001600160a01b03909116815263ffffffff909116602082015260400190565b60070b60010190677fffffffffffffff8213677fffffffffffffff1983121761213e57565b60070b6000190190677fffffffffffffff198212677fffffffffffffff83131761213e57565b6001600160a01b039091168152606060208201819052611dc293919261226d91840190611c13565b916040818403910152611dc5565b519060ff82168203611bd557565b9080601f83011215611bd55781516122a081611e34565b926040916122b083519586611c84565b808552602093848087019260051b84010193818511611bd557858401925b8584106122df575050505050505090565b8351906001600160401b0391828111611bd55786019060609283601f198488030112611bd55784519061231182611c38565b8a840151908111611bd5578a948461233189886123419581990101612044565b845287810151868501520161227b565b858201528152019301926122ce565b90602082820312611bd55781516001600160401b038111611bd557611dc29201612289565b51906001600160401b0382168203611bd557565b1561239057565b60405162461bcd60e51b815260206004820152601f60248201527f6661696c65642073746174696343616c6c20746f20707265636f6d70696c65006044820152606490fdfea2646970667358221220c29b806ba0c5393e3d3328caa418ca6534f2dcf4f200fd01cb544b8d104e1e3564736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/FlashLoan.json b/precompiles/testutil/contracts/FlashLoan.json index 48eb4f360..eae5db6db 100644 --- a/precompiles/testutil/contracts/FlashLoan.json +++ b/precompiles/testutil/contracts/FlashLoan.json @@ -93,8 +93,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061145d806100606000396000f3fe60806040526004361061003f5760003560e01c80638da5cb5b146100445780638f5184301461006f5780639b4f21a914610098578063b8621924146100c8575b600080fd5b34801561005057600080fd5b506100596100f8565b6040516100669190610bf4565b60405180910390f35b34801561007b57600080fd5b5061009660048036038101906100919190610dcb565b61011c565b005b6100b260048036038101906100ad9190610e3a565b6101e7565b6040516100bf9190610eb1565b60405180910390f35b6100e260048036038101906100dd9190610e3a565b6105bf565b6040516100ef9190610eb1565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb8585856040518463ffffffff1660e01b815260040161015d93929190610f5a565b6020604051808303816000875af115801561017c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a09190610fc4565b9050806101e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d99061103d565b60405180910390fd5b600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026f906110cf565b60405180910390fd5b60003490506000849050818173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016102be9291906110ef565b602060405180830381865afa1580156102db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ff919061112d565b1015610340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610337906111a6565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161037b9190610bf4565b602060405180830381865afa158015610398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bc919061112d565b905060008273ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016103fd939291906111c6565b6020604051808303816000875af115801561041c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104409190610fc4565b905080610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061126f565b60405180910390fd5b838261048e91906112be565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c79190610bf4565b602060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610508919061112d565b14610548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053f9061133e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16638f5184303088876040518463ffffffff1660e01b815260040161058593929190610f5a565b600060405180830381600087803b15801561059f57600080fd5b505af19250505080156105b0575060015b50600194505050505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610647906110cf565b60405180910390fd5b60003490506000849050818173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016106969291906110ef565b602060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d7919061112d565b1015610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f906111a6565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107539190610bf4565b602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610794919061112d565b905060008273ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016107d5939291906111c6565b6020604051808303816000875af11580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108189190610fc4565b90508061085a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108519061126f565b60405180910390fd5b838261086691906112be565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161089f9190610bf4565b602060405180830381865afa1580156108bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e0919061112d565b14610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061133e565b60405180910390fd5b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3088876040518463ffffffff1660e01b815260040161095f93929190610f5a565b6020604051808303816000875af115801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190610fc4565b9050806109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db9061103d565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a1d9190610bf4565b602060405180830381865afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e919061112d565b91508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401610a9b92919061135e565b6020604051808303816000875af1158015610aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ade9190610fc4565b508382610aeb9190611387565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b249190610bf4565b602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b65919061112d565b14610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90611407565b60405180910390fd5b600194505050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bde82610bb3565b9050919050565b610bee81610bd3565b82525050565b6000602082019050610c096000830184610be5565b92915050565b6000604051905090565b600080fd5b600080fd5b610c2c81610bd3565b8114610c3757600080fd5b50565b600081359050610c4981610c23565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ca282610c59565b810181811067ffffffffffffffff82111715610cc157610cc0610c6a565b5b80604052505050565b6000610cd4610c0f565b9050610ce08282610c99565b919050565b600067ffffffffffffffff821115610d0057610cff610c6a565b5b610d0982610c59565b9050602081019050919050565b82818337600083830152505050565b6000610d38610d3384610ce5565b610cca565b905082815260208101848484011115610d5457610d53610c54565b5b610d5f848285610d16565b509392505050565b600082601f830112610d7c57610d7b610c4f565b5b8135610d8c848260208601610d25565b91505092915050565b6000819050919050565b610da881610d95565b8114610db357600080fd5b50565b600081359050610dc581610d9f565b92915050565b600080600060608486031215610de457610de3610c19565b5b6000610df286828701610c3a565b935050602084013567ffffffffffffffff811115610e1357610e12610c1e565b5b610e1f86828701610d67565b9250506040610e3086828701610db6565b9150509250925092565b60008060408385031215610e5157610e50610c19565b5b6000610e5f85828601610c3a565b925050602083013567ffffffffffffffff811115610e8057610e7f610c1e565b5b610e8c85828601610d67565b9150509250929050565b60008115159050919050565b610eab81610e96565b82525050565b6000602082019050610ec66000830184610ea2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f06578082015181840152602081019050610eeb565b60008484015250505050565b6000610f1d82610ecc565b610f278185610ed7565b9350610f37818560208601610ee8565b610f4081610c59565b840191505092915050565b610f5481610d95565b82525050565b6000606082019050610f6f6000830186610be5565b8181036020830152610f818185610f12565b9050610f906040830184610f4b565b949350505050565b610fa181610e96565b8114610fac57600080fd5b50565b600081519050610fbe81610f98565b92915050565b600060208284031215610fda57610fd9610c19565b5b6000610fe884828501610faf565b91505092915050565b7f6661696c656420746f2064656c65676174650000000000000000000000000000600082015250565b6000611027601283610ed7565b915061103282610ff1565b602082019050919050565b600060208201905081810360008301526110568161101a565b9050919050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006110b9602183610ed7565b91506110c48261105d565b604082019050919050565b600060208201905081810360008301526110e8816110ac565b9050919050565b60006040820190506111046000830185610be5565b6111116020830184610be5565b9392505050565b60008151905061112781610d9f565b92915050565b60006020828403121561114357611142610c19565b5b600061115184828501611118565b91505092915050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000611190601683610ed7565b915061119b8261115a565b602082019050919050565b600060208201905081810360008301526111bf81611183565b9050919050565b60006060820190506111db6000830186610be5565b6111e86020830185610be5565b6111f56040830184610f4b565b949350505050565b7f4661696c656420746f207472616e7366657220746f6b656e7320666f7220666c60008201527f617368206c6f616e000000000000000000000000000000000000000000000000602082015250565b6000611259602883610ed7565b9150611264826111fd565b604082019050919050565b600060208201905081810360008301526112888161124c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112c982610d95565b91506112d483610d95565b92508282019050808211156112ec576112eb61128f565b5b92915050565b7f466c617368206c6f616e206661696c6564000000000000000000000000000000600082015250565b6000611328601183610ed7565b9150611333826112f2565b602082019050919050565b600060208201905081810360008301526113578161131b565b9050919050565b60006040820190506113736000830185610be5565b6113806020830184610f4b565b9392505050565b600061139282610d95565b915061139d83610d95565b92508282039050818111156113b5576113b461128f565b5b92915050565b7f466c617368206c6f616e2072657061796d656e74206661696c65640000000000600082015250565b60006113f1601b83610ed7565b91506113fc826113bb565b602082019050919050565b60006020820190508181036000830152611420816113e4565b905091905056fea2646970667358221220b85319a4c6c59c5c0a89c077d70e72859c68e456df7e4e6a1e65ed2d4eadbcb664736f6c63430008140033", - "deployedBytecode": "0x60806040526004361061003f5760003560e01c80638da5cb5b146100445780638f5184301461006f5780639b4f21a914610098578063b8621924146100c8575b600080fd5b34801561005057600080fd5b506100596100f8565b6040516100669190610bf4565b60405180910390f35b34801561007b57600080fd5b5061009660048036038101906100919190610dcb565b61011c565b005b6100b260048036038101906100ad9190610e3a565b6101e7565b6040516100bf9190610eb1565b60405180910390f35b6100e260048036038101906100dd9190610e3a565b6105bf565b6040516100ef9190610eb1565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb8585856040518463ffffffff1660e01b815260040161015d93929190610f5a565b6020604051808303816000875af115801561017c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a09190610fc4565b9050806101e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d99061103d565b60405180910390fd5b600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026f906110cf565b60405180910390fd5b60003490506000849050818173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016102be9291906110ef565b602060405180830381865afa1580156102db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ff919061112d565b1015610340576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610337906111a6565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161037b9190610bf4565b602060405180830381865afa158015610398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bc919061112d565b905060008273ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016103fd939291906111c6565b6020604051808303816000875af115801561041c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104409190610fc4565b905080610482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061126f565b60405180910390fd5b838261048e91906112be565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c79190610bf4565b602060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610508919061112d565b14610548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053f9061133e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16638f5184303088876040518463ffffffff1660e01b815260040161058593929190610f5a565b600060405180830381600087803b15801561059f57600080fd5b505af19250505080156105b0575060015b50600194505050505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610650576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610647906110cf565b60405180910390fd5b60003490506000849050818173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016106969291906110ef565b602060405180830381865afa1580156106b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d7919061112d565b1015610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f906111a6565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107539190610bf4565b602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610794919061112d565b905060008273ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016107d5939291906111c6565b6020604051808303816000875af11580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108189190610fc4565b90508061085a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108519061126f565b60405180910390fd5b838261086691906112be565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161089f9190610bf4565b602060405180830381865afa1580156108bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e0919061112d565b14610920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109179061133e565b60405180910390fd5b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb3088876040518463ffffffff1660e01b815260040161095f93929190610f5a565b6020604051808303816000875af115801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190610fc4565b9050806109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db9061103d565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a1d9190610bf4565b602060405180830381865afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e919061112d565b91508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401610a9b92919061135e565b6020604051808303816000875af1158015610aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ade9190610fc4565b508382610aeb9190611387565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b249190610bf4565b602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b65919061112d565b14610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90611407565b60405180910390fd5b600194505050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bde82610bb3565b9050919050565b610bee81610bd3565b82525050565b6000602082019050610c096000830184610be5565b92915050565b6000604051905090565b600080fd5b600080fd5b610c2c81610bd3565b8114610c3757600080fd5b50565b600081359050610c4981610c23565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ca282610c59565b810181811067ffffffffffffffff82111715610cc157610cc0610c6a565b5b80604052505050565b6000610cd4610c0f565b9050610ce08282610c99565b919050565b600067ffffffffffffffff821115610d0057610cff610c6a565b5b610d0982610c59565b9050602081019050919050565b82818337600083830152505050565b6000610d38610d3384610ce5565b610cca565b905082815260208101848484011115610d5457610d53610c54565b5b610d5f848285610d16565b509392505050565b600082601f830112610d7c57610d7b610c4f565b5b8135610d8c848260208601610d25565b91505092915050565b6000819050919050565b610da881610d95565b8114610db357600080fd5b50565b600081359050610dc581610d9f565b92915050565b600080600060608486031215610de457610de3610c19565b5b6000610df286828701610c3a565b935050602084013567ffffffffffffffff811115610e1357610e12610c1e565b5b610e1f86828701610d67565b9250506040610e3086828701610db6565b9150509250925092565b60008060408385031215610e5157610e50610c19565b5b6000610e5f85828601610c3a565b925050602083013567ffffffffffffffff811115610e8057610e7f610c1e565b5b610e8c85828601610d67565b9150509250929050565b60008115159050919050565b610eab81610e96565b82525050565b6000602082019050610ec66000830184610ea2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f06578082015181840152602081019050610eeb565b60008484015250505050565b6000610f1d82610ecc565b610f278185610ed7565b9350610f37818560208601610ee8565b610f4081610c59565b840191505092915050565b610f5481610d95565b82525050565b6000606082019050610f6f6000830186610be5565b8181036020830152610f818185610f12565b9050610f906040830184610f4b565b949350505050565b610fa181610e96565b8114610fac57600080fd5b50565b600081519050610fbe81610f98565b92915050565b600060208284031215610fda57610fd9610c19565b5b6000610fe884828501610faf565b91505092915050565b7f6661696c656420746f2064656c65676174650000000000000000000000000000600082015250565b6000611027601283610ed7565b915061103282610ff1565b602082019050919050565b600060208201905081810360008301526110568161101a565b9050919050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006110b9602183610ed7565b91506110c48261105d565b604082019050919050565b600060208201905081810360008301526110e8816110ac565b9050919050565b60006040820190506111046000830185610be5565b6111116020830184610be5565b9392505050565b60008151905061112781610d9f565b92915050565b60006020828403121561114357611142610c19565b5b600061115184828501611118565b91505092915050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000611190601683610ed7565b915061119b8261115a565b602082019050919050565b600060208201905081810360008301526111bf81611183565b9050919050565b60006060820190506111db6000830186610be5565b6111e86020830185610be5565b6111f56040830184610f4b565b949350505050565b7f4661696c656420746f207472616e7366657220746f6b656e7320666f7220666c60008201527f617368206c6f616e000000000000000000000000000000000000000000000000602082015250565b6000611259602883610ed7565b9150611264826111fd565b604082019050919050565b600060208201905081810360008301526112888161124c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112c982610d95565b91506112d483610d95565b92508282019050808211156112ec576112eb61128f565b5b92915050565b7f466c617368206c6f616e206661696c6564000000000000000000000000000000600082015250565b6000611328601183610ed7565b9150611333826112f2565b602082019050919050565b600060208201905081810360008301526113578161131b565b9050919050565b60006040820190506113736000830185610be5565b6113806020830184610f4b565b9392505050565b600061139282610d95565b915061139d83610d95565b92508282039050818111156113b5576113b461128f565b5b92915050565b7f466c617368206c6f616e2072657061796d656e74206661696c65640000000000600082015250565b60006113f1601b83610ed7565b91506113fc826113bb565b602082019050919050565b60006020820190508181036000830152611420816113e4565b905091905056fea2646970667358221220b85319a4c6c59c5c0a89c077d70e72859c68e456df7e4e6a1e65ed2d4eadbcb664736f6c63430008140033", + "bytecode": "0x6080806040523461002857600080546001600160a01b03191633179055610a4f908161002e8239f35b600080fdfe6080604081815260048036101561001557600080fd5b600092833560e01c9081638da5cb5b1461070e575080638f518430146106605780639b4f21a9146104195763b86219241461004f57600080fd5b610058366107c6565b84549094916001600160a01b03916100739083163314610809565b8451636eb1769f60e11b815233858201908152306020828101919091529793909216918790829081906040010381855afa801561040f5784906103e0575b6100be915034111561085f565b8451926370a0823160e01b92838552308686015260249488818781875afa9081156102f25783916103af575b5087516323b872dd60e01b8152338882019081523060208201523460408201528a9082908190606001038187895af19081156103885790610132918591610392575b506108bc565b875190858252308883015289828881885afa91821561038857908a92918592610352575b5061018b939161016a610170923490610919565b1461093c565b8851809381926353266bbb60e01b83523490308c850161097c565b0381856108005af190811561032b57906101ac918391610335575b506109d8565b855192808452308685015287848681865afa93841561032b5782946102fc575b50865163a9059cbb60e01b815233878201523486820152888160448186885af180156102f257908992916102c5575b50858851809581938252308a8301525afa9182156102b9578192610286575b503483039283116102745750036102345750505160018152f35b606493601b9293519362461bcd60e51b85528401528201527f466c617368206c6f616e2072657061796d656e74206661696c656400000000006044820152fd5b634e487b7160e01b8152601185528390fd5b9091508681813d83116102b2575b61029e8183610732565b810103126102ae5751903861021a565b5080fd5b503d610294565b508551903d90823e3d90fd5b6102e490833d85116102eb575b6102dc8183610732565b8101906108a4565b50386101fb565b503d6102d2565b88513d85823e3d90fd5b9093508781813d8311610324575b6103148183610732565b810103126102ae575192386101cc565b503d61030a565b87513d84823e3d90fd5b61034c9150893d8b116102eb576102dc8183610732565b386101a6565b8092508391933d8311610381575b61036a8183610732565b8101031261037d57518991610170610156565b8380fd5b503d610360565b89513d86823e3d90fd5b6103a991508b3d8d116102eb576102dc8183610732565b3861012c565b90508881813d83116103d9575b6103c68183610732565b810103126103d55751386100ea565b8280fd5b503d6103bc565b508681813d8311610408575b6103f68183610732565b8101031261037d576100be90516100b1565b503d6103ec565b86513d86823e3d90fd5b5091610424366107c6565b82549094916001600160a01b039161043f9083163314610809565b8451636eb1769f60e11b815233848201908152306020828101919091529793909216918790829081906040010381855afa80156105c9578590610631575b61048a915034111561085f565b8451906370a0823160e01b80835230858401528783602481855afa9283156106275786936105f4575b5086516323b872dd60e01b81523386820190815230602082015234604082015289908290819060600103818a875af19081156105ea578992916104fc9189916105d357506108bc565b6024885180948193825230898301525afa9081156105c9578591610596575b5061016a61052a923490610919565b303b156103d557908261055393928551809581926308f5184360e41b835234903087850161097c565b038183305af1610568575b5050505160018152f35b67ffffffffffffffff8311610583575050815238808061055e565b634e487b7160e01b825260419052602490fd5b90508681813d83116105c2575b6105ad8183610732565b810103126105be575161016a61051b565b8480fd5b503d6105a3565b86513d87823e3d90fd5b6103a99150843d86116102eb576102dc8183610732565b88513d89823e3d90fd5b9092508781813d8311610620575b61060c8183610732565b8101031261061c575191386104b3565b8580fd5b503d610602565b87513d88823e3d90fd5b508681813d8311610659575b6106478183610732565b810103126105be5761048a905161047d565b503d61063d565b50346103d55760603660031901126103d55780356001600160a01b038116810361037d576024359067ffffffffffffffff82116105be576106a66020923690850161076a565b84516353266bbb60e01b815293849283926106c7926044359290850161097c565b0381866108005af1908115610702576106e7925083916106ea57506109d8565b80fd5b61034c915060203d81116102eb576102dc8183610732565b505051903d90823e3d90fd5b8490346102ae57816003193601126102ae5790546001600160a01b03168152602090f35b90601f8019910116810190811067ffffffffffffffff82111761075457604052565b634e487b7160e01b600052604160045260246000fd5b81601f820112156107c15780359067ffffffffffffffff8211610754576040519261079f601f8401601f191660200185610732565b828452602083830101116107c157816000926020809301838601378301015290565b600080fd5b9060406003198301126107c1576004356001600160a01b03811681036107c157916024359067ffffffffffffffff82116107c1576108069160040161076a565b90565b1561081057565b60405162461bcd60e51b815260206004820152602160248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6044820152603760f91b6064820152608490fd5b1561086657565b60405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606490fd5b908160209103126107c1575180151581036107c15790565b156108c357565b60405162461bcd60e51b815260206004820152602860248201527f4661696c656420746f207472616e7366657220746f6b656e7320666f7220666c60448201526730b9b4103637b0b760c11b6064820152608490fd5b9190820180921161092657565b634e487b7160e01b600052601160045260246000fd5b1561094357565b60405162461bcd60e51b8152602060048201526011602482015270119b185cda081b1bd85b8819985a5b1959607a1b6044820152606490fd5b9392919060018060a01b03168452602060608186015281519182606087015260005b8381106109c45750505060808160008260409488010152601f8019910116850101930152565b81810183015187820160800152820161099e565b156109df57565b60405162461bcd60e51b81526020600482015260126024820152716661696c656420746f2064656c656761746560701b6044820152606490fdfea2646970667358221220623c3a35889e520292f1a8bc7fd77edbb9e309cbac5c431f7a0b2f8a24f625fa64736f6c63430008140033", + "deployedBytecode": "0x6080604081815260048036101561001557600080fd5b600092833560e01c9081638da5cb5b1461070e575080638f518430146106605780639b4f21a9146104195763b86219241461004f57600080fd5b610058366107c6565b84549094916001600160a01b03916100739083163314610809565b8451636eb1769f60e11b815233858201908152306020828101919091529793909216918790829081906040010381855afa801561040f5784906103e0575b6100be915034111561085f565b8451926370a0823160e01b92838552308686015260249488818781875afa9081156102f25783916103af575b5087516323b872dd60e01b8152338882019081523060208201523460408201528a9082908190606001038187895af19081156103885790610132918591610392575b506108bc565b875190858252308883015289828881885afa91821561038857908a92918592610352575b5061018b939161016a610170923490610919565b1461093c565b8851809381926353266bbb60e01b83523490308c850161097c565b0381856108005af190811561032b57906101ac918391610335575b506109d8565b855192808452308685015287848681865afa93841561032b5782946102fc575b50865163a9059cbb60e01b815233878201523486820152888160448186885af180156102f257908992916102c5575b50858851809581938252308a8301525afa9182156102b9578192610286575b503483039283116102745750036102345750505160018152f35b606493601b9293519362461bcd60e51b85528401528201527f466c617368206c6f616e2072657061796d656e74206661696c656400000000006044820152fd5b634e487b7160e01b8152601185528390fd5b9091508681813d83116102b2575b61029e8183610732565b810103126102ae5751903861021a565b5080fd5b503d610294565b508551903d90823e3d90fd5b6102e490833d85116102eb575b6102dc8183610732565b8101906108a4565b50386101fb565b503d6102d2565b88513d85823e3d90fd5b9093508781813d8311610324575b6103148183610732565b810103126102ae575192386101cc565b503d61030a565b87513d84823e3d90fd5b61034c9150893d8b116102eb576102dc8183610732565b386101a6565b8092508391933d8311610381575b61036a8183610732565b8101031261037d57518991610170610156565b8380fd5b503d610360565b89513d86823e3d90fd5b6103a991508b3d8d116102eb576102dc8183610732565b3861012c565b90508881813d83116103d9575b6103c68183610732565b810103126103d55751386100ea565b8280fd5b503d6103bc565b508681813d8311610408575b6103f68183610732565b8101031261037d576100be90516100b1565b503d6103ec565b86513d86823e3d90fd5b5091610424366107c6565b82549094916001600160a01b039161043f9083163314610809565b8451636eb1769f60e11b815233848201908152306020828101919091529793909216918790829081906040010381855afa80156105c9578590610631575b61048a915034111561085f565b8451906370a0823160e01b80835230858401528783602481855afa9283156106275786936105f4575b5086516323b872dd60e01b81523386820190815230602082015234604082015289908290819060600103818a875af19081156105ea578992916104fc9189916105d357506108bc565b6024885180948193825230898301525afa9081156105c9578591610596575b5061016a61052a923490610919565b303b156103d557908261055393928551809581926308f5184360e41b835234903087850161097c565b038183305af1610568575b5050505160018152f35b67ffffffffffffffff8311610583575050815238808061055e565b634e487b7160e01b825260419052602490fd5b90508681813d83116105c2575b6105ad8183610732565b810103126105be575161016a61051b565b8480fd5b503d6105a3565b86513d87823e3d90fd5b6103a99150843d86116102eb576102dc8183610732565b88513d89823e3d90fd5b9092508781813d8311610620575b61060c8183610732565b8101031261061c575191386104b3565b8580fd5b503d610602565b87513d88823e3d90fd5b508681813d8311610659575b6106478183610732565b810103126105be5761048a905161047d565b503d61063d565b50346103d55760603660031901126103d55780356001600160a01b038116810361037d576024359067ffffffffffffffff82116105be576106a66020923690850161076a565b84516353266bbb60e01b815293849283926106c7926044359290850161097c565b0381866108005af1908115610702576106e7925083916106ea57506109d8565b80fd5b61034c915060203d81116102eb576102dc8183610732565b505051903d90823e3d90fd5b8490346102ae57816003193601126102ae5790546001600160a01b03168152602090f35b90601f8019910116810190811067ffffffffffffffff82111761075457604052565b634e487b7160e01b600052604160045260246000fd5b81601f820112156107c15780359067ffffffffffffffff8211610754576040519261079f601f8401601f191660200185610732565b828452602083830101116107c157816000926020809301838601378301015290565b600080fd5b9060406003198301126107c1576004356001600160a01b03811681036107c157916024359067ffffffffffffffff82116107c1576108069160040161076a565b90565b1561081057565b60405162461bcd60e51b815260206004820152602160248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6044820152603760f91b6064820152608490fd5b1561086657565b60405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606490fd5b908160209103126107c1575180151581036107c15790565b156108c357565b60405162461bcd60e51b815260206004820152602860248201527f4661696c656420746f207472616e7366657220746f6b656e7320666f7220666c60448201526730b9b4103637b0b760c11b6064820152608490fd5b9190820180921161092657565b634e487b7160e01b600052601160045260246000fd5b1561094357565b60405162461bcd60e51b8152602060048201526011602482015270119b185cda081b1bd85b8819985a5b1959607a1b6044820152606490fd5b9392919060018060a01b03168452602060608186015281519182606087015260005b8381106109c45750505060808160008260409488010152601f8019910116850101930152565b81810183015187820160800152820161099e565b156109df57565b60405162461bcd60e51b81526020600482015260126024820152716661696c656420746f2064656c656761746560701b6044820152606490fdfea2646970667358221220623c3a35889e520292f1a8bc7fd77edbb9e309cbac5c431f7a0b2f8a24f625fa64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/GovCaller.json b/precompiles/testutil/contracts/GovCaller.json index a0e6a48e6..159ac53ee 100644 --- a/precompiles/testutil/contracts/GovCaller.json +++ b/precompiles/testutil/contracts/GovCaller.json @@ -652,8 +652,8 @@ "type": "receive" } ], - "bytecode": "0x608060405234801561001057600080fd5b50613cdc806100206000396000f3fe6080604052600436106100f75760003560e01c80638e7431d31161008a578063bc7bdf7511610059578063bc7bdf7514610346578063d0e30db014610376578063e8702c3414610380578063ed6c08f7146103b0576100fe565b80638e7431d31461027957806391d6d8e7146102a957806397fd84d2146102d9578063b94c982214610309576100fe565b806361bc221a116100c657806361bc221a146101be57806361f09ad2146101e957806372ff5ec4146102195780637726ece014610249576100fe565b80630f6265fb14610103578063258691e21461013357806326c11ffa146101635780635e615a6b14610193576100fe565b366100fe57005b600080fd5b61011d60048036038101906101189190611fc8565b6103e0565b60405161012a9190612087565b60405180910390f35b61014d600480360381019061014891906120ce565b610901565b60405161015a9190612087565b60405180910390f35b61017d60048036038101906101789190612135565b610b87565b60405161018a9190612087565b60405180910390f35b34801561019f57600080fd5b506101a8610e0c565b6040516101b591906124e1565b60405180910390f35b3480156101ca57600080fd5b506101d3610e8f565b6040516101e09190612512565b60405180910390f35b61020360048036038101906101fe9190612583565b610ea0565b6040516102109190612613565b60405180910390f35b610233600480360381019061022e919061262e565b610f32565b6040516102409190612087565b60405180910390f35b610263600480360381019061025e91906126b6565b6111bd565b6040516102709190612613565b60405180910390f35b610293600480360381019061028e9190612772565b611452565b6040516102a09190612087565b60405180910390f35b6102c360048036038101906102be91906127e6565b6114e2565b6040516102d09190612613565b60405180910390f35b6102f360048036038101906102ee919061288d565b611776565b6040516103009190612087565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b9190612a7b565b6117ff565b60405161033d9190612087565b60405180910390f35b610360600480360381019061035b9190612b06565b61191a565b60405161036d9190612087565b60405180910390f35b61037e6119a9565b005b61039a60048036038101906103959190612b66565b6119ab565b6040516103a79190612613565b60405180910390f35b6103ca60048036038101906103c59190612bfb565b611a3e565b6040516103d79190612087565b60405180910390f35b60008086905060008081819054906101000a900460070b8092919061040490612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008773ffffffffffffffffffffffffffffffffffffffff16600160405161045590612d25565b60006040518083038185875af1925050503d8060008114610492576040519150601f19603f3d011682016040523d82523d6000602084013e610497565b606091505b50509050806104db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d290612dbd565b60405180910390fd5b61080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630896040518363ffffffff1660e01b8152600401610518929190612dec565b6020604051808303816000875af192505050801561055457506040513d601f19601f820116820180604052508101906105519190612e2a565b60015b61061857610560612e64565b806308c379a0036105db5750610574612e86565b8061057f57506105dd565b806040516020016105909190612f9e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29190612ff9565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060f90613067565b60405180910390fd5b80610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064f906130d3565b60405180910390fd5b5060008081819054906101000a900460070b8092919061067790612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550506000600167ffffffffffffffff8111156106be576106bd611e9d565b5b6040519080825280602002602001820160405280156106f757816020015b6106e4611cca565b8152602001906001900390816106dc5790505b509050604051806040016040528088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001600281525081600081518110610768576107676130f3565b5b60200260200101819052508273ffffffffffffffffffffffffffffffffffffffff1663b94c98228a87846040518463ffffffff1660e01b81526004016107b0939291906131a8565b6020604051808303816000875af19250505080156107ec57506040513d601f19601f820116820180604052508101906107e99190612e2a565b60015b6108b0576107f8612e64565b806308c379a003610873575061080c612e86565b806108175750610875565b806040516020016108289190613239565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a9190612ff9565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a7906132cd565b60405180910390fd5b806108f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e790613339565b60405180910390fd5b506001935050505095945050505050565b60008215610a005760008081819054906101000a900460070b8092919061092790612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f60405161097890612d25565b60006040518083038185875af1925050503d80600081146109b5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ba565b606091505b50509050806109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f5906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630866040518363ffffffff1660e01b8152600401610a3d929190612dec565b6020604051808303816000875af1158015610a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a809190612e2a565b90508115610b7f5760008081819054906101000a900460070b80929190610aa690612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f604051610af790612d25565b60006040518083038185875af1925050503d8060008114610b34576040519150601f19603f3d011682016040523d82523d6000602084013e610b39565b606091505b5050905080610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b74906133a5565b60405180910390fd5b505b949350505050565b60008215610c865760008081819054906101000a900460070b80929190610bad90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610bfe90612d25565b60006040518083038185875af1925050503d8060008114610c3b576040519150601f19603f3d011682016040523d82523d6000602084013e610c40565b606091505b5050905080610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7b906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630866040518363ffffffff1660e01b8152600401610cc3929190612dec565b6020604051808303816000875af1158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190612e2a565b90508115610e055760008081819054906101000a900460070b80929190610d2c90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610d7d90612d25565b60006040518083038185875af1925050503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b5050905080610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906133a5565b60405180910390fd5b505b9392505050565b610e14611ce4565b61080573ffffffffffffffffffffffffffffffffffffffff16635e615a6b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e61573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e8a9190613829565b905090565b60008054906101000a900460070b81565b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc91930878787876040518663ffffffff1660e01b8152600401610ee5959493929190613a7c565b6020604051808303816000875af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190613ada565b9050949350505050565b600082156110315760008081819054906101000a900460070b80929190610f5890612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610fa990612d25565b60006040518083038185875af1925050503d8060008114610fe6576040519150601f19603f3d011682016040523d82523d6000602084013e610feb565b606091505b505090508061102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376308888886040518563ffffffff1660e01b81526004016110729493929190613b07565b6020604051808303816000875af1158015611091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b59190612e2a565b905081156111b45760008081819054906101000a900460070b809291906110db90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f60405161112c90612d25565b60006040518083038185875af1925050503d8060008114611169576040519150601f19603f3d011682016040523d82523d6000602084013e61116e565b606091505b50509050806111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906133a5565b60405180910390fd5b505b95945050505050565b600082156112bc5760008081819054906101000a900460070b809291906111e390612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008873ffffffffffffffffffffffffffffffffffffffff16600f60405161123490612d25565b60006040518083038185875af1925050503d8060008114611271576040519150601f19603f3d011682016040523d82523d6000602084013e611276565b606091505b50509050806112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906133a5565b60405180910390fd5b505b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc919308a8a8a8a6040518663ffffffff1660e01b8152600401611301959493929190613a7c565b6020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190613ada565b905082156114435760008081819054906101000a900460070b8092919061136a90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008973ffffffffffffffffffffffffffffffffffffffff16600f6040516113bb90612d25565b60006040518083038185875af1925050503d80600081146113f8576040519150601f19603f3d011682016040523d82523d6000602084013e6113fd565b606091505b5050905080611441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611438906133a5565b60405180910390fd5b505b80915050979650505050505050565b600061080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376868686866040518563ffffffff1660e01b81526004016114959493929190613ba6565b6020604051808303816000875af11580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190612e2a565b9050949350505050565b600082156115e15760008081819054906101000a900460070b8092919061150890612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f60405161155990612d25565b60006040518083038185875af1925050503d8060008114611596576040519150601f19603f3d011682016040523d82523d6000602084013e61159b565b606091505b50509050806115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d6906133a5565b60405180910390fd5b505b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc919308a8a8a8a6040518663ffffffff1660e01b8152600401611626959493929190613a7c565b6020604051808303816000875af1158015611645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116699190613ada565b905082156117685760008081819054906101000a900460070b8092919061168f90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516116e090612d25565b60006040518083038185875af1925050503d806000811461171d576040519150601f19603f3d011682016040523d82523d6000602084013e611722565b606091505b5050905080611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906133a5565b60405180910390fd5b505b809150509695505050505050565b600061080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630846040518363ffffffff1660e01b81526004016117b5929190612dec565b6020604051808303816000875af11580156117d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f89190612e2a565b9050919050565b600060016000808282829054906101000a900460070b61181f9190613be6565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555061080173ffffffffffffffffffffffffffffffffffffffff16632eb1df528585856040518463ffffffff1660e01b8152600401611887939291906131a8565b6020604051808303816000875af11580156118a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ca9190612e2a565b905060016000808282829054906101000a900460070b6118ea9190613c46565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055509392505050565b600061080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376308686866040518563ffffffff1660e01b815260040161195d9493929190613b07565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a09190612e2a565b90509392505050565b565b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc91987878787876040518663ffffffff1660e01b81526004016119f0959493929190613a7c565b6020604051808303816000875af1158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a339190613ada565b905095945050505050565b60008215611b3d5760008081819054906101000a900460070b80929190611a6490612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008773ffffffffffffffffffffffffffffffffffffffff16600f604051611ab590612d25565b60006040518083038185875af1925050503d8060008114611af2576040519150601f19603f3d011682016040523d82523d6000602084013e611af7565b606091505b5050905080611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376308888886040518563ffffffff1660e01b8152600401611b7e9493929190613b07565b6020604051808303816000875af1158015611b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc19190612e2a565b90508115611cc05760008081819054906101000a900460070b80929190611be790612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008773ffffffffffffffffffffffffffffffffffffffff16600f604051611c3890612d25565b60006040518083038185875af1925050503d8060008114611c75576040519150601f19603f3d011682016040523d82523d6000602084013e611c7a565b606091505b5050905080611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb5906133a5565b60405180910390fd5b505b9695505050505050565b604051806040016040528060608152602001600081525090565b604051806102000160405280600060070b815260200160608152602001600060070b8152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001600060070b81526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611daf82611d84565b9050919050565b611dbf81611da4565b8114611dca57600080fd5b50565b600081359050611ddc81611db6565b92915050565b600067ffffffffffffffff82169050919050565b611dff81611de2565b8114611e0a57600080fd5b50565b600081359050611e1c81611df6565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e4757611e46611e22565b5b8235905067ffffffffffffffff811115611e6457611e63611e27565b5b602083019150836001820283011115611e8057611e7f611e2c565b5b9250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611ed582611e8c565b810181811067ffffffffffffffff82111715611ef457611ef3611e9d565b5b80604052505050565b6000611f07611d70565b9050611f138282611ecc565b919050565b600067ffffffffffffffff821115611f3357611f32611e9d565b5b611f3c82611e8c565b9050602081019050919050565b82818337600083830152505050565b6000611f6b611f6684611f18565b611efd565b905082815260208101848484011115611f8757611f86611e87565b5b611f92848285611f49565b509392505050565b600082601f830112611faf57611fae611e22565b5b8135611fbf848260208601611f58565b91505092915050565b600080600080600060808688031215611fe457611fe3611d7a565b5b6000611ff288828901611dcd565b955050602061200388828901611e0d565b945050604086013567ffffffffffffffff81111561202457612023611d7f565b5b61203088828901611e31565b9350935050606086013567ffffffffffffffff81111561205357612052611d7f565b5b61205f88828901611f9a565b9150509295509295909350565b60008115159050919050565b6120818161206c565b82525050565b600060208201905061209c6000830184612078565b92915050565b6120ab8161206c565b81146120b657600080fd5b50565b6000813590506120c8816120a2565b92915050565b600080600080608085870312156120e8576120e7611d7a565b5b60006120f687828801611dcd565b945050602061210787828801611e0d565b9350506040612118878288016120b9565b9250506060612129878288016120b9565b91505092959194509250565b60008060006060848603121561214e5761214d611d7a565b5b600061215c86828701611e0d565b935050602061216d868287016120b9565b925050604061217e868287016120b9565b9150509250925092565b60008160070b9050919050565b61219e81612188565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561220a5780820151818401526020810190506121ef565b60008484015250505050565b6000612221826121d0565b61222b81856121db565b935061223b8185602086016121ec565b61224481611e8c565b840191505092915050565b6000819050919050565b6122628161224f565b82525050565b600060408301600083015184820360008601526122858282612216565b915050602083015161229a6020860182612259565b508091505092915050565b60006122b18383612268565b905092915050565b6000602082019050919050565b60006122d1826121a4565b6122db81856121af565b9350836020820285016122ed856121c0565b8060005b85811015612329578484038952815161230a85826122a5565b9450612315836122b9565b925060208a019950506001810190506122f1565b50829750879550505050505092915050565b6123448161206c565b82525050565b6000610200830160008301516123636000860182612195565b506020830151848203602086015261237b82826122c6565b91505060408301516123906040860182612195565b50606083015184820360608601526123a88282612216565b915050608083015184820360808601526123c28282612216565b91505060a083015184820360a08601526123dc8282612216565b91505060c083015184820360c08601526123f68282612216565b91505060e083015184820360e08601526124108282612216565b91505061010083015184820361010086015261242c8282612216565b915050610120830151612443610120860182612195565b5061014083015184820361014086015261245d8282612216565b91505061016083015184820361016086015261247982826122c6565b91505061018083015161249061018086018261233b565b506101a08301516124a56101a086018261233b565b506101c08301516124ba6101c086018261233b565b506101e08301518482036101e08601526124d48282612216565b9150508091505092915050565b600060208201905081810360008301526124fb818461234a565b905092915050565b61250c81612188565b82525050565b60006020820190506125276000830184612503565b92915050565b60008083601f84011261254357612542611e22565b5b8235905067ffffffffffffffff8111156125605761255f611e27565b5b60208301915083602082028301111561257c5761257b611e2c565b5b9250929050565b6000806000806040858703121561259d5761259c611d7a565b5b600085013567ffffffffffffffff8111156125bb576125ba611d7f565b5b6125c787828801611e31565b9450945050602085013567ffffffffffffffff8111156125ea576125e9611d7f565b5b6125f68782880161252d565b925092505092959194509250565b61260d81611de2565b82525050565b60006020820190506126286000830184612604565b92915050565b60008060008060006080868803121561264a57612649611d7a565b5b600061265888828901611e0d565b955050602086013567ffffffffffffffff81111561267957612678611d7f565b5b6126858882890161252d565b94509450506040612698888289016120b9565b92505060606126a9888289016120b9565b9150509295509295909350565b600080600080600080600060a0888a0312156126d5576126d4611d7a565b5b60006126e38a828b01611dcd565b975050602088013567ffffffffffffffff81111561270457612703611d7f565b5b6127108a828b01611e31565b9650965050604088013567ffffffffffffffff81111561273357612732611d7f565b5b61273f8a828b0161252d565b945094505060606127528a828b016120b9565b92505060806127638a828b016120b9565b91505092959891949750929550565b6000806000806060858703121561278c5761278b611d7a565b5b600061279a87828801611dcd565b94505060206127ab87828801611e0d565b935050604085013567ffffffffffffffff8111156127cc576127cb611d7f565b5b6127d88782880161252d565b925092505092959194509250565b6000806000806000806080878903121561280357612802611d7a565b5b600087013567ffffffffffffffff81111561282157612820611d7f565b5b61282d89828a01611e31565b9650965050602087013567ffffffffffffffff8111156128505761284f611d7f565b5b61285c89828a0161252d565b9450945050604061286f89828a016120b9565b925050606061288089828a016120b9565b9150509295509295509295565b6000602082840312156128a3576128a2611d7a565b5b60006128b184828501611e0d565b91505092915050565b60006128c582611d84565b9050919050565b6128d5816128ba565b81146128e057600080fd5b50565b6000813590506128f2816128cc565b92915050565b600067ffffffffffffffff82111561291357612912611e9d565b5b602082029050602081019050919050565b600080fd5b600080fd5b6129378161224f565b811461294257600080fd5b50565b6000813590506129548161292e565b92915050565b6000604082840312156129705761296f612924565b5b61297a6040611efd565b9050600082013567ffffffffffffffff81111561299a57612999612929565b5b6129a684828501611f9a565b60008301525060206129ba84828501612945565b60208301525092915050565b60006129d96129d4846128f8565b611efd565b905080838252602082019050602084028301858111156129fc576129fb611e2c565b5b835b81811015612a4357803567ffffffffffffffff811115612a2157612a20611e22565b5b808601612a2e898261295a565b855260208501945050506020810190506129fe565b5050509392505050565b600082601f830112612a6257612a61611e22565b5b8135612a728482602086016129c6565b91505092915050565b600080600060608486031215612a9457612a93611d7a565b5b6000612aa2868287016128e3565b935050602084013567ffffffffffffffff811115612ac357612ac2611d7f565b5b612acf86828701611f9a565b925050604084013567ffffffffffffffff811115612af057612aef611d7f565b5b612afc86828701612a4d565b9150509250925092565b600080600060408486031215612b1f57612b1e611d7a565b5b6000612b2d86828701611e0d565b935050602084013567ffffffffffffffff811115612b4e57612b4d611d7f565b5b612b5a8682870161252d565b92509250509250925092565b600080600080600060608688031215612b8257612b81611d7a565b5b6000612b90888289016128e3565b955050602086013567ffffffffffffffff811115612bb157612bb0611d7f565b5b612bbd88828901611e31565b9450945050604086013567ffffffffffffffff811115612be057612bdf611d7f565b5b612bec8882890161252d565b92509250509295509295909350565b60008060008060008060a08789031215612c1857612c17611d7a565b5b6000612c2689828a01611dcd565b9650506020612c3789828a01611e0d565b955050604087013567ffffffffffffffff811115612c5857612c57611d7f565b5b612c6489828a0161252d565b94509450506060612c7789828a016120b9565b9250506080612c8889828a016120b9565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ccf82612188565b9150677fffffffffffffff8203612ce957612ce8612c95565b5b600182019050919050565b600081905092915050565b50565b6000612d0f600083612cf4565b9150612d1a82612cff565b600082019050919050565b6000612d3082612d02565b9150819050919050565b600082825260208201905092915050565b7f4661696c656420746f2073656e6420457468657220746f206465706f7369746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612da7602183612d3a565b9150612db282612d4b565b604082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b612de6816128ba565b82525050565b6000604082019050612e016000830185612ddd565b612e0e6020830184612604565b9392505050565b600081519050612e24816120a2565b92915050565b600060208284031215612e4057612e3f611d7a565b5b6000612e4e84828501612e15565b91505092915050565b60008160e01c9050919050565b600060033d1115612e835760046000803e612e80600051612e57565b90505b90565b600060443d10612f1357612e98611d70565b60043d036004823e80513d602482011167ffffffffffffffff82111715612ec0575050612f13565b808201805167ffffffffffffffff811115612ede5750505050612f13565b80602083010160043d038501811115612efb575050505050612f13565b612f0a82602001850186611ecc565b82955050505050505b90565b600081905092915050565b7f63616e63656c50726f706f73616c206661696c65643a20000000000000000000600082015250565b6000612f57601783612f16565b9150612f6282612f21565b601782019050919050565b6000612f78826121d0565b612f828185612f16565b9350612f928185602086016121ec565b80840191505092915050565b6000612fa982612f4a565b9150612fb58284612f6d565b915081905092915050565b6000612fcb826121d0565b612fd58185612d3a565b9350612fe58185602086016121ec565b612fee81611e8c565b840191505092915050565b600060208201905081810360008301526130138184612fc0565b905092915050565b7f63616e63656c50726f706f73616c206661696c65642073696c656e746c790000600082015250565b6000613051601e83612d3a565b915061305c8261301b565b602082019050919050565b6000602082019050818103600083015261308081613044565b9050919050565b7f63616e63656c50726f706f73616c2072657475726e65642066616c7365000000600082015250565b60006130bd601d83612d3a565b91506130c882613087565b602082019050919050565b600060208201905081810360008301526130ec816130b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b600061313e826121a4565b6131488185613122565b93508360208202850161315a856121c0565b8060005b85811015613196578484038952815161317785826122a5565b9450613182836122b9565b925060208a0199505060018101905061315e565b50829750879550505050505092915050565b60006060820190506131bd6000830186612ddd565b81810360208301526131cf8185612fc0565b905081810360408301526131e38184613133565b9050949350505050565b7f66756e64436f6d6d756e697479506f6f6c206661696c65643a20000000000000600082015250565b6000613223601a83612f16565b915061322e826131ed565b601a82019050919050565b600061324482613216565b91506132508284612f6d565b915081905092915050565b7f66756e64436f6d6d756e697479506f6f6c206661696c65642073696c656e746c60008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b7602183612d3a565b91506132c28261325b565b604082019050919050565b600060208201905081810360008301526132e6816132aa565b9050919050565b7f66756e64436f6d6d756e697479506f6f6c2072657475726e65642066616c7365600082015250565b6000613323602083612d3a565b915061332e826132ed565b602082019050919050565b6000602082019050818103600083015261335281613316565b9050919050565b7f4661696c656420746f2073656e6420457468657220746f2070726f706f736572600082015250565b600061338f602083612d3a565b915061339a82613359565b602082019050919050565b600060208201905081810360008301526133be81613382565b9050919050565b6133ce81612188565b81146133d957600080fd5b50565b6000815190506133eb816133c5565b92915050565b60006134046133ff84611f18565b611efd565b9050828152602081018484840111156134205761341f611e87565b5b61342b8482856121ec565b509392505050565b600082601f83011261344857613447611e22565b5b81516134588482602086016133f1565b91505092915050565b6000815190506134708161292e565b92915050565b60006040828403121561348c5761348b612924565b5b6134966040611efd565b9050600082015167ffffffffffffffff8111156134b6576134b5612929565b5b6134c284828501613433565b60008301525060206134d684828501613461565b60208301525092915050565b60006134f56134f0846128f8565b611efd565b9050808382526020820190506020840283018581111561351857613517611e2c565b5b835b8181101561355f57805167ffffffffffffffff81111561353d5761353c611e22565b5b80860161354a8982613476565b8552602085019450505060208101905061351a565b5050509392505050565b600082601f83011261357e5761357d611e22565b5b815161358e8482602086016134e2565b91505092915050565b600061020082840312156135ae576135ad612924565b5b6135b9610200611efd565b905060006135c9848285016133dc565b600083015250602082015167ffffffffffffffff8111156135ed576135ec612929565b5b6135f984828501613569565b602083015250604061360d848285016133dc565b604083015250606082015167ffffffffffffffff81111561363157613630612929565b5b61363d84828501613433565b606083015250608082015167ffffffffffffffff81111561366157613660612929565b5b61366d84828501613433565b60808301525060a082015167ffffffffffffffff81111561369157613690612929565b5b61369d84828501613433565b60a08301525060c082015167ffffffffffffffff8111156136c1576136c0612929565b5b6136cd84828501613433565b60c08301525060e082015167ffffffffffffffff8111156136f1576136f0612929565b5b6136fd84828501613433565b60e08301525061010082015167ffffffffffffffff81111561372257613721612929565b5b61372e84828501613433565b61010083015250610120613744848285016133dc565b6101208301525061014082015167ffffffffffffffff81111561376a57613769612929565b5b61377684828501613433565b6101408301525061016082015167ffffffffffffffff81111561379c5761379b612929565b5b6137a884828501613569565b610160830152506101806137be84828501612e15565b610180830152506101a06137d484828501612e15565b6101a0830152506101c06137ea84828501612e15565b6101c0830152506101e082015167ffffffffffffffff8111156138105761380f612929565b5b61381c84828501613433565b6101e08301525092915050565b60006020828403121561383f5761383e611d7a565b5b600082015167ffffffffffffffff81111561385d5761385c611d7f565b5b61386984828501613597565b91505092915050565b600082825260208201905092915050565b600061388f8385613872565b935061389c838584611f49565b6138a583611e8c565b840190509392505050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126138e6576138e56138c4565b5b83810192508235915060208301925067ffffffffffffffff82111561390e5761390d6138ba565b5b600182023603831315613924576139236138bf565b5b509250929050565b600061393883856121db565b9350613945838584611f49565b61394e83611e8c565b840190509392505050565b60006139686020840184612945565b905092915050565b60006040830161398360008401846138c9565b858303600087015261399683828461392c565b925050506139a76020840184613959565b6139b46020860182612259565b508091505092915050565b60006139cb8383613970565b905092915050565b6000823560016040038336030381126139ef576139ee6138c4565b5b82810191505092915050565b6000602082019050919050565b6000613a148385613122565b935083602084028501613a26846138b0565b8060005b87811015613a6a578484038952613a4182846139d3565b613a4b85826139bf565b9450613a56836139fb565b925060208a01995050600181019050613a2a565b50829750879450505050509392505050565b6000606082019050613a916000830188612ddd565b8181036020830152613aa4818688613883565b90508181036040830152613ab9818486613a08565b90509695505050505050565b600081519050613ad481611df6565b92915050565b600060208284031215613af057613aef611d7a565b5b6000613afe84828501613ac5565b91505092915050565b6000606082019050613b1c6000830187612ddd565b613b296020830186612604565b8181036040830152613b3c818486613a08565b905095945050505050565b6000819050919050565b6000613b6c613b67613b6284611d84565b613b47565b611d84565b9050919050565b6000613b7e82613b51565b9050919050565b6000613b9082613b73565b9050919050565b613ba081613b85565b82525050565b6000606082019050613bbb6000830187613b97565b613bc86020830186612604565b8181036040830152613bdb818486613a08565b905095945050505050565b6000613bf182612188565b9150613bfc83612188565b925082820190507fffffffffffffffffffffffffffffffffffffffffffffffff80000000000000008112677fffffffffffffff82131715613c4057613c3f612c95565b5b92915050565b6000613c5182612188565b9150613c5c83612188565b92508282039050677fffffffffffffff81137fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000082121715613ca057613c9f612c95565b5b9291505056fea2646970667358221220bbfe7dbc4bdf974a49ac5207495ab12da4eaef8267c91a5fb3383c64ac59ac0064736f6c63430008140033", - "deployedBytecode": "0x6080604052600436106100f75760003560e01c80638e7431d31161008a578063bc7bdf7511610059578063bc7bdf7514610346578063d0e30db014610376578063e8702c3414610380578063ed6c08f7146103b0576100fe565b80638e7431d31461027957806391d6d8e7146102a957806397fd84d2146102d9578063b94c982214610309576100fe565b806361bc221a116100c657806361bc221a146101be57806361f09ad2146101e957806372ff5ec4146102195780637726ece014610249576100fe565b80630f6265fb14610103578063258691e21461013357806326c11ffa146101635780635e615a6b14610193576100fe565b366100fe57005b600080fd5b61011d60048036038101906101189190611fc8565b6103e0565b60405161012a9190612087565b60405180910390f35b61014d600480360381019061014891906120ce565b610901565b60405161015a9190612087565b60405180910390f35b61017d60048036038101906101789190612135565b610b87565b60405161018a9190612087565b60405180910390f35b34801561019f57600080fd5b506101a8610e0c565b6040516101b591906124e1565b60405180910390f35b3480156101ca57600080fd5b506101d3610e8f565b6040516101e09190612512565b60405180910390f35b61020360048036038101906101fe9190612583565b610ea0565b6040516102109190612613565b60405180910390f35b610233600480360381019061022e919061262e565b610f32565b6040516102409190612087565b60405180910390f35b610263600480360381019061025e91906126b6565b6111bd565b6040516102709190612613565b60405180910390f35b610293600480360381019061028e9190612772565b611452565b6040516102a09190612087565b60405180910390f35b6102c360048036038101906102be91906127e6565b6114e2565b6040516102d09190612613565b60405180910390f35b6102f360048036038101906102ee919061288d565b611776565b6040516103009190612087565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b9190612a7b565b6117ff565b60405161033d9190612087565b60405180910390f35b610360600480360381019061035b9190612b06565b61191a565b60405161036d9190612087565b60405180910390f35b61037e6119a9565b005b61039a60048036038101906103959190612b66565b6119ab565b6040516103a79190612613565b60405180910390f35b6103ca60048036038101906103c59190612bfb565b611a3e565b6040516103d79190612087565b60405180910390f35b60008086905060008081819054906101000a900460070b8092919061040490612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008773ffffffffffffffffffffffffffffffffffffffff16600160405161045590612d25565b60006040518083038185875af1925050503d8060008114610492576040519150601f19603f3d011682016040523d82523d6000602084013e610497565b606091505b50509050806104db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d290612dbd565b60405180910390fd5b61080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630896040518363ffffffff1660e01b8152600401610518929190612dec565b6020604051808303816000875af192505050801561055457506040513d601f19601f820116820180604052508101906105519190612e2a565b60015b61061857610560612e64565b806308c379a0036105db5750610574612e86565b8061057f57506105dd565b806040516020016105909190612f9e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29190612ff9565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060f90613067565b60405180910390fd5b80610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064f906130d3565b60405180910390fd5b5060008081819054906101000a900460070b8092919061067790612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550506000600167ffffffffffffffff8111156106be576106bd611e9d565b5b6040519080825280602002602001820160405280156106f757816020015b6106e4611cca565b8152602001906001900390816106dc5790505b509050604051806040016040528088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001600281525081600081518110610768576107676130f3565b5b60200260200101819052508273ffffffffffffffffffffffffffffffffffffffff1663b94c98228a87846040518463ffffffff1660e01b81526004016107b0939291906131a8565b6020604051808303816000875af19250505080156107ec57506040513d601f19601f820116820180604052508101906107e99190612e2a565b60015b6108b0576107f8612e64565b806308c379a003610873575061080c612e86565b806108175750610875565b806040516020016108289190613239565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a9190612ff9565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a7906132cd565b60405180910390fd5b806108f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e790613339565b60405180910390fd5b506001935050505095945050505050565b60008215610a005760008081819054906101000a900460070b8092919061092790612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f60405161097890612d25565b60006040518083038185875af1925050503d80600081146109b5576040519150601f19603f3d011682016040523d82523d6000602084013e6109ba565b606091505b50509050806109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f5906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630866040518363ffffffff1660e01b8152600401610a3d929190612dec565b6020604051808303816000875af1158015610a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a809190612e2a565b90508115610b7f5760008081819054906101000a900460070b80929190610aa690612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f604051610af790612d25565b60006040518083038185875af1925050503d8060008114610b34576040519150601f19603f3d011682016040523d82523d6000602084013e610b39565b606091505b5050905080610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b74906133a5565b60405180910390fd5b505b949350505050565b60008215610c865760008081819054906101000a900460070b80929190610bad90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610bfe90612d25565b60006040518083038185875af1925050503d8060008114610c3b576040519150601f19603f3d011682016040523d82523d6000602084013e610c40565b606091505b5050905080610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7b906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630866040518363ffffffff1660e01b8152600401610cc3929190612dec565b6020604051808303816000875af1158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190612e2a565b90508115610e055760008081819054906101000a900460070b80929190610d2c90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610d7d90612d25565b60006040518083038185875af1925050503d8060008114610dba576040519150601f19603f3d011682016040523d82523d6000602084013e610dbf565b606091505b5050905080610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906133a5565b60405180910390fd5b505b9392505050565b610e14611ce4565b61080573ffffffffffffffffffffffffffffffffffffffff16635e615a6b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e61573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e8a9190613829565b905090565b60008054906101000a900460070b81565b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc91930878787876040518663ffffffff1660e01b8152600401610ee5959493929190613a7c565b6020604051808303816000875af1158015610f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f289190613ada565b9050949350505050565b600082156110315760008081819054906101000a900460070b80929190610f5890612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610fa990612d25565b60006040518083038185875af1925050503d8060008114610fe6576040519150601f19603f3d011682016040523d82523d6000602084013e610feb565b606091505b505090508061102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376308888886040518563ffffffff1660e01b81526004016110729493929190613b07565b6020604051808303816000875af1158015611091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b59190612e2a565b905081156111b45760008081819054906101000a900460070b809291906110db90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f60405161112c90612d25565b60006040518083038185875af1925050503d8060008114611169576040519150601f19603f3d011682016040523d82523d6000602084013e61116e565b606091505b50509050806111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906133a5565b60405180910390fd5b505b95945050505050565b600082156112bc5760008081819054906101000a900460070b809291906111e390612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008873ffffffffffffffffffffffffffffffffffffffff16600f60405161123490612d25565b60006040518083038185875af1925050503d8060008114611271576040519150601f19603f3d011682016040523d82523d6000602084013e611276565b606091505b50509050806112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906133a5565b60405180910390fd5b505b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc919308a8a8a8a6040518663ffffffff1660e01b8152600401611301959493929190613a7c565b6020604051808303816000875af1158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190613ada565b905082156114435760008081819054906101000a900460070b8092919061136a90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008973ffffffffffffffffffffffffffffffffffffffff16600f6040516113bb90612d25565b60006040518083038185875af1925050503d80600081146113f8576040519150601f19603f3d011682016040523d82523d6000602084013e6113fd565b606091505b5050905080611441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611438906133a5565b60405180910390fd5b505b80915050979650505050505050565b600061080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376868686866040518563ffffffff1660e01b81526004016114959493929190613ba6565b6020604051808303816000875af11580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190612e2a565b9050949350505050565b600082156115e15760008081819054906101000a900460070b8092919061150890612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f60405161155990612d25565b60006040518083038185875af1925050503d8060008114611596576040519150601f19603f3d011682016040523d82523d6000602084013e61159b565b606091505b50509050806115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d6906133a5565b60405180910390fd5b505b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc919308a8a8a8a6040518663ffffffff1660e01b8152600401611626959493929190613a7c565b6020604051808303816000875af1158015611645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116699190613ada565b905082156117685760008081819054906101000a900460070b8092919061168f90612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f6040516116e090612d25565b60006040518083038185875af1925050503d806000811461171d576040519150601f19603f3d011682016040523d82523d6000602084013e611722565b606091505b5050905080611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906133a5565b60405180910390fd5b505b809150509695505050505050565b600061080573ffffffffffffffffffffffffffffffffffffffff1663a33e308630846040518363ffffffff1660e01b81526004016117b5929190612dec565b6020604051808303816000875af11580156117d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f89190612e2a565b9050919050565b600060016000808282829054906101000a900460070b61181f9190613be6565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555061080173ffffffffffffffffffffffffffffffffffffffff16632eb1df528585856040518463ffffffff1660e01b8152600401611887939291906131a8565b6020604051808303816000875af11580156118a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ca9190612e2a565b905060016000808282829054906101000a900460070b6118ea9190613c46565b92506101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055509392505050565b600061080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376308686866040518563ffffffff1660e01b815260040161195d9493929190613b07565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a09190612e2a565b90509392505050565b565b600061080573ffffffffffffffffffffffffffffffffffffffff1663a8fdc91987878787876040518663ffffffff1660e01b81526004016119f0959493929190613a7c565b6020604051808303816000875af1158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a339190613ada565b905095945050505050565b60008215611b3d5760008081819054906101000a900460070b80929190611a6490612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008773ffffffffffffffffffffffffffffffffffffffff16600f604051611ab590612d25565b60006040518083038185875af1925050503d8060008114611af2576040519150601f19603f3d011682016040523d82523d6000602084013e611af7565b606091505b5050905080611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906133a5565b60405180910390fd5b505b61080573ffffffffffffffffffffffffffffffffffffffff1663b24b0376308888886040518563ffffffff1660e01b8152600401611b7e9493929190613b07565b6020604051808303816000875af1158015611b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc19190612e2a565b90508115611cc05760008081819054906101000a900460070b80929190611be790612cc4565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008773ffffffffffffffffffffffffffffffffffffffff16600f604051611c3890612d25565b60006040518083038185875af1925050503d8060008114611c75576040519150601f19603f3d011682016040523d82523d6000602084013e611c7a565b606091505b5050905080611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb5906133a5565b60405180910390fd5b505b9695505050505050565b604051806040016040528060608152602001600081525090565b604051806102000160405280600060070b815260200160608152602001600060070b8152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001600060070b81526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611daf82611d84565b9050919050565b611dbf81611da4565b8114611dca57600080fd5b50565b600081359050611ddc81611db6565b92915050565b600067ffffffffffffffff82169050919050565b611dff81611de2565b8114611e0a57600080fd5b50565b600081359050611e1c81611df6565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e4757611e46611e22565b5b8235905067ffffffffffffffff811115611e6457611e63611e27565b5b602083019150836001820283011115611e8057611e7f611e2c565b5b9250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611ed582611e8c565b810181811067ffffffffffffffff82111715611ef457611ef3611e9d565b5b80604052505050565b6000611f07611d70565b9050611f138282611ecc565b919050565b600067ffffffffffffffff821115611f3357611f32611e9d565b5b611f3c82611e8c565b9050602081019050919050565b82818337600083830152505050565b6000611f6b611f6684611f18565b611efd565b905082815260208101848484011115611f8757611f86611e87565b5b611f92848285611f49565b509392505050565b600082601f830112611faf57611fae611e22565b5b8135611fbf848260208601611f58565b91505092915050565b600080600080600060808688031215611fe457611fe3611d7a565b5b6000611ff288828901611dcd565b955050602061200388828901611e0d565b945050604086013567ffffffffffffffff81111561202457612023611d7f565b5b61203088828901611e31565b9350935050606086013567ffffffffffffffff81111561205357612052611d7f565b5b61205f88828901611f9a565b9150509295509295909350565b60008115159050919050565b6120818161206c565b82525050565b600060208201905061209c6000830184612078565b92915050565b6120ab8161206c565b81146120b657600080fd5b50565b6000813590506120c8816120a2565b92915050565b600080600080608085870312156120e8576120e7611d7a565b5b60006120f687828801611dcd565b945050602061210787828801611e0d565b9350506040612118878288016120b9565b9250506060612129878288016120b9565b91505092959194509250565b60008060006060848603121561214e5761214d611d7a565b5b600061215c86828701611e0d565b935050602061216d868287016120b9565b925050604061217e868287016120b9565b9150509250925092565b60008160070b9050919050565b61219e81612188565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561220a5780820151818401526020810190506121ef565b60008484015250505050565b6000612221826121d0565b61222b81856121db565b935061223b8185602086016121ec565b61224481611e8c565b840191505092915050565b6000819050919050565b6122628161224f565b82525050565b600060408301600083015184820360008601526122858282612216565b915050602083015161229a6020860182612259565b508091505092915050565b60006122b18383612268565b905092915050565b6000602082019050919050565b60006122d1826121a4565b6122db81856121af565b9350836020820285016122ed856121c0565b8060005b85811015612329578484038952815161230a85826122a5565b9450612315836122b9565b925060208a019950506001810190506122f1565b50829750879550505050505092915050565b6123448161206c565b82525050565b6000610200830160008301516123636000860182612195565b506020830151848203602086015261237b82826122c6565b91505060408301516123906040860182612195565b50606083015184820360608601526123a88282612216565b915050608083015184820360808601526123c28282612216565b91505060a083015184820360a08601526123dc8282612216565b91505060c083015184820360c08601526123f68282612216565b91505060e083015184820360e08601526124108282612216565b91505061010083015184820361010086015261242c8282612216565b915050610120830151612443610120860182612195565b5061014083015184820361014086015261245d8282612216565b91505061016083015184820361016086015261247982826122c6565b91505061018083015161249061018086018261233b565b506101a08301516124a56101a086018261233b565b506101c08301516124ba6101c086018261233b565b506101e08301518482036101e08601526124d48282612216565b9150508091505092915050565b600060208201905081810360008301526124fb818461234a565b905092915050565b61250c81612188565b82525050565b60006020820190506125276000830184612503565b92915050565b60008083601f84011261254357612542611e22565b5b8235905067ffffffffffffffff8111156125605761255f611e27565b5b60208301915083602082028301111561257c5761257b611e2c565b5b9250929050565b6000806000806040858703121561259d5761259c611d7a565b5b600085013567ffffffffffffffff8111156125bb576125ba611d7f565b5b6125c787828801611e31565b9450945050602085013567ffffffffffffffff8111156125ea576125e9611d7f565b5b6125f68782880161252d565b925092505092959194509250565b61260d81611de2565b82525050565b60006020820190506126286000830184612604565b92915050565b60008060008060006080868803121561264a57612649611d7a565b5b600061265888828901611e0d565b955050602086013567ffffffffffffffff81111561267957612678611d7f565b5b6126858882890161252d565b94509450506040612698888289016120b9565b92505060606126a9888289016120b9565b9150509295509295909350565b600080600080600080600060a0888a0312156126d5576126d4611d7a565b5b60006126e38a828b01611dcd565b975050602088013567ffffffffffffffff81111561270457612703611d7f565b5b6127108a828b01611e31565b9650965050604088013567ffffffffffffffff81111561273357612732611d7f565b5b61273f8a828b0161252d565b945094505060606127528a828b016120b9565b92505060806127638a828b016120b9565b91505092959891949750929550565b6000806000806060858703121561278c5761278b611d7a565b5b600061279a87828801611dcd565b94505060206127ab87828801611e0d565b935050604085013567ffffffffffffffff8111156127cc576127cb611d7f565b5b6127d88782880161252d565b925092505092959194509250565b6000806000806000806080878903121561280357612802611d7a565b5b600087013567ffffffffffffffff81111561282157612820611d7f565b5b61282d89828a01611e31565b9650965050602087013567ffffffffffffffff8111156128505761284f611d7f565b5b61285c89828a0161252d565b9450945050604061286f89828a016120b9565b925050606061288089828a016120b9565b9150509295509295509295565b6000602082840312156128a3576128a2611d7a565b5b60006128b184828501611e0d565b91505092915050565b60006128c582611d84565b9050919050565b6128d5816128ba565b81146128e057600080fd5b50565b6000813590506128f2816128cc565b92915050565b600067ffffffffffffffff82111561291357612912611e9d565b5b602082029050602081019050919050565b600080fd5b600080fd5b6129378161224f565b811461294257600080fd5b50565b6000813590506129548161292e565b92915050565b6000604082840312156129705761296f612924565b5b61297a6040611efd565b9050600082013567ffffffffffffffff81111561299a57612999612929565b5b6129a684828501611f9a565b60008301525060206129ba84828501612945565b60208301525092915050565b60006129d96129d4846128f8565b611efd565b905080838252602082019050602084028301858111156129fc576129fb611e2c565b5b835b81811015612a4357803567ffffffffffffffff811115612a2157612a20611e22565b5b808601612a2e898261295a565b855260208501945050506020810190506129fe565b5050509392505050565b600082601f830112612a6257612a61611e22565b5b8135612a728482602086016129c6565b91505092915050565b600080600060608486031215612a9457612a93611d7a565b5b6000612aa2868287016128e3565b935050602084013567ffffffffffffffff811115612ac357612ac2611d7f565b5b612acf86828701611f9a565b925050604084013567ffffffffffffffff811115612af057612aef611d7f565b5b612afc86828701612a4d565b9150509250925092565b600080600060408486031215612b1f57612b1e611d7a565b5b6000612b2d86828701611e0d565b935050602084013567ffffffffffffffff811115612b4e57612b4d611d7f565b5b612b5a8682870161252d565b92509250509250925092565b600080600080600060608688031215612b8257612b81611d7a565b5b6000612b90888289016128e3565b955050602086013567ffffffffffffffff811115612bb157612bb0611d7f565b5b612bbd88828901611e31565b9450945050604086013567ffffffffffffffff811115612be057612bdf611d7f565b5b612bec8882890161252d565b92509250509295509295909350565b60008060008060008060a08789031215612c1857612c17611d7a565b5b6000612c2689828a01611dcd565b9650506020612c3789828a01611e0d565b955050604087013567ffffffffffffffff811115612c5857612c57611d7f565b5b612c6489828a0161252d565b94509450506060612c7789828a016120b9565b9250506080612c8889828a016120b9565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ccf82612188565b9150677fffffffffffffff8203612ce957612ce8612c95565b5b600182019050919050565b600081905092915050565b50565b6000612d0f600083612cf4565b9150612d1a82612cff565b600082019050919050565b6000612d3082612d02565b9150819050919050565b600082825260208201905092915050565b7f4661696c656420746f2073656e6420457468657220746f206465706f7369746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612da7602183612d3a565b9150612db282612d4b565b604082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b612de6816128ba565b82525050565b6000604082019050612e016000830185612ddd565b612e0e6020830184612604565b9392505050565b600081519050612e24816120a2565b92915050565b600060208284031215612e4057612e3f611d7a565b5b6000612e4e84828501612e15565b91505092915050565b60008160e01c9050919050565b600060033d1115612e835760046000803e612e80600051612e57565b90505b90565b600060443d10612f1357612e98611d70565b60043d036004823e80513d602482011167ffffffffffffffff82111715612ec0575050612f13565b808201805167ffffffffffffffff811115612ede5750505050612f13565b80602083010160043d038501811115612efb575050505050612f13565b612f0a82602001850186611ecc565b82955050505050505b90565b600081905092915050565b7f63616e63656c50726f706f73616c206661696c65643a20000000000000000000600082015250565b6000612f57601783612f16565b9150612f6282612f21565b601782019050919050565b6000612f78826121d0565b612f828185612f16565b9350612f928185602086016121ec565b80840191505092915050565b6000612fa982612f4a565b9150612fb58284612f6d565b915081905092915050565b6000612fcb826121d0565b612fd58185612d3a565b9350612fe58185602086016121ec565b612fee81611e8c565b840191505092915050565b600060208201905081810360008301526130138184612fc0565b905092915050565b7f63616e63656c50726f706f73616c206661696c65642073696c656e746c790000600082015250565b6000613051601e83612d3a565b915061305c8261301b565b602082019050919050565b6000602082019050818103600083015261308081613044565b9050919050565b7f63616e63656c50726f706f73616c2072657475726e65642066616c7365000000600082015250565b60006130bd601d83612d3a565b91506130c882613087565b602082019050919050565b600060208201905081810360008301526130ec816130b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b600061313e826121a4565b6131488185613122565b93508360208202850161315a856121c0565b8060005b85811015613196578484038952815161317785826122a5565b9450613182836122b9565b925060208a0199505060018101905061315e565b50829750879550505050505092915050565b60006060820190506131bd6000830186612ddd565b81810360208301526131cf8185612fc0565b905081810360408301526131e38184613133565b9050949350505050565b7f66756e64436f6d6d756e697479506f6f6c206661696c65643a20000000000000600082015250565b6000613223601a83612f16565b915061322e826131ed565b601a82019050919050565b600061324482613216565b91506132508284612f6d565b915081905092915050565b7f66756e64436f6d6d756e697479506f6f6c206661696c65642073696c656e746c60008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b60006132b7602183612d3a565b91506132c28261325b565b604082019050919050565b600060208201905081810360008301526132e6816132aa565b9050919050565b7f66756e64436f6d6d756e697479506f6f6c2072657475726e65642066616c7365600082015250565b6000613323602083612d3a565b915061332e826132ed565b602082019050919050565b6000602082019050818103600083015261335281613316565b9050919050565b7f4661696c656420746f2073656e6420457468657220746f2070726f706f736572600082015250565b600061338f602083612d3a565b915061339a82613359565b602082019050919050565b600060208201905081810360008301526133be81613382565b9050919050565b6133ce81612188565b81146133d957600080fd5b50565b6000815190506133eb816133c5565b92915050565b60006134046133ff84611f18565b611efd565b9050828152602081018484840111156134205761341f611e87565b5b61342b8482856121ec565b509392505050565b600082601f83011261344857613447611e22565b5b81516134588482602086016133f1565b91505092915050565b6000815190506134708161292e565b92915050565b60006040828403121561348c5761348b612924565b5b6134966040611efd565b9050600082015167ffffffffffffffff8111156134b6576134b5612929565b5b6134c284828501613433565b60008301525060206134d684828501613461565b60208301525092915050565b60006134f56134f0846128f8565b611efd565b9050808382526020820190506020840283018581111561351857613517611e2c565b5b835b8181101561355f57805167ffffffffffffffff81111561353d5761353c611e22565b5b80860161354a8982613476565b8552602085019450505060208101905061351a565b5050509392505050565b600082601f83011261357e5761357d611e22565b5b815161358e8482602086016134e2565b91505092915050565b600061020082840312156135ae576135ad612924565b5b6135b9610200611efd565b905060006135c9848285016133dc565b600083015250602082015167ffffffffffffffff8111156135ed576135ec612929565b5b6135f984828501613569565b602083015250604061360d848285016133dc565b604083015250606082015167ffffffffffffffff81111561363157613630612929565b5b61363d84828501613433565b606083015250608082015167ffffffffffffffff81111561366157613660612929565b5b61366d84828501613433565b60808301525060a082015167ffffffffffffffff81111561369157613690612929565b5b61369d84828501613433565b60a08301525060c082015167ffffffffffffffff8111156136c1576136c0612929565b5b6136cd84828501613433565b60c08301525060e082015167ffffffffffffffff8111156136f1576136f0612929565b5b6136fd84828501613433565b60e08301525061010082015167ffffffffffffffff81111561372257613721612929565b5b61372e84828501613433565b61010083015250610120613744848285016133dc565b6101208301525061014082015167ffffffffffffffff81111561376a57613769612929565b5b61377684828501613433565b6101408301525061016082015167ffffffffffffffff81111561379c5761379b612929565b5b6137a884828501613569565b610160830152506101806137be84828501612e15565b610180830152506101a06137d484828501612e15565b6101a0830152506101c06137ea84828501612e15565b6101c0830152506101e082015167ffffffffffffffff8111156138105761380f612929565b5b61381c84828501613433565b6101e08301525092915050565b60006020828403121561383f5761383e611d7a565b5b600082015167ffffffffffffffff81111561385d5761385c611d7f565b5b61386984828501613597565b91505092915050565b600082825260208201905092915050565b600061388f8385613872565b935061389c838584611f49565b6138a583611e8c565b840190509392505050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126138e6576138e56138c4565b5b83810192508235915060208301925067ffffffffffffffff82111561390e5761390d6138ba565b5b600182023603831315613924576139236138bf565b5b509250929050565b600061393883856121db565b9350613945838584611f49565b61394e83611e8c565b840190509392505050565b60006139686020840184612945565b905092915050565b60006040830161398360008401846138c9565b858303600087015261399683828461392c565b925050506139a76020840184613959565b6139b46020860182612259565b508091505092915050565b60006139cb8383613970565b905092915050565b6000823560016040038336030381126139ef576139ee6138c4565b5b82810191505092915050565b6000602082019050919050565b6000613a148385613122565b935083602084028501613a26846138b0565b8060005b87811015613a6a578484038952613a4182846139d3565b613a4b85826139bf565b9450613a56836139fb565b925060208a01995050600181019050613a2a565b50829750879450505050509392505050565b6000606082019050613a916000830188612ddd565b8181036020830152613aa4818688613883565b90508181036040830152613ab9818486613a08565b90509695505050505050565b600081519050613ad481611df6565b92915050565b600060208284031215613af057613aef611d7a565b5b6000613afe84828501613ac5565b91505092915050565b6000606082019050613b1c6000830187612ddd565b613b296020830186612604565b8181036040830152613b3c818486613a08565b905095945050505050565b6000819050919050565b6000613b6c613b67613b6284611d84565b613b47565b611d84565b9050919050565b6000613b7e82613b51565b9050919050565b6000613b9082613b73565b9050919050565b613ba081613b85565b82525050565b6000606082019050613bbb6000830187613b97565b613bc86020830186612604565b8181036040830152613bdb818486613a08565b905095945050505050565b6000613bf182612188565b9150613bfc83612188565b925082820190507fffffffffffffffffffffffffffffffffffffffffffffffff80000000000000008112677fffffffffffffff82131715613c4057613c3f612c95565b5b92915050565b6000613c5182612188565b9150613c5c83612188565b92508282039050677fffffffffffffff81137fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000082121715613ca057613c9f612c95565b5b9291505056fea2646970667358221220bbfe7dbc4bdf974a49ac5207495ab12da4eaef8267c91a5fb3383c64ac59ac0064736f6c63430008140033", + "bytecode": "0x6080806040523461001657611db3908161001c8239f35b600080fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80630f6265fb14611276578063258691e21461112d57806326c11ffa14610ff65780635e615a6b14610b7557806361bc221a14610b5457806361f09ad214610ae757806372ff5ec4146109a35780637726ece0146108445780638e7431d3146107cb57806391d6d8e71461068d57806397fd84d214610601578063b94c9822146103d8578063bc7bdf7514610326578063d0e30db014610318578063e8702c34146102545763ed6c08f70361000e5760a03660031901126101f4576100e4611713565b6100ec611729565b604435916001600160401b038084116101f45761010f6020943690600401611944565b949061011961186f565b9461012261187e565b9561020d575b610147604051978893849363592581bb60e11b85523060048601611ad5565b038160006108055af1928315610201576000936101c1575b60209450610174575b50506040519015158152f35b60008080600f6101ba95829583549061018f8260070b611b02565b67ffffffffffffffff1990921691161783556001600160a01b03165af16101b4611b1a565b50611b4a565b3880610168565b92506020843d82116101f9575b816101db602093836117cf565b810103126101f4576101ee602094611aa5565b9261015f565b600080fd5b3d91506101ce565b6040513d6000823e3d90fd5b60005461021c8160070b611b02565b67ffffffffffffffff1990911690851617600090815561024f90808080600f6001600160a01b038b165af16101b4611b1a565b610128565b60603660031901126101f457610268611713565b6001600160401b036024358181116101f457610288903690600401611755565b9290604435918383116101f4576102c46102a86020943690600401611944565b90604051978895869563a8fdc91960e01b875260048701611a71565b038160006108055af1908115610201576020926000926102e9575b5060405191168152f35b61030a919250833d8111610311575b61030281836117cf565b81019061198b565b90836102df565b503d6102f8565b60003660031901126101f457005b60403660031901126101f45761033a61173f565b6024356001600160401b0381116101f45761035b6020913690600401611944565b9261037b604051948593849363592581bb60e11b85523060048601611ad5565b038160006108055af180156102015760009061039f575b6020906040519015158152f35b506020813d82116103d0575b816103b8602093836117cf565b810103126101f4576103cb602091611aa5565b610392565b3d91506103ab565b346101f45760603660031901126101f4576103f1611713565b6024356001600160401b0381116101f457610410903690600401611842565b6001600160401b03604435116101f4573660236044350112156101f457604435600401359061043e82611974565b9161044c60405193846117cf565b80835260208301903660248260051b6044350101116101f457602460443501915b60248260051b604435010183106105855750505060005460018160070b0190677fffffffffffffff1992677fffffffffffffff9584841287851317610533576020926001600160401b031980956001600160401b03169116176000556104e76040519687938493631758efa960e11b855260048501611d47565b038160006108015af192831561020157600093610549575b50600054916000198360070b0194851390851217610533576020936001600160401b03169116176000556040519015158152f35b634e487b7160e01b600052601160045260246000fd5b9092506020813d60201161057d575b81610565602093836117cf565b810103126101f45761057690611aa5565b91846104ff565b3d9150610558565b82356001600160401b0381116101f45760406044358201360360231901126101f457604051906105b482611782565b6001600160401b03602482604435010135116101f45760249260209283926044906105e93683358301808a0135018901611842565b8352813501013583820152815201930192905061046d565b6020806003193601126101f4576106358161061a61173f565b6040518093819263519f184360e11b83523060048401611ab2565b038160006108055af190811561020157600091610658575b506040519015158152f35b90508181813d8311610686575b61066f81836117cf565b810103126101f45761068090611aa5565b8261064d565b503d610665565b60803660031901126101f4576001600160401b036004358181116101f4576106b9903690600401611755565b90916024358181116101f4576106d56020913690600401611944565b93909461070e6106e3611860565b956106ec61186f565b96610791575b60405163a8fdc91960e01b815297889485943060048701611a71565b038160006108055af191821561020157602093600093610772575b50610738575b60405191168152f35b6000546107478160070b611b02565b8216906001600160401b0319161760005561076d6000808080600f335af16101b4611b1a565b61072f565b61078a919350843d81116103115761030281836117cf565b9184610729565b6000546107a08160070b611b02565b8716906001600160401b031916176000556107c66000808080600f335af16101b4611b1a565b6106f2565b60603660031901126101f4576107df611713565b6107e7611729565b604435906001600160401b03928383116101f45761037b61080e6020943690600401611944565b604051968795869563592581bb60e11b875260018060a01b031660048701521660248501526060604485015260648401916119cb565b60a03660031901126101f457610858611713565b6001600160401b036024358181116101f457610878903690600401611755565b9190926044358281116101f4576108956020913690600401611944565b9490956108ce6108a361186f565b966108ac61187e565b9761095c575b60405163a8fdc91960e01b815298899485943060048701611a71565b038160006108055af19283156102015760209460009461093d575b506108f8575060405191168152f35b6000808080600f6109379582546109118160070b611b02565b67ffffffffffffffff199091169089161783556001600160a01b03165af16101b4611b1a565b836102df565b610955919450853d81116103115761030281836117cf565b92856108e9565b60005461096b8160070b611b02565b67ffffffffffffffff1990911690881617600090815561099e90808080600f6001600160a01b038c165af16101b4611b1a565b6108b2565b60803660031901126101f4576109b761173f565b602435906001600160401b038083116101f4576109da6020933690600401611944565b93906109e4611860565b936109ed61186f565b94610aad575b610a12604051968793849363592581bb60e11b85523060048601611ad5565b038160006108055af191821561020157600092610a72575b60209350610a3d57506040519015158152f35b60005490610a4d8260070b611b02565b16906001600160401b031916176000556106806000808080600f335af16101b4611b1a565b91506020833d8211610aa5575b81610a8c602093836117cf565b810103126101f457610a9f602093611aa5565b91610a2a565b3d9150610a7f565b600054610abc8160070b611b02565b8516906001600160401b03191617600055610ae26000808080600f335af16101b4611b1a565b6109f3565b60403660031901126101f4576001600160401b036004358181116101f457610b13903690600401611755565b602492919235908282116101f4576102c493610b356020933690600401611944565b60405163a8fdc91960e01b815296879485949193913060048701611a71565b346101f45760003660031901126101f457602060005460070b604051908152f35b346101f45760003660031901126101f45760606101e0604051610b97816117b3565b600081528260208201526000604082015282808201528260808201528260a08201528260c08201528260e08201528261010082015260006101208201528261014082015282610160820152600061018082015260006101a082015260006101c08201520152604051635e615a6b60e01b81526000816004816108055afa801561020157600090610d7b575b610d779060405191829160208352805160070b60208401526080836101e0610d3e610d28610d03610ced610cd8610cc4610cb0610c9a8b60208101519a6060610c796102009d8e60408501526102208401906118d5565b92604081015160070b82840152015190601f199d8e828503019101526118b0565b8d60808d01519060a08d828503019101526118b0565b60a08b01518d82038b0160c08f01526118b0565b60c08a01518c82038a0160e08e01526118b0565b60e0890151888c8303016101008d01526118b0565b610100880151878b8303016101208c01526118b0565b61012087015160070b6101408a0152610140870151868a8303016101608b01526118b0565b61016086015185898303016101808a01526118d5565b9361018081015115156101a08801526101a081015115156101c08801526101c081015115158288015201519185840301908501526118b0565b0390f35b503d90816000823e610d8d82826117cf565b60208183810103126101f4578051916001600160401b0383116101f45761020083830182840103126101f45760405191610dc6836117b3565b610dd1848201611b95565b8352602084820101516001600160401b0381116101f457610df9908383019086840101611be5565b6020840152610e0c604085830101611b95565b6040840152606084820101516001600160401b0381116101f457610e37908383019086840101611ba3565b6060840152608084820101516001600160401b0381116101f457610e62908383019086840101611ba3565b608084015260a084820101516001600160401b0381116101f457610e8d908383019086840101611ba3565b60a084015260c084820101516001600160401b0381116101f457610eb8908383019086840101611ba3565b60c084015260e084820101516001600160401b0381116101f457610ee3908383019086840101611ba3565b60e084015261010084820101516001600160401b0381116101f457610f0f908383019086840101611ba3565b610100840152610f2461012085830101611b95565b61012084015261014084820101516001600160401b0381116101f457610f51908383019086840101611ba3565b61014084015261016084820101516001600160401b0381116101f457610f7e908383019086840101611be5565b610160840152610f9361018085830101611aa5565b610180840152610fa86101a085830101611aa5565b6101a0840152610fbd6101c085830101611aa5565b6101c08401526101e084820101516001600160401b0381116101f457610d7794610feb938301920101611ba3565b6101e0820152610c22565b60603660031901126101f45761100a61173f565b60243580151581036101f457602061104592611024611860565b926110ec575b6040518094819263519f184360e11b83523060048401611ab2565b038160006108055af1908115610201576000916110b1575b60209250611070575b6040519015158152f35b60005461107f8160070b611b02565b6001600160401b0316906001600160401b031916176000556110ac6000808080600f335af16101b4611b1a565b611066565b90506020823d82116110e4575b816110cb602093836117cf565b810103126101f4576110de602092611aa5565b9061105d565b3d91506110be565b6000546110fb8160070b611b02565b6001600160401b0316906001600160401b031916176000556111286000808080600f335af16101b4611b1a565b61102a565b60803660031901126101f457611181611144611713565b61114c611729565b906020611157611860565b9261116061186f565b9361122d575b6040518095819263519f184360e11b83523060048401611ab2565b038160006108055af1918215610201576000926111f2575b602093506111ac57506040519015158152f35b6000808080600f6106809582546111c58160070b611b02565b6001600160401b031667ffffffffffffffff19919091161783556001600160a01b03165af16101b4611b1a565b91506020833d8211611225575b8161120c602093836117cf565b810103126101f45761121f602093611aa5565b91611199565b3d91506111ff565b60005461123c8160070b611b02565b6001600160401b0316906001600160401b031916176000556112716000808080600f60018060a01b0389165af16101b4611b1a565b611166565b60803660031901126101f45761128a611713565b611292611729565b9060448035916001600160401b03928381116101f4576112b6903690600401611755565b93909160649485358381116101f4576112d3903690600401611842565b9160018060a01b0316926000546112ec8160070b611b02565b82166001600160401b03198092161760005560008080806001895af1611310611b1a565b50156116c65761133a97986040519063519f184360e11b8252818060209b8c933060048401611ab2565b038160006108055af16000918161168f575b5061142b5789898961135c611c98565b6308c379a0146113a7575b7f63616e63656c50726f706f73616c206661696c65642073696c656e746c790000906040519262461bcd60e51b84526004840152601e6024840152820152fd5b6113af611cb6565b806113ba5750611367565b826114066037604051809476031b0b731b2b6283937b837b9b0b6103330b4b632b21d1604d1b858301526113f68151809287868601910161188d565b81010360178101855201836117cf565b61142760405192839262461bcd60e51b8452600484015260248301906118b0565b0390fd5b1561164c5790879492959391600054916114478360070b611b02565b169116176000556040519261145b84611782565b6001845260005b85811061161c5750946114866114c1966040519261147f84611782565b369161180b565b815260028582015261149784611d24565b526114a183611d24565b506000604051809681958294635ca64c1160e11b84528660048501611d47565b03925af1600091816115e5575b5061159757506114dc611c98565b6308c379a014611532575b6084927f66756e64436f6d6d756e697479506f6f6c206661696c65642073696c656e746c607960f81b926040519462461bcd60e51b8652600486015260216024860152840152820152fd5b61153a611cb6565b8061154557506114e7565b82611406603a60405180947f66756e64436f6d6d756e697479506f6f6c206661696c65643a20000000000000858301526115878151809287868601910161188d565b810103601a8101855201836117cf565b156115a6575060405160018152f35b7f66756e64436f6d6d756e697479506f6f6c2072657475726e65642066616c7365906040519262461bcd60e51b84528060048501526024840152820152fd5b9091508381813d8311611615575b6115fd81836117cf565b810103126101f45761160e90611aa5565b90856114ce565b503d6115f3565b6040969395919294965161162f81611782565b606081526000838201528282890101520190879492959391611462565b60405162461bcd60e51b815260048101899052601d60248201527f63616e63656c50726f706f73616c2072657475726e65642066616c7365000000818901528990fd5b9091508981813d83116116bf575b6116a781836117cf565b810103126101f4576116b890611aa5565b908b61134c565b503d61169d565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f206465706f7369746f81890152603960f91b818a0152608490fd5b600435906001600160a01b03821682036101f457565b602435906001600160401b03821682036101f457565b600435906001600160401b03821682036101f457565b9181601f840112156101f4578235916001600160401b0383116101f457602083818601950101116101f457565b604081019081106001600160401b0382111761179d57604052565b634e487b7160e01b600052604160045260246000fd5b61020081019081106001600160401b0382111761179d57604052565b90601f801991011681019081106001600160401b0382111761179d57604052565b6001600160401b03811161179d57601f01601f191660200190565b929192611817826117f0565b9161182560405193846117cf565b8294818452818301116101f4578281602093846000960137010152565b9080601f830112156101f45781602061185d9335910161180b565b90565b6044359081151582036101f457565b6064359081151582036101f457565b6084359081151582036101f457565b60005b8381106118a05750506000910152565b8181015183820152602001611890565b906020916118c98151809281855285808601910161188d565b601f01601f1916010190565b908082519081815260208091019281808460051b8301019501936000915b8483106119035750505050505090565b9091929394958480600192601f19858203018652895190828061192e845160408086528501906118b0565b93015191015298019301930191949392906118f3565b9181601f840112156101f4578235916001600160401b0383116101f4576020808501948460051b0101116101f457565b6001600160401b03811161179d5760051b60200190565b908160209103126101f457516001600160401b03811681036101f45790565b908060209392818452848401376000828201840152601f01601f1916010190565b9080835260208093019081938160051b830194846000915b8483106119f4575050505050505090565b9091929394959681810387528735603e19843603018112156101f45783018035601e19823603018112156101f4578101908682359201906001600160401b0383116101f45782360382136101f4576001938880611a5c819695829660408087528601916119aa565b930135910152990197019594930191906119e3565b939161185d9593611a979260018060a01b031686526060602087015260608601916119aa565b9260408185039101526119cb565b519081151582036101f457565b6001600160a01b0390911681526001600160401b03909116602082015260400190565b6001600160401b0361185d959360609360018060a01b0316835216602082015281604082015201916119cb565b60070b677fffffffffffffff81146105335760010190565b3d15611b45573d90611b2b826117f0565b91611b3960405193846117cf565b82523d6000602084013e565b606090565b15611b5157565b606460405162461bcd60e51b815260206004820152602060248201527f4661696c656420746f2073656e6420457468657220746f2070726f706f7365726044820152fd5b51908160070b82036101f457565b81601f820112156101f4578051611bb9816117f0565b92611bc760405194856117cf565b818452602082840101116101f45761185d916020808501910161188d565b81601f820112156101f4578051611bfb81611974565b92604091611c0b835195866117cf565b808552602093848087019260051b820101938385116101f457858201925b858410611c3a575050505050505090565b8351906001600160401b03918281116101f45784019083601f1983890301126101f4578351611c6881611782565b898301519384116101f4578483611c858a8d809881980101611ba3565b8352015183820152815201930192611c29565b60009060033d11611ca557565b905060046000803e60005160e01c90565b600060443d1061185d57604051600319913d83016004833e81516001600160401b03918282113d602484011117611d1357818401948551938411611d1b573d85010160208487010111611d13575061185d929101602001906117cf565b949350505050565b50949350505050565b805115611d315760200190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909116815260606020820181905261185d939192611d6f918401906118b0565b9160408184039101526118d556fea2646970667358221220c9625558987b92b3d3d39d698b4548091cb23adaf68209787374d331e395f0ec64736f6c63430008140033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80630f6265fb14611276578063258691e21461112d57806326c11ffa14610ff65780635e615a6b14610b7557806361bc221a14610b5457806361f09ad214610ae757806372ff5ec4146109a35780637726ece0146108445780638e7431d3146107cb57806391d6d8e71461068d57806397fd84d214610601578063b94c9822146103d8578063bc7bdf7514610326578063d0e30db014610318578063e8702c34146102545763ed6c08f70361000e5760a03660031901126101f4576100e4611713565b6100ec611729565b604435916001600160401b038084116101f45761010f6020943690600401611944565b949061011961186f565b9461012261187e565b9561020d575b610147604051978893849363592581bb60e11b85523060048601611ad5565b038160006108055af1928315610201576000936101c1575b60209450610174575b50506040519015158152f35b60008080600f6101ba95829583549061018f8260070b611b02565b67ffffffffffffffff1990921691161783556001600160a01b03165af16101b4611b1a565b50611b4a565b3880610168565b92506020843d82116101f9575b816101db602093836117cf565b810103126101f4576101ee602094611aa5565b9261015f565b600080fd5b3d91506101ce565b6040513d6000823e3d90fd5b60005461021c8160070b611b02565b67ffffffffffffffff1990911690851617600090815561024f90808080600f6001600160a01b038b165af16101b4611b1a565b610128565b60603660031901126101f457610268611713565b6001600160401b036024358181116101f457610288903690600401611755565b9290604435918383116101f4576102c46102a86020943690600401611944565b90604051978895869563a8fdc91960e01b875260048701611a71565b038160006108055af1908115610201576020926000926102e9575b5060405191168152f35b61030a919250833d8111610311575b61030281836117cf565b81019061198b565b90836102df565b503d6102f8565b60003660031901126101f457005b60403660031901126101f45761033a61173f565b6024356001600160401b0381116101f45761035b6020913690600401611944565b9261037b604051948593849363592581bb60e11b85523060048601611ad5565b038160006108055af180156102015760009061039f575b6020906040519015158152f35b506020813d82116103d0575b816103b8602093836117cf565b810103126101f4576103cb602091611aa5565b610392565b3d91506103ab565b346101f45760603660031901126101f4576103f1611713565b6024356001600160401b0381116101f457610410903690600401611842565b6001600160401b03604435116101f4573660236044350112156101f457604435600401359061043e82611974565b9161044c60405193846117cf565b80835260208301903660248260051b6044350101116101f457602460443501915b60248260051b604435010183106105855750505060005460018160070b0190677fffffffffffffff1992677fffffffffffffff9584841287851317610533576020926001600160401b031980956001600160401b03169116176000556104e76040519687938493631758efa960e11b855260048501611d47565b038160006108015af192831561020157600093610549575b50600054916000198360070b0194851390851217610533576020936001600160401b03169116176000556040519015158152f35b634e487b7160e01b600052601160045260246000fd5b9092506020813d60201161057d575b81610565602093836117cf565b810103126101f45761057690611aa5565b91846104ff565b3d9150610558565b82356001600160401b0381116101f45760406044358201360360231901126101f457604051906105b482611782565b6001600160401b03602482604435010135116101f45760249260209283926044906105e93683358301808a0135018901611842565b8352813501013583820152815201930192905061046d565b6020806003193601126101f4576106358161061a61173f565b6040518093819263519f184360e11b83523060048401611ab2565b038160006108055af190811561020157600091610658575b506040519015158152f35b90508181813d8311610686575b61066f81836117cf565b810103126101f45761068090611aa5565b8261064d565b503d610665565b60803660031901126101f4576001600160401b036004358181116101f4576106b9903690600401611755565b90916024358181116101f4576106d56020913690600401611944565b93909461070e6106e3611860565b956106ec61186f565b96610791575b60405163a8fdc91960e01b815297889485943060048701611a71565b038160006108055af191821561020157602093600093610772575b50610738575b60405191168152f35b6000546107478160070b611b02565b8216906001600160401b0319161760005561076d6000808080600f335af16101b4611b1a565b61072f565b61078a919350843d81116103115761030281836117cf565b9184610729565b6000546107a08160070b611b02565b8716906001600160401b031916176000556107c66000808080600f335af16101b4611b1a565b6106f2565b60603660031901126101f4576107df611713565b6107e7611729565b604435906001600160401b03928383116101f45761037b61080e6020943690600401611944565b604051968795869563592581bb60e11b875260018060a01b031660048701521660248501526060604485015260648401916119cb565b60a03660031901126101f457610858611713565b6001600160401b036024358181116101f457610878903690600401611755565b9190926044358281116101f4576108956020913690600401611944565b9490956108ce6108a361186f565b966108ac61187e565b9761095c575b60405163a8fdc91960e01b815298899485943060048701611a71565b038160006108055af19283156102015760209460009461093d575b506108f8575060405191168152f35b6000808080600f6109379582546109118160070b611b02565b67ffffffffffffffff199091169089161783556001600160a01b03165af16101b4611b1a565b836102df565b610955919450853d81116103115761030281836117cf565b92856108e9565b60005461096b8160070b611b02565b67ffffffffffffffff1990911690881617600090815561099e90808080600f6001600160a01b038c165af16101b4611b1a565b6108b2565b60803660031901126101f4576109b761173f565b602435906001600160401b038083116101f4576109da6020933690600401611944565b93906109e4611860565b936109ed61186f565b94610aad575b610a12604051968793849363592581bb60e11b85523060048601611ad5565b038160006108055af191821561020157600092610a72575b60209350610a3d57506040519015158152f35b60005490610a4d8260070b611b02565b16906001600160401b031916176000556106806000808080600f335af16101b4611b1a565b91506020833d8211610aa5575b81610a8c602093836117cf565b810103126101f457610a9f602093611aa5565b91610a2a565b3d9150610a7f565b600054610abc8160070b611b02565b8516906001600160401b03191617600055610ae26000808080600f335af16101b4611b1a565b6109f3565b60403660031901126101f4576001600160401b036004358181116101f457610b13903690600401611755565b602492919235908282116101f4576102c493610b356020933690600401611944565b60405163a8fdc91960e01b815296879485949193913060048701611a71565b346101f45760003660031901126101f457602060005460070b604051908152f35b346101f45760003660031901126101f45760606101e0604051610b97816117b3565b600081528260208201526000604082015282808201528260808201528260a08201528260c08201528260e08201528261010082015260006101208201528261014082015282610160820152600061018082015260006101a082015260006101c08201520152604051635e615a6b60e01b81526000816004816108055afa801561020157600090610d7b575b610d779060405191829160208352805160070b60208401526080836101e0610d3e610d28610d03610ced610cd8610cc4610cb0610c9a8b60208101519a6060610c796102009d8e60408501526102208401906118d5565b92604081015160070b82840152015190601f199d8e828503019101526118b0565b8d60808d01519060a08d828503019101526118b0565b60a08b01518d82038b0160c08f01526118b0565b60c08a01518c82038a0160e08e01526118b0565b60e0890151888c8303016101008d01526118b0565b610100880151878b8303016101208c01526118b0565b61012087015160070b6101408a0152610140870151868a8303016101608b01526118b0565b61016086015185898303016101808a01526118d5565b9361018081015115156101a08801526101a081015115156101c08801526101c081015115158288015201519185840301908501526118b0565b0390f35b503d90816000823e610d8d82826117cf565b60208183810103126101f4578051916001600160401b0383116101f45761020083830182840103126101f45760405191610dc6836117b3565b610dd1848201611b95565b8352602084820101516001600160401b0381116101f457610df9908383019086840101611be5565b6020840152610e0c604085830101611b95565b6040840152606084820101516001600160401b0381116101f457610e37908383019086840101611ba3565b6060840152608084820101516001600160401b0381116101f457610e62908383019086840101611ba3565b608084015260a084820101516001600160401b0381116101f457610e8d908383019086840101611ba3565b60a084015260c084820101516001600160401b0381116101f457610eb8908383019086840101611ba3565b60c084015260e084820101516001600160401b0381116101f457610ee3908383019086840101611ba3565b60e084015261010084820101516001600160401b0381116101f457610f0f908383019086840101611ba3565b610100840152610f2461012085830101611b95565b61012084015261014084820101516001600160401b0381116101f457610f51908383019086840101611ba3565b61014084015261016084820101516001600160401b0381116101f457610f7e908383019086840101611be5565b610160840152610f9361018085830101611aa5565b610180840152610fa86101a085830101611aa5565b6101a0840152610fbd6101c085830101611aa5565b6101c08401526101e084820101516001600160401b0381116101f457610d7794610feb938301920101611ba3565b6101e0820152610c22565b60603660031901126101f45761100a61173f565b60243580151581036101f457602061104592611024611860565b926110ec575b6040518094819263519f184360e11b83523060048401611ab2565b038160006108055af1908115610201576000916110b1575b60209250611070575b6040519015158152f35b60005461107f8160070b611b02565b6001600160401b0316906001600160401b031916176000556110ac6000808080600f335af16101b4611b1a565b611066565b90506020823d82116110e4575b816110cb602093836117cf565b810103126101f4576110de602092611aa5565b9061105d565b3d91506110be565b6000546110fb8160070b611b02565b6001600160401b0316906001600160401b031916176000556111286000808080600f335af16101b4611b1a565b61102a565b60803660031901126101f457611181611144611713565b61114c611729565b906020611157611860565b9261116061186f565b9361122d575b6040518095819263519f184360e11b83523060048401611ab2565b038160006108055af1918215610201576000926111f2575b602093506111ac57506040519015158152f35b6000808080600f6106809582546111c58160070b611b02565b6001600160401b031667ffffffffffffffff19919091161783556001600160a01b03165af16101b4611b1a565b91506020833d8211611225575b8161120c602093836117cf565b810103126101f45761121f602093611aa5565b91611199565b3d91506111ff565b60005461123c8160070b611b02565b6001600160401b0316906001600160401b031916176000556112716000808080600f60018060a01b0389165af16101b4611b1a565b611166565b60803660031901126101f45761128a611713565b611292611729565b9060448035916001600160401b03928381116101f4576112b6903690600401611755565b93909160649485358381116101f4576112d3903690600401611842565b9160018060a01b0316926000546112ec8160070b611b02565b82166001600160401b03198092161760005560008080806001895af1611310611b1a565b50156116c65761133a97986040519063519f184360e11b8252818060209b8c933060048401611ab2565b038160006108055af16000918161168f575b5061142b5789898961135c611c98565b6308c379a0146113a7575b7f63616e63656c50726f706f73616c206661696c65642073696c656e746c790000906040519262461bcd60e51b84526004840152601e6024840152820152fd5b6113af611cb6565b806113ba5750611367565b826114066037604051809476031b0b731b2b6283937b837b9b0b6103330b4b632b21d1604d1b858301526113f68151809287868601910161188d565b81010360178101855201836117cf565b61142760405192839262461bcd60e51b8452600484015260248301906118b0565b0390fd5b1561164c5790879492959391600054916114478360070b611b02565b169116176000556040519261145b84611782565b6001845260005b85811061161c5750946114866114c1966040519261147f84611782565b369161180b565b815260028582015261149784611d24565b526114a183611d24565b506000604051809681958294635ca64c1160e11b84528660048501611d47565b03925af1600091816115e5575b5061159757506114dc611c98565b6308c379a014611532575b6084927f66756e64436f6d6d756e697479506f6f6c206661696c65642073696c656e746c607960f81b926040519462461bcd60e51b8652600486015260216024860152840152820152fd5b61153a611cb6565b8061154557506114e7565b82611406603a60405180947f66756e64436f6d6d756e697479506f6f6c206661696c65643a20000000000000858301526115878151809287868601910161188d565b810103601a8101855201836117cf565b156115a6575060405160018152f35b7f66756e64436f6d6d756e697479506f6f6c2072657475726e65642066616c7365906040519262461bcd60e51b84528060048501526024840152820152fd5b9091508381813d8311611615575b6115fd81836117cf565b810103126101f45761160e90611aa5565b90856114ce565b503d6115f3565b6040969395919294965161162f81611782565b606081526000838201528282890101520190879492959391611462565b60405162461bcd60e51b815260048101899052601d60248201527f63616e63656c50726f706f73616c2072657475726e65642066616c7365000000818901528990fd5b9091508981813d83116116bf575b6116a781836117cf565b810103126101f4576116b890611aa5565b908b61134c565b503d61169d565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f206465706f7369746f81890152603960f91b818a0152608490fd5b600435906001600160a01b03821682036101f457565b602435906001600160401b03821682036101f457565b600435906001600160401b03821682036101f457565b9181601f840112156101f4578235916001600160401b0383116101f457602083818601950101116101f457565b604081019081106001600160401b0382111761179d57604052565b634e487b7160e01b600052604160045260246000fd5b61020081019081106001600160401b0382111761179d57604052565b90601f801991011681019081106001600160401b0382111761179d57604052565b6001600160401b03811161179d57601f01601f191660200190565b929192611817826117f0565b9161182560405193846117cf565b8294818452818301116101f4578281602093846000960137010152565b9080601f830112156101f45781602061185d9335910161180b565b90565b6044359081151582036101f457565b6064359081151582036101f457565b6084359081151582036101f457565b60005b8381106118a05750506000910152565b8181015183820152602001611890565b906020916118c98151809281855285808601910161188d565b601f01601f1916010190565b908082519081815260208091019281808460051b8301019501936000915b8483106119035750505050505090565b9091929394958480600192601f19858203018652895190828061192e845160408086528501906118b0565b93015191015298019301930191949392906118f3565b9181601f840112156101f4578235916001600160401b0383116101f4576020808501948460051b0101116101f457565b6001600160401b03811161179d5760051b60200190565b908160209103126101f457516001600160401b03811681036101f45790565b908060209392818452848401376000828201840152601f01601f1916010190565b9080835260208093019081938160051b830194846000915b8483106119f4575050505050505090565b9091929394959681810387528735603e19843603018112156101f45783018035601e19823603018112156101f4578101908682359201906001600160401b0383116101f45782360382136101f4576001938880611a5c819695829660408087528601916119aa565b930135910152990197019594930191906119e3565b939161185d9593611a979260018060a01b031686526060602087015260608601916119aa565b9260408185039101526119cb565b519081151582036101f457565b6001600160a01b0390911681526001600160401b03909116602082015260400190565b6001600160401b0361185d959360609360018060a01b0316835216602082015281604082015201916119cb565b60070b677fffffffffffffff81146105335760010190565b3d15611b45573d90611b2b826117f0565b91611b3960405193846117cf565b82523d6000602084013e565b606090565b15611b5157565b606460405162461bcd60e51b815260206004820152602060248201527f4661696c656420746f2073656e6420457468657220746f2070726f706f7365726044820152fd5b51908160070b82036101f457565b81601f820112156101f4578051611bb9816117f0565b92611bc760405194856117cf565b818452602082840101116101f45761185d916020808501910161188d565b81601f820112156101f4578051611bfb81611974565b92604091611c0b835195866117cf565b808552602093848087019260051b820101938385116101f457858201925b858410611c3a575050505050505090565b8351906001600160401b03918281116101f45784019083601f1983890301126101f4578351611c6881611782565b898301519384116101f4578483611c858a8d809881980101611ba3565b8352015183820152815201930192611c29565b60009060033d11611ca557565b905060046000803e60005160e01c90565b600060443d1061185d57604051600319913d83016004833e81516001600160401b03918282113d602484011117611d1357818401948551938411611d1b573d85010160208487010111611d13575061185d929101602001906117cf565b949350505050565b50949350505050565b805115611d315760200190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909116815260606020820181905261185d939192611d6f918401906118b0565b9160408184039101526118d556fea2646970667358221220c9625558987b92b3d3d39d698b4548091cb23adaf68209787374d331e395f0ec64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/ICS20Caller.json b/precompiles/testutil/contracts/ICS20Caller.json index d111fa2ac..71a2210d5 100644 --- a/precompiles/testutil/contracts/ICS20Caller.json +++ b/precompiles/testutil/contracts/ICS20Caller.json @@ -388,8 +388,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611441806100206000396000f3fe6080604052600436106100705760003560e01c8063c35264501161004e578063c352645014610106578063d0e30db014610143578063d8bb6c0e1461014d578063e12e9b271461018a57610070565b806361bc221a14610075578063b42bc5a9146100a0578063bcc45b79146100c9575b600080fd5b34801561008157600080fd5b5061008a6101c7565b60405161009791906107ff565b60405180910390f35b3480156100ac57600080fd5b506100c760048036038101906100c29190610ad5565b6101d8565b005b3480156100d557600080fd5b506100f060048036038101906100eb9190610c55565b61036e565b6040516100fd9190610da7565b60405180910390f35b34801561011257600080fd5b5061012d60048036038101906101289190610dc2565b61040c565b60405161013a9190610da7565b60405180910390f35b61014b6106ad565b005b34801561015957600080fd5b50610174600480360381019061016f9190610f43565b6106af565b6040516101819190610da7565b60405180910390f35b34801561019657600080fd5b506101b160048036038101906101ac9190610f43565b61074e565b6040516101be9190610da7565b60405180910390f35b60008054906101000a900460070b81565b3073ffffffffffffffffffffffffffffffffffffffff1663e12e9b278c8c8c8c8c8c8b8b8b6040518a63ffffffff1660e01b815260040161022199989796959493929190611175565b6020604051808303816000875af192505050801561025d57506040513d601f19601f8201168201806040525081019061025a919061123b565b60015b1561026457505b80156103615760008081819054906101000a900460070b8092919061028890611297565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f6040516102d9906112f8565b60006040518083038185875af1925050503d8060008114610316576040519150601f19603f3d011682016040523d82523d6000602084013e61031b565b606091505b505090508061035f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103569061137f565b60405180910390fd5b505b5050505050505050505050565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a8a308b8b8b8b6040518a63ffffffff1660e01b81526004016103bb99989796959493929190611175565b6020604051808303816000875af11580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe919061123b565b905098975050505050505050565b6000821561050b5760008081819054906101000a900460070b8092919061043290611297565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610483906112f8565b60006040518083038185875af1925050503d80600081146104c0576040519150601f19603f3d011682016040523d82523d6000602084013e6104c5565b606091505b5050905080610509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610500906113eb565b60405180910390fd5b505b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98e8e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b815260040161055899989796959493929190611175565b6020604051808303816000875af1158015610577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059b919061123b565b9050821561069a5760008081819054906101000a900460070b809291906105c190611297565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610612906112f8565b60006040518083038185875af1925050503d806000811461064f576040519150601f19603f3d011682016040523d82523d6000602084013e610654565b606091505b5050905080610698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068f906113eb565b60405180910390fd5b505b809150509b9a5050505050505050505050565b565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98b8b8b8b8b8b8b8b8b6040518a63ffffffff1660e01b81526004016106fc99989796959493929190611175565b6020604051808303816000875af115801561071b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f919061123b565b90509998505050505050505050565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98b8b8b8b8b8b8b8b8b6040518a63ffffffff1660e01b815260040161079b99989796959493929190611175565b6020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061123b565b600080fd5b60008160070b9050919050565b6107f9816107e3565b82525050565b600060208201905061081460008301846107f0565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61088182610838565b810181811067ffffffffffffffff821117156108a05761089f610849565b5b80604052505050565b60006108b361081a565b90506108bf8282610878565b919050565b600067ffffffffffffffff8211156108df576108de610849565b5b6108e882610838565b9050602081019050919050565b82818337600083830152505050565b6000610917610912846108c4565b6108a9565b90508281526020810184848401111561093357610932610833565b5b61093e8482856108f5565b509392505050565b600082601f83011261095b5761095a61082e565b5b813561096b848260208601610904565b91505092915050565b6000819050919050565b61098781610974565b811461099257600080fd5b50565b6000813590506109a48161097e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109d5826109aa565b9050919050565b6109e5816109ca565b81146109f057600080fd5b50565b600081359050610a02816109dc565b92915050565b600080fd5b600067ffffffffffffffff82169050919050565b610a2a81610a0d565b8114610a3557600080fd5b50565b600081359050610a4781610a21565b92915050565b600060408284031215610a6357610a62610a08565b5b610a6d60406108a9565b90506000610a7d84828501610a38565b6000830152506020610a9184828501610a38565b60208301525092915050565b60008115159050919050565b610ab281610a9d565b8114610abd57600080fd5b50565b600081359050610acf81610aa9565b92915050565b60008060008060008060008060008060006101808c8e031215610afb57610afa610824565b5b60008c013567ffffffffffffffff811115610b1957610b18610829565b5b610b258e828f01610946565b9b505060208c013567ffffffffffffffff811115610b4657610b45610829565b5b610b528e828f01610946565b9a505060408c013567ffffffffffffffff811115610b7357610b72610829565b5b610b7f8e828f01610946565b9950506060610b908e828f01610995565b9850506080610ba18e828f016109f3565b97505060a08c013567ffffffffffffffff811115610bc257610bc1610829565b5b610bce8e828f01610946565b96505060c0610bdf8e828f016109f3565b95505060e0610bf08e828f01610a4d565b945050610120610c028e828f01610a38565b9350506101408c013567ffffffffffffffff811115610c2457610c23610829565b5b610c308e828f01610946565b925050610160610c428e828f01610ac0565b9150509295989b509295989b9093969950565b600080600080600080600080610120898b031215610c7657610c75610824565b5b600089013567ffffffffffffffff811115610c9457610c93610829565b5b610ca08b828c01610946565b985050602089013567ffffffffffffffff811115610cc157610cc0610829565b5b610ccd8b828c01610946565b975050604089013567ffffffffffffffff811115610cee57610ced610829565b5b610cfa8b828c01610946565b9650506060610d0b8b828c01610995565b955050608089013567ffffffffffffffff811115610d2c57610d2b610829565b5b610d388b828c01610946565b94505060a0610d498b828c01610a4d565b93505060e0610d5a8b828c01610a38565b92505061010089013567ffffffffffffffff811115610d7c57610d7b610829565b5b610d888b828c01610946565b9150509295985092959890939650565b610da181610a0d565b82525050565b6000602082019050610dbc6000830184610d98565b92915050565b60008060008060008060008060008060006101808c8e031215610de857610de7610824565b5b60008c013567ffffffffffffffff811115610e0657610e05610829565b5b610e128e828f01610946565b9b505060208c013567ffffffffffffffff811115610e3357610e32610829565b5b610e3f8e828f01610946565b9a505060408c013567ffffffffffffffff811115610e6057610e5f610829565b5b610e6c8e828f01610946565b9950506060610e7d8e828f01610995565b9850506080610e8e8e828f016109f3565b97505060a08c013567ffffffffffffffff811115610eaf57610eae610829565b5b610ebb8e828f01610946565b96505060c0610ecc8e828f01610a4d565b955050610100610ede8e828f01610a38565b9450506101208c013567ffffffffffffffff811115610f0057610eff610829565b5b610f0c8e828f01610946565b935050610140610f1e8e828f01610ac0565b925050610160610f308e828f01610ac0565b9150509295989b509295989b9093969950565b60008060008060008060008060006101408a8c031215610f6657610f65610824565b5b60008a013567ffffffffffffffff811115610f8457610f83610829565b5b610f908c828d01610946565b99505060208a013567ffffffffffffffff811115610fb157610fb0610829565b5b610fbd8c828d01610946565b98505060408a013567ffffffffffffffff811115610fde57610fdd610829565b5b610fea8c828d01610946565b9750506060610ffb8c828d01610995565b965050608061100c8c828d016109f3565b95505060a08a013567ffffffffffffffff81111561102d5761102c610829565b5b6110398c828d01610946565b94505060c061104a8c828d01610a4d565b93505061010061105c8c828d01610a38565b9250506101208a013567ffffffffffffffff81111561107e5761107d610829565b5b61108a8c828d01610946565b9150509295985092959850929598565b600081519050919050565b600082825260208201905092915050565b60005b838110156110d45780820151818401526020810190506110b9565b60008484015250505050565b60006110eb8261109a565b6110f581856110a5565b93506111058185602086016110b6565b61110e81610838565b840191505092915050565b61112281610974565b82525050565b611131816109ca565b82525050565b61114081610a0d565b82525050565b60408201600082015161115c6000850182611137565b50602082015161116f6020850182611137565b50505050565b6000610140820190508181036000830152611190818c6110e0565b905081810360208301526111a4818b6110e0565b905081810360408301526111b8818a6110e0565b90506111c76060830189611119565b6111d46080830188611128565b81810360a08301526111e681876110e0565b90506111f560c0830186611146565b611203610100830185610d98565b81810361012083015261121681846110e0565b90509a9950505050505050505050565b60008151905061123581610a21565b92915050565b60006020828403121561125157611250610824565b5b600061125f84828501611226565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112a2826107e3565b9150677fffffffffffffff82036112bc576112bb611268565b5b600182019050919050565b600081905092915050565b50565b60006112e26000836112c7565b91506112ed826112d2565b600082019050919050565b6000611303826112d5565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006113696021836110a5565b91506113748261130d565b604082019050919050565b600060208201905081810360008301526113988161135c565b9050919050565b7f4661696c656420746f2073656e6420457468657220746f2073656e6465720000600082015250565b60006113d5601e836110a5565b91506113e08261139f565b602082019050919050565b60006020820190508181036000830152611404816113c8565b905091905056fea2646970667358221220f03fdfa29644c503bd2ebd2faaa75c42d40249bad32bcd7836785bf67b9dfd5364736f6c63430008140033", - "deployedBytecode": "0x6080604052600436106100705760003560e01c8063c35264501161004e578063c352645014610106578063d0e30db014610143578063d8bb6c0e1461014d578063e12e9b271461018a57610070565b806361bc221a14610075578063b42bc5a9146100a0578063bcc45b79146100c9575b600080fd5b34801561008157600080fd5b5061008a6101c7565b60405161009791906107ff565b60405180910390f35b3480156100ac57600080fd5b506100c760048036038101906100c29190610ad5565b6101d8565b005b3480156100d557600080fd5b506100f060048036038101906100eb9190610c55565b61036e565b6040516100fd9190610da7565b60405180910390f35b34801561011257600080fd5b5061012d60048036038101906101289190610dc2565b61040c565b60405161013a9190610da7565b60405180910390f35b61014b6106ad565b005b34801561015957600080fd5b50610174600480360381019061016f9190610f43565b6106af565b6040516101819190610da7565b60405180910390f35b34801561019657600080fd5b506101b160048036038101906101ac9190610f43565b61074e565b6040516101be9190610da7565b60405180910390f35b60008054906101000a900460070b81565b3073ffffffffffffffffffffffffffffffffffffffff1663e12e9b278c8c8c8c8c8c8b8b8b6040518a63ffffffff1660e01b815260040161022199989796959493929190611175565b6020604051808303816000875af192505050801561025d57506040513d601f19601f8201168201806040525081019061025a919061123b565b60015b1561026457505b80156103615760008081819054906101000a900460070b8092919061028890611297565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008573ffffffffffffffffffffffffffffffffffffffff16600f6040516102d9906112f8565b60006040518083038185875af1925050503d8060008114610316576040519150601f19603f3d011682016040523d82523d6000602084013e61031b565b606091505b505090508061035f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103569061137f565b60405180910390fd5b505b5050505050505050505050565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a8a308b8b8b8b6040518a63ffffffff1660e01b81526004016103bb99989796959493929190611175565b6020604051808303816000875af11580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe919061123b565b905098975050505050505050565b6000821561050b5760008081819054906101000a900460070b8092919061043290611297565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610483906112f8565b60006040518083038185875af1925050503d80600081146104c0576040519150601f19603f3d011682016040523d82523d6000602084013e6104c5565b606091505b5050905080610509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610500906113eb565b60405180910390fd5b505b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98e8e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b815260040161055899989796959493929190611175565b6020604051808303816000875af1158015610577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059b919061123b565b9050821561069a5760008081819054906101000a900460070b809291906105c190611297565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060003373ffffffffffffffffffffffffffffffffffffffff16600f604051610612906112f8565b60006040518083038185875af1925050503d806000811461064f576040519150601f19603f3d011682016040523d82523d6000602084013e610654565b606091505b5050905080610698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068f906113eb565b60405180910390fd5b505b809150509b9a5050505050505050505050565b565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98b8b8b8b8b8b8b8b8b6040518a63ffffffff1660e01b81526004016106fc99989796959493929190611175565b6020604051808303816000875af115801561071b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f919061123b565b90509998505050505050505050565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98b8b8b8b8b8b8b8b8b6040518a63ffffffff1660e01b815260040161079b99989796959493929190611175565b6020604051808303816000875af11580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061123b565b600080fd5b60008160070b9050919050565b6107f9816107e3565b82525050565b600060208201905061081460008301846107f0565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61088182610838565b810181811067ffffffffffffffff821117156108a05761089f610849565b5b80604052505050565b60006108b361081a565b90506108bf8282610878565b919050565b600067ffffffffffffffff8211156108df576108de610849565b5b6108e882610838565b9050602081019050919050565b82818337600083830152505050565b6000610917610912846108c4565b6108a9565b90508281526020810184848401111561093357610932610833565b5b61093e8482856108f5565b509392505050565b600082601f83011261095b5761095a61082e565b5b813561096b848260208601610904565b91505092915050565b6000819050919050565b61098781610974565b811461099257600080fd5b50565b6000813590506109a48161097e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109d5826109aa565b9050919050565b6109e5816109ca565b81146109f057600080fd5b50565b600081359050610a02816109dc565b92915050565b600080fd5b600067ffffffffffffffff82169050919050565b610a2a81610a0d565b8114610a3557600080fd5b50565b600081359050610a4781610a21565b92915050565b600060408284031215610a6357610a62610a08565b5b610a6d60406108a9565b90506000610a7d84828501610a38565b6000830152506020610a9184828501610a38565b60208301525092915050565b60008115159050919050565b610ab281610a9d565b8114610abd57600080fd5b50565b600081359050610acf81610aa9565b92915050565b60008060008060008060008060008060006101808c8e031215610afb57610afa610824565b5b60008c013567ffffffffffffffff811115610b1957610b18610829565b5b610b258e828f01610946565b9b505060208c013567ffffffffffffffff811115610b4657610b45610829565b5b610b528e828f01610946565b9a505060408c013567ffffffffffffffff811115610b7357610b72610829565b5b610b7f8e828f01610946565b9950506060610b908e828f01610995565b9850506080610ba18e828f016109f3565b97505060a08c013567ffffffffffffffff811115610bc257610bc1610829565b5b610bce8e828f01610946565b96505060c0610bdf8e828f016109f3565b95505060e0610bf08e828f01610a4d565b945050610120610c028e828f01610a38565b9350506101408c013567ffffffffffffffff811115610c2457610c23610829565b5b610c308e828f01610946565b925050610160610c428e828f01610ac0565b9150509295989b509295989b9093969950565b600080600080600080600080610120898b031215610c7657610c75610824565b5b600089013567ffffffffffffffff811115610c9457610c93610829565b5b610ca08b828c01610946565b985050602089013567ffffffffffffffff811115610cc157610cc0610829565b5b610ccd8b828c01610946565b975050604089013567ffffffffffffffff811115610cee57610ced610829565b5b610cfa8b828c01610946565b9650506060610d0b8b828c01610995565b955050608089013567ffffffffffffffff811115610d2c57610d2b610829565b5b610d388b828c01610946565b94505060a0610d498b828c01610a4d565b93505060e0610d5a8b828c01610a38565b92505061010089013567ffffffffffffffff811115610d7c57610d7b610829565b5b610d888b828c01610946565b9150509295985092959890939650565b610da181610a0d565b82525050565b6000602082019050610dbc6000830184610d98565b92915050565b60008060008060008060008060008060006101808c8e031215610de857610de7610824565b5b60008c013567ffffffffffffffff811115610e0657610e05610829565b5b610e128e828f01610946565b9b505060208c013567ffffffffffffffff811115610e3357610e32610829565b5b610e3f8e828f01610946565b9a505060408c013567ffffffffffffffff811115610e6057610e5f610829565b5b610e6c8e828f01610946565b9950506060610e7d8e828f01610995565b9850506080610e8e8e828f016109f3565b97505060a08c013567ffffffffffffffff811115610eaf57610eae610829565b5b610ebb8e828f01610946565b96505060c0610ecc8e828f01610a4d565b955050610100610ede8e828f01610a38565b9450506101208c013567ffffffffffffffff811115610f0057610eff610829565b5b610f0c8e828f01610946565b935050610140610f1e8e828f01610ac0565b925050610160610f308e828f01610ac0565b9150509295989b509295989b9093969950565b60008060008060008060008060006101408a8c031215610f6657610f65610824565b5b60008a013567ffffffffffffffff811115610f8457610f83610829565b5b610f908c828d01610946565b99505060208a013567ffffffffffffffff811115610fb157610fb0610829565b5b610fbd8c828d01610946565b98505060408a013567ffffffffffffffff811115610fde57610fdd610829565b5b610fea8c828d01610946565b9750506060610ffb8c828d01610995565b965050608061100c8c828d016109f3565b95505060a08a013567ffffffffffffffff81111561102d5761102c610829565b5b6110398c828d01610946565b94505060c061104a8c828d01610a4d565b93505061010061105c8c828d01610a38565b9250506101208a013567ffffffffffffffff81111561107e5761107d610829565b5b61108a8c828d01610946565b9150509295985092959850929598565b600081519050919050565b600082825260208201905092915050565b60005b838110156110d45780820151818401526020810190506110b9565b60008484015250505050565b60006110eb8261109a565b6110f581856110a5565b93506111058185602086016110b6565b61110e81610838565b840191505092915050565b61112281610974565b82525050565b611131816109ca565b82525050565b61114081610a0d565b82525050565b60408201600082015161115c6000850182611137565b50602082015161116f6020850182611137565b50505050565b6000610140820190508181036000830152611190818c6110e0565b905081810360208301526111a4818b6110e0565b905081810360408301526111b8818a6110e0565b90506111c76060830189611119565b6111d46080830188611128565b81810360a08301526111e681876110e0565b90506111f560c0830186611146565b611203610100830185610d98565b81810361012083015261121681846110e0565b90509a9950505050505050505050565b60008151905061123581610a21565b92915050565b60006020828403121561125157611250610824565b5b600061125f84828501611226565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112a2826107e3565b9150677fffffffffffffff82036112bc576112bb611268565b5b600182019050919050565b600081905092915050565b50565b60006112e26000836112c7565b91506112ed826112d2565b600082019050919050565b6000611303826112d5565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006113696021836110a5565b91506113748261130d565b604082019050919050565b600060208201905081810360008301526113988161135c565b9050919050565b7f4661696c656420746f2073656e6420457468657220746f2073656e6465720000600082015250565b60006113d5601e836110a5565b91506113e08261139f565b602082019050919050565b60006020820190508181036000830152611404816113c8565b905091905056fea2646970667358221220f03fdfa29644c503bd2ebd2faaa75c42d40249bad32bcd7836785bf67b9dfd5364736f6c63430008140033", + "bytecode": "0x6080806040523461001657610a61908161001c8239f35b600080fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816361bc221a146106a357508063b42bc5a9146104bf578063bcc45b7914610372578063c352645014610179578063d0e30db014610167578063d8bb6c0e146100f85763e12e9b271461007157600080fd5b346100f45760206100a86100843661079f565b8b5163632535b960e01b81529c8d9a8b9a9099929893979496949392918b016108e7565b0381866108025af19081156100eb57506100c0575080fd5b6100e09060203d81116100e4575b6100d881836106f1565b810190610888565b5080fd5b503d6100ce565b513d84823e3d90fd5b8280fd5b50346100f457602061010c6100843661079f565b0381866108025af191821561015d5760209392610135575b506001600160401b03905191168152f35b6001600160401b0391925061015690843d81116100e4576100d881836106f1565b9190610124565b81513d85823e3d90fd5b83806003193601126101765780f35b80fd5b50346100f4576101803660031901126100f4576001600160401b0390823582811161036e576101ab903690850161072d565b936024358381116100e0576101c3903690860161072d565b6044358481116100f4576101da903690870161072d565b956101e3610779565b60a43586811161036e576101fa903690890161072d565b8560c31936011261036e578551610210816106c0565b60c435888116810361036a57815260e435888116810361036a5760208201526101043591888316830361036a5761012435898111610366576102559036908c0161072d565b93610144359a8b15158c0361036257916020979695939161029b959361027961078f565b9d61032b575b8b5163632535b960e01b81529e8f998a99606435938b016108e7565b0381846108025af193841561031f576020958295610300575b506102c2575b505191168152f35b806102fa91546102d48160070b610981565b8516906001600160401b031916178155808080600f335af16102f46109af565b506109df565b386102ba565b610318919550863d81116100e4576100d881836106f1565b93386102b4565b509051903d90823e3d90fd5b8a548d61033a8260070b610981565b16906001600160401b031916178b5561035d8b808080600f335af16102f46109af565b61027f565b8880fd5b8780fd5b8680fd5b8480fd5b50346100f4576101203660031901126100f4576001600160401b0390823582811161036e576103a4903690850161072d565b6024358381116104bb576103bb903690860161072d565b60443584811161036a576103d2903690870161072d565b90608435858111610366576103ea903690880161072d565b928460a31936011261036657845190610402826106c0565b60a43587811681036104b757825260c43587811681036104b757602083015260e43587811681036104b75761010435928884116104b35760209661044c61046b9536908d0161072d565b9389519b8c98899863632535b960e01b8a523093606435938b016108e7565b0381876108025af19283156104a9576020949361048a57505191168152f35b6104a2919350843d81116100e4576100d881836106f1565b91386102ba565b81513d86823e3d90fd5b8a80fd5b8980fd5b8580fd5b50346100f4576101803660031901126100f457826001600160401b0383358181116100f4576104f1903690860161072d565b9060243581811161069f57610509903690870161072d565b60443582811161036e57610520903690880161072d565b610528610779565b9160a43584811161036a576105409036908a0161072d565b60c435959091906001600160a01b0387168703610366578860e3193601126103665788519461056e866106c0565b60e43587811681036104b75786526101043587811681036104b75760208701526101243587811681036104b75761014435908882116104b3578b976020966105e4948f946105bf903690870161072d565b946105c861078f565b9b5163e12e9b2760e01b81529a8b998a99606435938b016108e7565b038188305af1610681575b506105f8578280f35b82600f8193829383549061060e8260070b610981565b16906001600160401b0319161783555af16106276109af565b5015610634578281808280f35b906020608492519162461bcd60e51b8352820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152fd5b6106989060203d81116100e4576100d881836106f1565b50386105ef565b8380fd5b8490346100e057816003193601126100e0576020915460070b8152f35b604081019081106001600160401b038211176106db57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b038211176106db57604052565b6001600160401b0381116106db57601f01601f191660200190565b81601f820112156107745780359061074482610712565b9261075260405194856106f1565b8284526020838301011161077457816000926020809301838601378301015290565b600080fd5b608435906001600160a01b038216820361077457565b6101643590811515820361077457565b610140600319820112610774576004906001600160401b03823581811161077457826107cc91850161072d565b9360243582811161077457836107e391860161072d565b9360443583811161077457846107fa91830161072d565b93606435936084356001600160a01b0381168103610774579360a435828111610774578361082991860161072d565b93604060c31985011261077457604051610842816106c0565b60c435848116810361077457815260e43584811681036107745760208201529361010435848116810361077457936101243590811161077457610885920161072d565b90565b9081602091031261077457516001600160401b03811681036107745790565b919082519283825260005b8481106108d3575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016108b2565b95909461092c61094f9461091e6108859c9a9b979561091160209a8c6101408091528d01906108a7565b908b82038b8d01526108a7565b9089820360408b01526108a7565b60608801939093526001600160a01b0316608087015285820360a08701526108a7565b946001600160401b039281848093511660c087015201511660e0840152166101008201526101208184039101526108a7565b60070b677fffffffffffffff81146109995760010190565b634e487b7160e01b600052601160045260246000fd5b3d156109da573d906109c082610712565b916109ce60405193846106f1565b82523d6000602084013e565b606090565b156109e657565b60405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420457468657220746f2073656e64657200006044820152606490fdfea26469706673582212208791b3d3dbefb3ff5d8becbb8ea142afe50bff91ecc385918766b552c4a8067464736f6c63430008140033", + "deployedBytecode": "0x608060408181526004908136101561001657600080fd5b600092833560e01c90816361bc221a146106a357508063b42bc5a9146104bf578063bcc45b7914610372578063c352645014610179578063d0e30db014610167578063d8bb6c0e146100f85763e12e9b271461007157600080fd5b346100f45760206100a86100843661079f565b8b5163632535b960e01b81529c8d9a8b9a9099929893979496949392918b016108e7565b0381866108025af19081156100eb57506100c0575080fd5b6100e09060203d81116100e4575b6100d881836106f1565b810190610888565b5080fd5b503d6100ce565b513d84823e3d90fd5b8280fd5b50346100f457602061010c6100843661079f565b0381866108025af191821561015d5760209392610135575b506001600160401b03905191168152f35b6001600160401b0391925061015690843d81116100e4576100d881836106f1565b9190610124565b81513d85823e3d90fd5b83806003193601126101765780f35b80fd5b50346100f4576101803660031901126100f4576001600160401b0390823582811161036e576101ab903690850161072d565b936024358381116100e0576101c3903690860161072d565b6044358481116100f4576101da903690870161072d565b956101e3610779565b60a43586811161036e576101fa903690890161072d565b8560c31936011261036e578551610210816106c0565b60c435888116810361036a57815260e435888116810361036a5760208201526101043591888316830361036a5761012435898111610366576102559036908c0161072d565b93610144359a8b15158c0361036257916020979695939161029b959361027961078f565b9d61032b575b8b5163632535b960e01b81529e8f998a99606435938b016108e7565b0381846108025af193841561031f576020958295610300575b506102c2575b505191168152f35b806102fa91546102d48160070b610981565b8516906001600160401b031916178155808080600f335af16102f46109af565b506109df565b386102ba565b610318919550863d81116100e4576100d881836106f1565b93386102b4565b509051903d90823e3d90fd5b8a548d61033a8260070b610981565b16906001600160401b031916178b5561035d8b808080600f335af16102f46109af565b61027f565b8880fd5b8780fd5b8680fd5b8480fd5b50346100f4576101203660031901126100f4576001600160401b0390823582811161036e576103a4903690850161072d565b6024358381116104bb576103bb903690860161072d565b60443584811161036a576103d2903690870161072d565b90608435858111610366576103ea903690880161072d565b928460a31936011261036657845190610402826106c0565b60a43587811681036104b757825260c43587811681036104b757602083015260e43587811681036104b75761010435928884116104b35760209661044c61046b9536908d0161072d565b9389519b8c98899863632535b960e01b8a523093606435938b016108e7565b0381876108025af19283156104a9576020949361048a57505191168152f35b6104a2919350843d81116100e4576100d881836106f1565b91386102ba565b81513d86823e3d90fd5b8a80fd5b8980fd5b8580fd5b50346100f4576101803660031901126100f457826001600160401b0383358181116100f4576104f1903690860161072d565b9060243581811161069f57610509903690870161072d565b60443582811161036e57610520903690880161072d565b610528610779565b9160a43584811161036a576105409036908a0161072d565b60c435959091906001600160a01b0387168703610366578860e3193601126103665788519461056e866106c0565b60e43587811681036104b75786526101043587811681036104b75760208701526101243587811681036104b75761014435908882116104b3578b976020966105e4948f946105bf903690870161072d565b946105c861078f565b9b5163e12e9b2760e01b81529a8b998a99606435938b016108e7565b038188305af1610681575b506105f8578280f35b82600f8193829383549061060e8260070b610981565b16906001600160401b0319161783555af16106276109af565b5015610634578281808280f35b906020608492519162461bcd60e51b8352820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152fd5b6106989060203d81116100e4576100d881836106f1565b50386105ef565b8380fd5b8490346100e057816003193601126100e0576020915460070b8152f35b604081019081106001600160401b038211176106db57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b038211176106db57604052565b6001600160401b0381116106db57601f01601f191660200190565b81601f820112156107745780359061074482610712565b9261075260405194856106f1565b8284526020838301011161077457816000926020809301838601378301015290565b600080fd5b608435906001600160a01b038216820361077457565b6101643590811515820361077457565b610140600319820112610774576004906001600160401b03823581811161077457826107cc91850161072d565b9360243582811161077457836107e391860161072d565b9360443583811161077457846107fa91830161072d565b93606435936084356001600160a01b0381168103610774579360a435828111610774578361082991860161072d565b93604060c31985011261077457604051610842816106c0565b60c435848116810361077457815260e43584811681036107745760208201529361010435848116810361077457936101243590811161077457610885920161072d565b90565b9081602091031261077457516001600160401b03811681036107745790565b919082519283825260005b8481106108d3575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016108b2565b95909461092c61094f9461091e6108859c9a9b979561091160209a8c6101408091528d01906108a7565b908b82038b8d01526108a7565b9089820360408b01526108a7565b60608801939093526001600160a01b0316608087015285820360a08701526108a7565b946001600160401b039281848093511660c087015201511660e0840152166101008201526101208184039101526108a7565b60070b677fffffffffffffff81146109995760010190565b634e487b7160e01b600052601160045260246000fd5b3d156109da573d906109c082610712565b916109ce60405193846106f1565b82523d6000602084013e565b606090565b156109e657565b60405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420457468657220746f2073656e64657200006044820152606490fdfea26469706673582212208791b3d3dbefb3ff5d8becbb8ea142afe50bff91ecc385918766b552c4a8067464736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/InterchainSender.json b/precompiles/testutil/contracts/InterchainSender.json index ac87bc352..ece2e4700 100644 --- a/precompiles/testutil/contracts/InterchainSender.json +++ b/precompiles/testutil/contracts/InterchainSender.json @@ -404,8 +404,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612474806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637492bdd81161005b5780637492bdd814610128578063accc7b9014610158578063b967287914610188578063c595699a146101a457610088565b80631dba685b1461008d57806344c28670146100a957806361bc221a146100da5780636fdf23cc146100f8575b600080fd5b6100a760048036038101906100a29190610e75565b6101d4565b005b6100c360048036038101906100be9190610fd3565b610649565b6040516100d192919061135c565b60405180910390f35b6100e26106dd565b6040516100ef91906113af565b60405180910390f35b610112600480360381019061010d9190611450565b6106ee565b60405161011f91906115a2565b60405180910390f35b610142600480360381019061013d9190611450565b61078c565b60405161014f91906115a2565b60405180910390f35b610172600480360381019061016d91906115bd565b61082a565b60405161017f919061164a565b60405180910390f35b6101a2600480360381019061019d91906116aa565b6108ba565b005b6101be60048036038101906101b991906115bd565b610b87565b6040516101cb919061182e565b60405180910390f35b82156102d65760008081819054906101000a900460070b809291906101f89061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008973ffffffffffffffffffffffffffffffffffffffff16650da475abf00060405161024e906118e0565b60006040518083038185875af1925050503d806000811461028b576040519150601f19603f3d011682016040523d82523d6000602084013e610290565b606091505b50509050806102d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cb90611967565b60405180910390fd5b505b60006040518060400160405280606467ffffffffffffffff168152602001606467ffffffffffffffff16815250905061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a60028b61033391906119b6565b8f8b8860006040518963ffffffff1660e01b815260040161035b989796959493929190611ae2565b6020604051808303816000875af115801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e9190611ba6565b5082156104a15760008081819054906101000a900460070b809291906103c39061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008a73ffffffffffffffffffffffffffffffffffffffff16650da475abf000604051610419906118e0565b60006040518083038185875af1925050503d8060008114610456576040519150601f19603f3d011682016040523d82523d6000602084013e61045b565b606091505b505090508061049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049690611967565b60405180910390fd5b505b61080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a60028b6104cf91906119b6565b8f8b8860006040518963ffffffff1660e01b81526004016104f7989796959493929190611ae2565b6020604051808303816000875af1158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a9190611ba6565b50811561063d5760008081819054906101000a900460070b8092919061055f9061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008a73ffffffffffffffffffffffffffffffffffffffff16650da475abf0006040516105b5906118e0565b60006040518083038185875af1925050503d80600081146105f2576040519150601f19603f3d011682016040523d82523d6000602084013e6105f7565b606091505b505090508061063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290611967565b60405180910390fd5b505b50505050505050505050565b6060610653610c11565b61080273ffffffffffffffffffffffffffffffffffffffff1663c0fab104846040518263ffffffff1660e01b815260040161068e9190611d4f565b600060405180830381865afa1580156106ab573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106d491906121c5565b91509150915091565b60008054906101000a900460070b81565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a8a308b8b8b8b6040518a63ffffffff1660e01b815260040161073b9998979695949392919061224c565b6020604051808303816000875af115801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077e9190611ba6565b905098975050505050505050565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a8a338b8b8b8b6040518a63ffffffff1660e01b81526004016107d99998979695949392919061224c565b6020604051808303816000875af11580156107f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081c9190611ba6565b905098975050505050505050565b610832610c35565b61080273ffffffffffffffffffffffffffffffffffffffff16635f1f98a2836040518263ffffffff1660e01b815260040161086d919061182e565b600060405180830381865afa15801561088a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108b391906122fd565b9050919050565b81156109bc5760008081819054906101000a900460070b809291906108de9061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008973ffffffffffffffffffffffffffffffffffffffff16650da475abf000604051610934906118e0565b60006040518083038185875af1925050503d8060008114610971576040519150601f19603f3d011682016040523d82523d6000602084013e610976565b606091505b50509050806109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b190611967565b60405180910390fd5b505b60006040518060400160405280606467ffffffffffffffff168152602001606467ffffffffffffffff16815250905061080273ffffffffffffffffffffffffffffffffffffffff1663632535b9898989898e8a8860006040518963ffffffff1660e01b8152600401610a35989796959493929190612346565b6020604051808303816000875af1158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a789190611ba6565b508115610b7b5760008081819054906101000a900460070b80929190610a9d9061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008a73ffffffffffffffffffffffffffffffffffffffff16650da475abf000604051610af3906118e0565b60006040518083038185875af1925050503d8060008114610b30576040519150601f19603f3d011682016040523d82523d6000602084013e610b35565b606091505b5050905080610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090611967565b60405180910390fd5b505b50505050505050505050565b606061080273ffffffffffffffffffffffffffffffffffffffff1663b5cb6e7d836040518263ffffffff1660e01b8152600401610bc4919061182e565b600060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c0a91906123f5565b9050919050565b604051806040016040528060608152602001600067ffffffffffffffff1681525090565b604051806040016040528060608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c8e82610c63565b9050919050565b610c9e81610c83565b8114610ca957600080fd5b50565b600081359050610cbb81610c95565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610d1482610ccb565b810181811067ffffffffffffffff82111715610d3357610d32610cdc565b5b80604052505050565b6000610d46610c4f565b9050610d528282610d0b565b919050565b600067ffffffffffffffff821115610d7257610d71610cdc565b5b610d7b82610ccb565b9050602081019050919050565b82818337600083830152505050565b6000610daa610da584610d57565b610d3c565b905082815260208101848484011115610dc657610dc5610cc6565b5b610dd1848285610d88565b509392505050565b600082601f830112610dee57610ded610cc1565b5b8135610dfe848260208601610d97565b91505092915050565b6000819050919050565b610e1a81610e07565b8114610e2557600080fd5b50565b600081359050610e3781610e11565b92915050565b60008115159050919050565b610e5281610e3d565b8114610e5d57600080fd5b50565b600081359050610e6f81610e49565b92915050565b60008060008060008060008060006101208a8c031215610e9857610e97610c59565b5b6000610ea68c828d01610cac565b99505060208a013567ffffffffffffffff811115610ec757610ec6610c5e565b5b610ed38c828d01610dd9565b98505060408a013567ffffffffffffffff811115610ef457610ef3610c5e565b5b610f008c828d01610dd9565b97505060608a013567ffffffffffffffff811115610f2157610f20610c5e565b5b610f2d8c828d01610dd9565b9650506080610f3e8c828d01610e28565b95505060a08a013567ffffffffffffffff811115610f5f57610f5e610c5e565b5b610f6b8c828d01610dd9565b94505060c0610f7c8c828d01610e60565b93505060e0610f8d8c828d01610e60565b925050610100610f9f8c828d01610e60565b9150509295985092959850929598565b600080fd5b600060a08284031215610fca57610fc9610faf565b5b81905092915050565b600060208284031215610fe957610fe8610c59565b5b600082013567ffffffffffffffff81111561100757611006610c5e565b5b61101384828501610fb4565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611082578082015181840152602081019050611067565b60008484015250505050565b600061109982611048565b6110a38185611053565b93506110b3818560208601611064565b6110bc81610ccb565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006040830160008301518482036000860152611110828261108e565b9150506020830151848203602086015261112a828261108e565b9150508091505092915050565b600061114383836110f3565b905092915050565b6000602082019050919050565b6000611163826110c7565b61116d81856110d2565b93508360208202850161117f856110e3565b8060005b858110156111bb578484038952815161119c8582611137565b94506111a78361114b565b925060208a01995050600181019050611183565b50829750879550505050505092915050565b600060408301600083015184820360008601526111ea828261108e565b915050602083015184820360208601526112048282611158565b9150508091505092915050565b600061121d83836111cd565b905092915050565b6000602082019050919050565b600061123d8261101c565b6112478185611027565b93508360208202850161125985611038565b8060005b8581101561129557848403895281516112768582611211565b945061128183611225565b925060208a0199505060018101905061125d565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b60006112ce826112a7565b6112d881856112b2565b93506112e8818560208601611064565b6112f181610ccb565b840191505092915050565b600067ffffffffffffffff82169050919050565b611319816112fc565b82525050565b6000604083016000830151848203600086015261133c82826112c3565b91505060208301516113516020860182611310565b508091505092915050565b600060408201905081810360008301526113768185611232565b9050818103602083015261138a818461131f565b90509392505050565b60008160070b9050919050565b6113a981611393565b82525050565b60006020820190506113c460008301846113a0565b92915050565b600080fd5b600080fd5b6113dd816112fc565b81146113e857600080fd5b50565b6000813590506113fa816113d4565b92915050565b600060408284031215611416576114156113ca565b5b6114206040610d3c565b90506000611430848285016113eb565b6000830152506020611444848285016113eb565b60208301525092915050565b600080600080600080600080610120898b03121561147157611470610c59565b5b600089013567ffffffffffffffff81111561148f5761148e610c5e565b5b61149b8b828c01610dd9565b985050602089013567ffffffffffffffff8111156114bc576114bb610c5e565b5b6114c88b828c01610dd9565b975050604089013567ffffffffffffffff8111156114e9576114e8610c5e565b5b6114f58b828c01610dd9565b96505060606115068b828c01610e28565b955050608089013567ffffffffffffffff81111561152757611526610c5e565b5b6115338b828c01610dd9565b94505060a06115448b828c01611400565b93505060e06115558b828c016113eb565b92505061010089013567ffffffffffffffff81111561157757611576610c5e565b5b6115838b828c01610dd9565b9150509295985092959890939650565b61159c816112fc565b82525050565b60006020820190506115b76000830184611593565b92915050565b6000602082840312156115d3576115d2610c59565b5b600082013567ffffffffffffffff8111156115f1576115f0610c5e565b5b6115fd84828501610dd9565b91505092915050565b60006040830160008301518482036000860152611623828261108e565b9150506020830151848203602086015261163d8282611158565b9150508091505092915050565b600060208201905081810360008301526116648184611606565b905092915050565b600061167782610c63565b9050919050565b6116878161166c565b811461169257600080fd5b50565b6000813590506116a48161167e565b92915050565b60008060008060008060008060006101208a8c0312156116cd576116cc610c59565b5b60006116db8c828d01610cac565b99505060206116ec8c828d01611695565b98505060408a013567ffffffffffffffff81111561170d5761170c610c5e565b5b6117198c828d01610dd9565b97505060608a013567ffffffffffffffff81111561173a57611739610c5e565b5b6117468c828d01610dd9565b96505060808a013567ffffffffffffffff81111561176757611766610c5e565b5b6117738c828d01610dd9565b95505060a06117848c828d01610e28565b94505060c08a013567ffffffffffffffff8111156117a5576117a4610c5e565b5b6117b18c828d01610dd9565b93505060e06117c28c828d01610e60565b9250506101006117d48c828d01610e60565b9150509295985092959850929598565b600082825260208201905092915050565b600061180082611048565b61180a81856117e4565b935061181a818560208601611064565b61182381610ccb565b840191505092915050565b6000602082019050818103600083015261184881846117f5565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061188a82611393565b9150677fffffffffffffff82036118a4576118a3611850565b5b600182019050919050565b600081905092915050565b50565b60006118ca6000836118af565b91506118d5826118ba565b600082019050919050565b60006118eb826118bd565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006119516021836117e4565b915061195c826118f5565b604082019050919050565b6000602082019050818103600083015261198081611944565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006119c182610e07565b91506119cc83610e07565b9250826119dc576119db611987565b5b828204905092915050565b6119f081610e07565b82525050565b6000819050919050565b6000611a1b611a16611a1184610c63565b6119f6565b610c63565b9050919050565b6000611a2d82611a00565b9050919050565b6000611a3f82611a22565b9050919050565b611a4f81611a34565b82525050565b604082016000820151611a6b6000850182611310565b506020820151611a7e6020850182611310565b50505050565b6000819050919050565b6000611aa9611aa4611a9f84611a84565b6119f6565b6112fc565b9050919050565b611ab981611a8e565b82525050565b6000611acc6000836117e4565b9150611ad7826118ba565b600082019050919050565b6000610140820190508181036000830152611afd818b6117f5565b90508181036020830152611b11818a6117f5565b90508181036040830152611b2581896117f5565b9050611b3460608301886119e7565b611b416080830187611a46565b81810360a0830152611b5381866117f5565b9050611b6260c0830185611a55565b611b70610100830184611ab0565b818103610120830152611b8281611abf565b90509998505050505050505050565b600081519050611ba0816113d4565b92915050565b600060208284031215611bbc57611bbb610c59565b5b6000611bca84828501611b91565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112611bff57611bfe611bdd565b5b83810192508235915060208301925067ffffffffffffffff821115611c2757611c26611bd3565b5b600182023603831315611c3d57611c3c611bd8565b5b509250929050565b6000611c5183856112b2565b9350611c5e838584610d88565b611c6783610ccb565b840190509392505050565b6000611c8160208401846113eb565b905092915050565b6000611c986020840184610e60565b905092915050565b611ca981610e3d565b82525050565b600060a08301611cc26000840184611be2565b8583036000870152611cd5838284611c45565b92505050611ce66020840184611c72565b611cf36020860182611310565b50611d016040840184611c72565b611d0e6040860182611310565b50611d1c6060840184611c89565b611d296060860182611ca0565b50611d376080840184611c89565b611d446080860182611ca0565b508091505092915050565b60006020820190508181036000830152611d698184611caf565b905092915050565b600067ffffffffffffffff821115611d8c57611d8b610cdc565b5b602082029050602081019050919050565b600080fd5b6000611db5611db084610d57565b610d3c565b905082815260208101848484011115611dd157611dd0610cc6565b5b611ddc848285611064565b509392505050565b600082601f830112611df957611df8610cc1565b5b8151611e09848260208601611da2565b91505092915050565b600067ffffffffffffffff821115611e2d57611e2c610cdc565b5b602082029050602081019050919050565b600060408284031215611e5457611e536113ca565b5b611e5e6040610d3c565b9050600082015167ffffffffffffffff811115611e7e57611e7d6113cf565b5b611e8a84828501611de4565b600083015250602082015167ffffffffffffffff811115611eae57611ead6113cf565b5b611eba84828501611de4565b60208301525092915050565b6000611ed9611ed484611e12565b610d3c565b90508083825260208201905060208402830185811115611efc57611efb611d9d565b5b835b81811015611f4357805167ffffffffffffffff811115611f2157611f20610cc1565b5b808601611f2e8982611e3e565b85526020850194505050602081019050611efe565b5050509392505050565b600082601f830112611f6257611f61610cc1565b5b8151611f72848260208601611ec6565b91505092915050565b600060408284031215611f9157611f906113ca565b5b611f9b6040610d3c565b9050600082015167ffffffffffffffff811115611fbb57611fba6113cf565b5b611fc784828501611de4565b600083015250602082015167ffffffffffffffff811115611feb57611fea6113cf565b5b611ff784828501611f4d565b60208301525092915050565b600061201661201184611d71565b610d3c565b9050808382526020820190506020840283018581111561203957612038611d9d565b5b835b8181101561208057805167ffffffffffffffff81111561205e5761205d610cc1565b5b80860161206b8982611f7b565b8552602085019450505060208101905061203b565b5050509392505050565b600082601f83011261209f5761209e610cc1565b5b81516120af848260208601612003565b91505092915050565b600067ffffffffffffffff8211156120d3576120d2610cdc565b5b6120dc82610ccb565b9050602081019050919050565b60006120fc6120f7846120b8565b610d3c565b90508281526020810184848401111561211857612117610cc6565b5b612123848285611064565b509392505050565b600082601f8301126121405761213f610cc1565b5b81516121508482602086016120e9565b91505092915050565b60006040828403121561216f5761216e6113ca565b5b6121796040610d3c565b9050600082015167ffffffffffffffff811115612199576121986113cf565b5b6121a58482850161212b565b60008301525060206121b984828501611b91565b60208301525092915050565b600080604083850312156121dc576121db610c59565b5b600083015167ffffffffffffffff8111156121fa576121f9610c5e565b5b6122068582860161208a565b925050602083015167ffffffffffffffff81111561222757612226610c5e565b5b61223385828601612159565b9150509250929050565b6122468161166c565b82525050565b6000610140820190508181036000830152612267818c6117f5565b9050818103602083015261227b818b6117f5565b9050818103604083015261228f818a6117f5565b905061229e60608301896119e7565b6122ab608083018861223d565b81810360a08301526122bd81876117f5565b90506122cc60c0830186611a55565b6122da610100830185611593565b8181036101208301526122ed81846117f5565b90509a9950505050505050505050565b60006020828403121561231357612312610c59565b5b600082015167ffffffffffffffff81111561233157612330610c5e565b5b61233d84828501611f7b565b91505092915050565b6000610140820190508181036000830152612361818b6117f5565b90508181036020830152612375818a6117f5565b9050818103604083015261238981896117f5565b905061239860608301886119e7565b6123a5608083018761223d565b81810360a08301526123b781866117f5565b90506123c660c0830185611a55565b6123d4610100830184611ab0565b8181036101208301526123e681611abf565b90509998505050505050505050565b60006020828403121561240b5761240a610c59565b5b600082015167ffffffffffffffff81111561242957612428610c5e565b5b61243584828501611de4565b9150509291505056fea26469706673582212205174745eb919146b654610bcda5d2fc5fddced602c238df77e7b9e694712087764736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637492bdd81161005b5780637492bdd814610128578063accc7b9014610158578063b967287914610188578063c595699a146101a457610088565b80631dba685b1461008d57806344c28670146100a957806361bc221a146100da5780636fdf23cc146100f8575b600080fd5b6100a760048036038101906100a29190610e75565b6101d4565b005b6100c360048036038101906100be9190610fd3565b610649565b6040516100d192919061135c565b60405180910390f35b6100e26106dd565b6040516100ef91906113af565b60405180910390f35b610112600480360381019061010d9190611450565b6106ee565b60405161011f91906115a2565b60405180910390f35b610142600480360381019061013d9190611450565b61078c565b60405161014f91906115a2565b60405180910390f35b610172600480360381019061016d91906115bd565b61082a565b60405161017f919061164a565b60405180910390f35b6101a2600480360381019061019d91906116aa565b6108ba565b005b6101be60048036038101906101b991906115bd565b610b87565b6040516101cb919061182e565b60405180910390f35b82156102d65760008081819054906101000a900460070b809291906101f89061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008973ffffffffffffffffffffffffffffffffffffffff16650da475abf00060405161024e906118e0565b60006040518083038185875af1925050503d806000811461028b576040519150601f19603f3d011682016040523d82523d6000602084013e610290565b606091505b50509050806102d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cb90611967565b60405180910390fd5b505b60006040518060400160405280606467ffffffffffffffff168152602001606467ffffffffffffffff16815250905061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a60028b61033391906119b6565b8f8b8860006040518963ffffffff1660e01b815260040161035b989796959493929190611ae2565b6020604051808303816000875af115801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e9190611ba6565b5082156104a15760008081819054906101000a900460070b809291906103c39061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008a73ffffffffffffffffffffffffffffffffffffffff16650da475abf000604051610419906118e0565b60006040518083038185875af1925050503d8060008114610456576040519150601f19603f3d011682016040523d82523d6000602084013e61045b565b606091505b505090508061049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049690611967565b60405180910390fd5b505b61080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a60028b6104cf91906119b6565b8f8b8860006040518963ffffffff1660e01b81526004016104f7989796959493929190611ae2565b6020604051808303816000875af1158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a9190611ba6565b50811561063d5760008081819054906101000a900460070b8092919061055f9061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008a73ffffffffffffffffffffffffffffffffffffffff16650da475abf0006040516105b5906118e0565b60006040518083038185875af1925050503d80600081146105f2576040519150601f19603f3d011682016040523d82523d6000602084013e6105f7565b606091505b505090508061063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290611967565b60405180910390fd5b505b50505050505050505050565b6060610653610c11565b61080273ffffffffffffffffffffffffffffffffffffffff1663c0fab104846040518263ffffffff1660e01b815260040161068e9190611d4f565b600060405180830381865afa1580156106ab573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106d491906121c5565b91509150915091565b60008054906101000a900460070b81565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a8a308b8b8b8b6040518a63ffffffff1660e01b815260040161073b9998979695949392919061224c565b6020604051808303816000875af115801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077e9190611ba6565b905098975050505050505050565b600061080273ffffffffffffffffffffffffffffffffffffffff1663632535b98a8a8a8a338b8b8b8b6040518a63ffffffff1660e01b81526004016107d99998979695949392919061224c565b6020604051808303816000875af11580156107f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081c9190611ba6565b905098975050505050505050565b610832610c35565b61080273ffffffffffffffffffffffffffffffffffffffff16635f1f98a2836040518263ffffffff1660e01b815260040161086d919061182e565b600060405180830381865afa15801561088a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108b391906122fd565b9050919050565b81156109bc5760008081819054906101000a900460070b809291906108de9061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008973ffffffffffffffffffffffffffffffffffffffff16650da475abf000604051610934906118e0565b60006040518083038185875af1925050503d8060008114610971576040519150601f19603f3d011682016040523d82523d6000602084013e610976565b606091505b50509050806109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b190611967565b60405180910390fd5b505b60006040518060400160405280606467ffffffffffffffff168152602001606467ffffffffffffffff16815250905061080273ffffffffffffffffffffffffffffffffffffffff1663632535b9898989898e8a8860006040518963ffffffff1660e01b8152600401610a35989796959493929190612346565b6020604051808303816000875af1158015610a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a789190611ba6565b508115610b7b5760008081819054906101000a900460070b80929190610a9d9061187f565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff1602179055505060008a73ffffffffffffffffffffffffffffffffffffffff16650da475abf000604051610af3906118e0565b60006040518083038185875af1925050503d8060008114610b30576040519150601f19603f3d011682016040523d82523d6000602084013e610b35565b606091505b5050905080610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090611967565b60405180910390fd5b505b50505050505050505050565b606061080273ffffffffffffffffffffffffffffffffffffffff1663b5cb6e7d836040518263ffffffff1660e01b8152600401610bc4919061182e565b600060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c0a91906123f5565b9050919050565b604051806040016040528060608152602001600067ffffffffffffffff1681525090565b604051806040016040528060608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c8e82610c63565b9050919050565b610c9e81610c83565b8114610ca957600080fd5b50565b600081359050610cbb81610c95565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610d1482610ccb565b810181811067ffffffffffffffff82111715610d3357610d32610cdc565b5b80604052505050565b6000610d46610c4f565b9050610d528282610d0b565b919050565b600067ffffffffffffffff821115610d7257610d71610cdc565b5b610d7b82610ccb565b9050602081019050919050565b82818337600083830152505050565b6000610daa610da584610d57565b610d3c565b905082815260208101848484011115610dc657610dc5610cc6565b5b610dd1848285610d88565b509392505050565b600082601f830112610dee57610ded610cc1565b5b8135610dfe848260208601610d97565b91505092915050565b6000819050919050565b610e1a81610e07565b8114610e2557600080fd5b50565b600081359050610e3781610e11565b92915050565b60008115159050919050565b610e5281610e3d565b8114610e5d57600080fd5b50565b600081359050610e6f81610e49565b92915050565b60008060008060008060008060006101208a8c031215610e9857610e97610c59565b5b6000610ea68c828d01610cac565b99505060208a013567ffffffffffffffff811115610ec757610ec6610c5e565b5b610ed38c828d01610dd9565b98505060408a013567ffffffffffffffff811115610ef457610ef3610c5e565b5b610f008c828d01610dd9565b97505060608a013567ffffffffffffffff811115610f2157610f20610c5e565b5b610f2d8c828d01610dd9565b9650506080610f3e8c828d01610e28565b95505060a08a013567ffffffffffffffff811115610f5f57610f5e610c5e565b5b610f6b8c828d01610dd9565b94505060c0610f7c8c828d01610e60565b93505060e0610f8d8c828d01610e60565b925050610100610f9f8c828d01610e60565b9150509295985092959850929598565b600080fd5b600060a08284031215610fca57610fc9610faf565b5b81905092915050565b600060208284031215610fe957610fe8610c59565b5b600082013567ffffffffffffffff81111561100757611006610c5e565b5b61101384828501610fb4565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611082578082015181840152602081019050611067565b60008484015250505050565b600061109982611048565b6110a38185611053565b93506110b3818560208601611064565b6110bc81610ccb565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006040830160008301518482036000860152611110828261108e565b9150506020830151848203602086015261112a828261108e565b9150508091505092915050565b600061114383836110f3565b905092915050565b6000602082019050919050565b6000611163826110c7565b61116d81856110d2565b93508360208202850161117f856110e3565b8060005b858110156111bb578484038952815161119c8582611137565b94506111a78361114b565b925060208a01995050600181019050611183565b50829750879550505050505092915050565b600060408301600083015184820360008601526111ea828261108e565b915050602083015184820360208601526112048282611158565b9150508091505092915050565b600061121d83836111cd565b905092915050565b6000602082019050919050565b600061123d8261101c565b6112478185611027565b93508360208202850161125985611038565b8060005b8581101561129557848403895281516112768582611211565b945061128183611225565b925060208a0199505060018101905061125d565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b60006112ce826112a7565b6112d881856112b2565b93506112e8818560208601611064565b6112f181610ccb565b840191505092915050565b600067ffffffffffffffff82169050919050565b611319816112fc565b82525050565b6000604083016000830151848203600086015261133c82826112c3565b91505060208301516113516020860182611310565b508091505092915050565b600060408201905081810360008301526113768185611232565b9050818103602083015261138a818461131f565b90509392505050565b60008160070b9050919050565b6113a981611393565b82525050565b60006020820190506113c460008301846113a0565b92915050565b600080fd5b600080fd5b6113dd816112fc565b81146113e857600080fd5b50565b6000813590506113fa816113d4565b92915050565b600060408284031215611416576114156113ca565b5b6114206040610d3c565b90506000611430848285016113eb565b6000830152506020611444848285016113eb565b60208301525092915050565b600080600080600080600080610120898b03121561147157611470610c59565b5b600089013567ffffffffffffffff81111561148f5761148e610c5e565b5b61149b8b828c01610dd9565b985050602089013567ffffffffffffffff8111156114bc576114bb610c5e565b5b6114c88b828c01610dd9565b975050604089013567ffffffffffffffff8111156114e9576114e8610c5e565b5b6114f58b828c01610dd9565b96505060606115068b828c01610e28565b955050608089013567ffffffffffffffff81111561152757611526610c5e565b5b6115338b828c01610dd9565b94505060a06115448b828c01611400565b93505060e06115558b828c016113eb565b92505061010089013567ffffffffffffffff81111561157757611576610c5e565b5b6115838b828c01610dd9565b9150509295985092959890939650565b61159c816112fc565b82525050565b60006020820190506115b76000830184611593565b92915050565b6000602082840312156115d3576115d2610c59565b5b600082013567ffffffffffffffff8111156115f1576115f0610c5e565b5b6115fd84828501610dd9565b91505092915050565b60006040830160008301518482036000860152611623828261108e565b9150506020830151848203602086015261163d8282611158565b9150508091505092915050565b600060208201905081810360008301526116648184611606565b905092915050565b600061167782610c63565b9050919050565b6116878161166c565b811461169257600080fd5b50565b6000813590506116a48161167e565b92915050565b60008060008060008060008060006101208a8c0312156116cd576116cc610c59565b5b60006116db8c828d01610cac565b99505060206116ec8c828d01611695565b98505060408a013567ffffffffffffffff81111561170d5761170c610c5e565b5b6117198c828d01610dd9565b97505060608a013567ffffffffffffffff81111561173a57611739610c5e565b5b6117468c828d01610dd9565b96505060808a013567ffffffffffffffff81111561176757611766610c5e565b5b6117738c828d01610dd9565b95505060a06117848c828d01610e28565b94505060c08a013567ffffffffffffffff8111156117a5576117a4610c5e565b5b6117b18c828d01610dd9565b93505060e06117c28c828d01610e60565b9250506101006117d48c828d01610e60565b9150509295985092959850929598565b600082825260208201905092915050565b600061180082611048565b61180a81856117e4565b935061181a818560208601611064565b61182381610ccb565b840191505092915050565b6000602082019050818103600083015261184881846117f5565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061188a82611393565b9150677fffffffffffffff82036118a4576118a3611850565b5b600182019050919050565b600081905092915050565b50565b60006118ca6000836118af565b91506118d5826118ba565b600082019050919050565b60006118eb826118bd565b9150819050919050565b7f4661696c656420746f2073656e6420457468657220746f2064656c656761746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006119516021836117e4565b915061195c826118f5565b604082019050919050565b6000602082019050818103600083015261198081611944565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006119c182610e07565b91506119cc83610e07565b9250826119dc576119db611987565b5b828204905092915050565b6119f081610e07565b82525050565b6000819050919050565b6000611a1b611a16611a1184610c63565b6119f6565b610c63565b9050919050565b6000611a2d82611a00565b9050919050565b6000611a3f82611a22565b9050919050565b611a4f81611a34565b82525050565b604082016000820151611a6b6000850182611310565b506020820151611a7e6020850182611310565b50505050565b6000819050919050565b6000611aa9611aa4611a9f84611a84565b6119f6565b6112fc565b9050919050565b611ab981611a8e565b82525050565b6000611acc6000836117e4565b9150611ad7826118ba565b600082019050919050565b6000610140820190508181036000830152611afd818b6117f5565b90508181036020830152611b11818a6117f5565b90508181036040830152611b2581896117f5565b9050611b3460608301886119e7565b611b416080830187611a46565b81810360a0830152611b5381866117f5565b9050611b6260c0830185611a55565b611b70610100830184611ab0565b818103610120830152611b8281611abf565b90509998505050505050505050565b600081519050611ba0816113d4565b92915050565b600060208284031215611bbc57611bbb610c59565b5b6000611bca84828501611b91565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112611bff57611bfe611bdd565b5b83810192508235915060208301925067ffffffffffffffff821115611c2757611c26611bd3565b5b600182023603831315611c3d57611c3c611bd8565b5b509250929050565b6000611c5183856112b2565b9350611c5e838584610d88565b611c6783610ccb565b840190509392505050565b6000611c8160208401846113eb565b905092915050565b6000611c986020840184610e60565b905092915050565b611ca981610e3d565b82525050565b600060a08301611cc26000840184611be2565b8583036000870152611cd5838284611c45565b92505050611ce66020840184611c72565b611cf36020860182611310565b50611d016040840184611c72565b611d0e6040860182611310565b50611d1c6060840184611c89565b611d296060860182611ca0565b50611d376080840184611c89565b611d446080860182611ca0565b508091505092915050565b60006020820190508181036000830152611d698184611caf565b905092915050565b600067ffffffffffffffff821115611d8c57611d8b610cdc565b5b602082029050602081019050919050565b600080fd5b6000611db5611db084610d57565b610d3c565b905082815260208101848484011115611dd157611dd0610cc6565b5b611ddc848285611064565b509392505050565b600082601f830112611df957611df8610cc1565b5b8151611e09848260208601611da2565b91505092915050565b600067ffffffffffffffff821115611e2d57611e2c610cdc565b5b602082029050602081019050919050565b600060408284031215611e5457611e536113ca565b5b611e5e6040610d3c565b9050600082015167ffffffffffffffff811115611e7e57611e7d6113cf565b5b611e8a84828501611de4565b600083015250602082015167ffffffffffffffff811115611eae57611ead6113cf565b5b611eba84828501611de4565b60208301525092915050565b6000611ed9611ed484611e12565b610d3c565b90508083825260208201905060208402830185811115611efc57611efb611d9d565b5b835b81811015611f4357805167ffffffffffffffff811115611f2157611f20610cc1565b5b808601611f2e8982611e3e565b85526020850194505050602081019050611efe565b5050509392505050565b600082601f830112611f6257611f61610cc1565b5b8151611f72848260208601611ec6565b91505092915050565b600060408284031215611f9157611f906113ca565b5b611f9b6040610d3c565b9050600082015167ffffffffffffffff811115611fbb57611fba6113cf565b5b611fc784828501611de4565b600083015250602082015167ffffffffffffffff811115611feb57611fea6113cf565b5b611ff784828501611f4d565b60208301525092915050565b600061201661201184611d71565b610d3c565b9050808382526020820190506020840283018581111561203957612038611d9d565b5b835b8181101561208057805167ffffffffffffffff81111561205e5761205d610cc1565b5b80860161206b8982611f7b565b8552602085019450505060208101905061203b565b5050509392505050565b600082601f83011261209f5761209e610cc1565b5b81516120af848260208601612003565b91505092915050565b600067ffffffffffffffff8211156120d3576120d2610cdc565b5b6120dc82610ccb565b9050602081019050919050565b60006120fc6120f7846120b8565b610d3c565b90508281526020810184848401111561211857612117610cc6565b5b612123848285611064565b509392505050565b600082601f8301126121405761213f610cc1565b5b81516121508482602086016120e9565b91505092915050565b60006040828403121561216f5761216e6113ca565b5b6121796040610d3c565b9050600082015167ffffffffffffffff811115612199576121986113cf565b5b6121a58482850161212b565b60008301525060206121b984828501611b91565b60208301525092915050565b600080604083850312156121dc576121db610c59565b5b600083015167ffffffffffffffff8111156121fa576121f9610c5e565b5b6122068582860161208a565b925050602083015167ffffffffffffffff81111561222757612226610c5e565b5b61223385828601612159565b9150509250929050565b6122468161166c565b82525050565b6000610140820190508181036000830152612267818c6117f5565b9050818103602083015261227b818b6117f5565b9050818103604083015261228f818a6117f5565b905061229e60608301896119e7565b6122ab608083018861223d565b81810360a08301526122bd81876117f5565b90506122cc60c0830186611a55565b6122da610100830185611593565b8181036101208301526122ed81846117f5565b90509a9950505050505050505050565b60006020828403121561231357612312610c59565b5b600082015167ffffffffffffffff81111561233157612330610c5e565b5b61233d84828501611f7b565b91505092915050565b6000610140820190508181036000830152612361818b6117f5565b90508181036020830152612375818a6117f5565b9050818103604083015261238981896117f5565b905061239860608301886119e7565b6123a5608083018761223d565b81810360a08301526123b781866117f5565b90506123c660c0830185611a55565b6123d4610100830184611ab0565b8181036101208301526123e681611abf565b90509998505050505050505050565b60006020828403121561240b5761240a610c59565b5b600082015167ffffffffffffffff81111561242957612428610c5e565b5b61243584828501611de4565b9150509291505056fea26469706673582212205174745eb919146b654610bcda5d2fc5fddced602c238df77e7b9e694712087764736f6c63430008140033", + "bytecode": "0x6080806040523461001657611101908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80631dba685b146107e757806344c286701461055157806361bc221a146105305780636fdf23cc146104f95780637492bdd81461045e578063accc7b901461038a578063b9672879146101485763c595699a1461007457600080fd5b34610137576020366003190112610137576001600160401b036004358181116101375760006100aa6100cc923690600401610b0c565b6040518093819263b5cb6e7d60e01b8352602060048401526024830190610ba2565b03816108025afa90811561013c576000916100fc575b604051602080825281906100f890820185610ba2565b0390f35b90503d806000833e61010e8183610ad0565b8101602082820312610137578151928311610137576100f8926101319201610fa7565b386100e2565b600080fd5b6040513d6000823e3d90fd5b34610137576003196101203682011261013757610163610a89565b6001600160a01b03916024358381169190829003610137576001600160401b03916044358381116101375761019c903690600401610b0c565b606435848111610137576101b4903690600401610b0c565b91608435858111610137576101cd903690600401610b0c565b9160c435868111610137576101e6903690600401610b0c565b926101ef610b53565b958989896101fb610b62565b99610361575b50505060405161021081610a9f565b606481526020958695869485840160649052604051998a9763632535b960e01b8952600489016101409052610144890161024991610ba2565b868982030160248a015261025c91610ba2565b8588820301604489015261026f91610ba2565b9060a43560648801526084870152838682030160a487015261029091610ba2565b9060c485016102b491602090816001600160401b0391828151168552015116910152565b6101048401600090528381039182016101248501526000905201815a610802600091f1801561013c5761032d575b50506102ea57005b600080650da475abf00061032b958295839584549061030b8260070b610e07565b16906001600160401b031916178455165af1610325610e35565b50610e65565b005b81813d831161035a575b6103418183610ad0565b810103126101375761035290610d4c565b5084806102e2565b503d610337565b600080650da475abf000610382958295839584549061030b8260070b610e07565b898989610201565b3461013757602080600319360112610137576001600160401b03906004358281116101375760006103c26103f7923690600401610b0c565b6060846040516103d181610a9f565b828152015260405180938192632f8fcc5160e11b83528660048401526024830190610ba2565b03816108025afa92831561013c57600093610423575b50506100f8604051928284938452830190610bc7565b909192503d806000843e6104378184610ad0565b8201908383830312610137578251908111610137576104569201610fc1565b90828061040d565b3461013757610495602061047136610c77565b93989496604093919351998a98899863632535b960e01b8a52339360048b01610d60565b038160006108025af1801561013c576000906104c0575b6020906001600160401b0360405191168152f35b506020813d82116104f1575b816104d960209383610ad0565b81010312610137576104ec602091610d4c565b6104ac565b3d91506104cc565b3461013757610495602061050c36610c77565b93989496604093919351998a98899863632535b960e01b8a52309360048b01610d60565b3461013757600036600319011261013757602060005460070b604051908152f35b346101375760031960203682018113610137576001600160401b03916004358381116101375760a0813603928301126101375760008360405161059381610a9f565b6060815201526040519163303eac4160e21b8352836004840152816004013590602219018112156101375781016024600482013591019185821161013757813603831361013757838261063f608460e494849660009860a060248801528160c488015287870137878685870101528a61060e60248301610c63565b1660448601528a61062160448301610c63565b16606486015261063360648201610b72565b15158286015201610b72565b151560a4830152601f01601f191681010301816108025afa90811561013c576000906000926106ec575b50604051926040840194604085528251809652606085018260608860051b8801019401906000905b8882106106c45750505084809650830382860152816106b98551604086526040860190610ba2565b940151169101520390f35b90919484806106df600193605f198c82030186528951610bc7565b9701920192019091610691565b9150503d806000833e6106ff8183610ad0565b8101906040818303126101375780518481116101375781019082601f8301121561013757815161072e81610f59565b9261073c6040519485610ad0565b818452858085019260051b8201019185831161013757868201905b8382106107c2575050505083810151908582116101375701604081840312610137576040519261078684610a9f565b81518681116101375782019181601f84011215610137576107b0869284846107b896519101610f70565b855201610d4c565b8383015284610669565b81518981116101375788916107dc89848094880101610fc1565b815201910190610757565b346101375761012036600319011261013757610801610a89565b6024356001600160401b03811161013757610820903690600401610b0c565b6044356001600160401b0381116101375761083f903690600401610b0c565b906064356001600160401b0381116101375761085f903690600401610b0c565b60a4356001600160401b0381116101375761087e903690600401610b0c565b9060c43593841515850361013757610894610b53565b9261089d610b62565b95610a3b575b60405180946108b182610a9f565b60648252606460208301526020838a6108e8604051958693849363632535b960e01b85528d8c8c60843560011c9260048901610ebb565b038160006108025af191821561013c5789926109f3575b509160209591610930936109cf575b60405163632535b960e01b8152978896879660843560011c9260048901610ebb565b038160006108025af1801561013c57610996575b5061094b57005b6000808080650da475abf00061032b9582546109698160070b610e07565b6001600160401b031667ffffffffffffffff19919091161783556001600160a01b03165af1610325610e35565b6020813d6020116109c7575b816109af60209383610ad0565b81010312610137576109c090610d4c565b5082610944565b3d91506109a2565b6000808080650da475abf0006109ed9582546109698160070b610e07565b8861090e565b959150916020863d602011610a33575b81610a1060209383610ad0565b81010312610137578861093093610a28602098610d4c565b5091935091956108ff565b3d9150610a03565b600054610a4a8160070b610e07565b6001600160401b0316906001600160401b03191617600055610a846000808080650da475abf00060018060a01b038d165af1610325610e35565b6108a3565b600435906001600160a01b038216820361013757565b604081019081106001600160401b03821117610aba57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b03821117610aba57604052565b6001600160401b038111610aba57601f01601f191660200190565b81601f8201121561013757803590610b2382610af1565b92610b316040519485610ad0565b8284526020838301011161013757816000926020809301838601378301015290565b60e43590811515820361013757565b6101043590811515820361013757565b3590811515820361013757565b60005b838110610b925750506000910152565b8181015183820152602001610b82565b90602091610bbb81518092818552858086019101610b7f565b601f01601f1916010190565b805190610bdc60409283855283850190610ba2565b90602080910151938181840391015283519182815281810182808560051b8401019601946000925b858410610c15575050505050505090565b909192939495968580610c52600193601f198682030188528b519083610c4283518a84528a840190610ba2565b9201519084818403910152610ba2565b990194019401929594939190610c04565b35906001600160401b038216820361013757565b610120600319820112610137576004916001600160401b039083358281116101375783610ca5918601610b0c565b936024358381116101375784610cbc918301610b0c565b936044358481116101375781610cd3918401610b0c565b93606435936084358281116101375783610cee918601610b0c565b93604060a31985011261013757604051610d0781610a9f565b60a435848116810361013757815260c43584811681036101375760208201529360e435848116810361013757936101043590811161013757610d499201610b0c565b90565b51906001600160401b038216820361013757565b956001600160401b0395610dae610df295610da0610dd196610d92610d499f9d9e9a978d610140908181520190610ba2565b8c810360208e015290610ba2565b908a820360408c0152610ba2565b60608901939093526001600160a01b0316608088015286820360a0880152610ba2565b9560c0850190602090816001600160401b0391828151168552015116910152565b16610100820152610120818403910152610ba2565b60070b677fffffffffffffff8114610e1f5760010190565b634e487b7160e01b600052601160045260246000fd5b3d15610e60573d90610e4682610af1565b91610e546040519384610ad0565b82523d6000602084013e565b606090565b15610e6c57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fd5b94610efc610f1f94610eee610f409795610ee160209c9b96610140808d528c0190610ba2565b908a82038d8c0152610ba2565b9088820360408a0152610ba2565b60608701939093526001600160a01b0316608086015284820360a0860152610ba2565b9260c0830190602090816001600160401b0391828151168552015116910152565b6000610100820152610120818303910152600081520190565b6001600160401b038111610aba5760051b60200190565b90929192610f7d81610af1565b91610f8b6040519384610ad0565b829482845282820111610137576020610fa5930190610b7f565b565b9080601f83011215610137578151610d4992602001610f70565b91906040928381830312610137578351610fda81610a9f565b80948251936001600160401b03948581116101375781610ffb918601610fa7565b8352602093848101519086821161013757019181601f840112156101375782519061102582610f59565b9661103282519889610ad0565b828852868089019360051b8601019484861161013757878101935b86851061105f57505050505050500152565b84518381116101375782019084601f1983890301126101375784519061108482610a9f565b8a83015185811161013757888c61109d92860101610fa7565b82528583015191858311610137576110bc898d80969581960101610fa7565b8382015281520194019361104d56fea264697066735822122051814c264fbc9ad728c93acc6f2ffed8fd0c82f027781cd49e1e7fee771c9b4164736f6c63430008140033", + "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c80631dba685b146107e757806344c286701461055157806361bc221a146105305780636fdf23cc146104f95780637492bdd81461045e578063accc7b901461038a578063b9672879146101485763c595699a1461007457600080fd5b34610137576020366003190112610137576001600160401b036004358181116101375760006100aa6100cc923690600401610b0c565b6040518093819263b5cb6e7d60e01b8352602060048401526024830190610ba2565b03816108025afa90811561013c576000916100fc575b604051602080825281906100f890820185610ba2565b0390f35b90503d806000833e61010e8183610ad0565b8101602082820312610137578151928311610137576100f8926101319201610fa7565b386100e2565b600080fd5b6040513d6000823e3d90fd5b34610137576003196101203682011261013757610163610a89565b6001600160a01b03916024358381169190829003610137576001600160401b03916044358381116101375761019c903690600401610b0c565b606435848111610137576101b4903690600401610b0c565b91608435858111610137576101cd903690600401610b0c565b9160c435868111610137576101e6903690600401610b0c565b926101ef610b53565b958989896101fb610b62565b99610361575b50505060405161021081610a9f565b606481526020958695869485840160649052604051998a9763632535b960e01b8952600489016101409052610144890161024991610ba2565b868982030160248a015261025c91610ba2565b8588820301604489015261026f91610ba2565b9060a43560648801526084870152838682030160a487015261029091610ba2565b9060c485016102b491602090816001600160401b0391828151168552015116910152565b6101048401600090528381039182016101248501526000905201815a610802600091f1801561013c5761032d575b50506102ea57005b600080650da475abf00061032b958295839584549061030b8260070b610e07565b16906001600160401b031916178455165af1610325610e35565b50610e65565b005b81813d831161035a575b6103418183610ad0565b810103126101375761035290610d4c565b5084806102e2565b503d610337565b600080650da475abf000610382958295839584549061030b8260070b610e07565b898989610201565b3461013757602080600319360112610137576001600160401b03906004358281116101375760006103c26103f7923690600401610b0c565b6060846040516103d181610a9f565b828152015260405180938192632f8fcc5160e11b83528660048401526024830190610ba2565b03816108025afa92831561013c57600093610423575b50506100f8604051928284938452830190610bc7565b909192503d806000843e6104378184610ad0565b8201908383830312610137578251908111610137576104569201610fc1565b90828061040d565b3461013757610495602061047136610c77565b93989496604093919351998a98899863632535b960e01b8a52339360048b01610d60565b038160006108025af1801561013c576000906104c0575b6020906001600160401b0360405191168152f35b506020813d82116104f1575b816104d960209383610ad0565b81010312610137576104ec602091610d4c565b6104ac565b3d91506104cc565b3461013757610495602061050c36610c77565b93989496604093919351998a98899863632535b960e01b8a52309360048b01610d60565b3461013757600036600319011261013757602060005460070b604051908152f35b346101375760031960203682018113610137576001600160401b03916004358381116101375760a0813603928301126101375760008360405161059381610a9f565b6060815201526040519163303eac4160e21b8352836004840152816004013590602219018112156101375781016024600482013591019185821161013757813603831361013757838261063f608460e494849660009860a060248801528160c488015287870137878685870101528a61060e60248301610c63565b1660448601528a61062160448301610c63565b16606486015261063360648201610b72565b15158286015201610b72565b151560a4830152601f01601f191681010301816108025afa90811561013c576000906000926106ec575b50604051926040840194604085528251809652606085018260608860051b8801019401906000905b8882106106c45750505084809650830382860152816106b98551604086526040860190610ba2565b940151169101520390f35b90919484806106df600193605f198c82030186528951610bc7565b9701920192019091610691565b9150503d806000833e6106ff8183610ad0565b8101906040818303126101375780518481116101375781019082601f8301121561013757815161072e81610f59565b9261073c6040519485610ad0565b818452858085019260051b8201019185831161013757868201905b8382106107c2575050505083810151908582116101375701604081840312610137576040519261078684610a9f565b81518681116101375782019181601f84011215610137576107b0869284846107b896519101610f70565b855201610d4c565b8383015284610669565b81518981116101375788916107dc89848094880101610fc1565b815201910190610757565b346101375761012036600319011261013757610801610a89565b6024356001600160401b03811161013757610820903690600401610b0c565b6044356001600160401b0381116101375761083f903690600401610b0c565b906064356001600160401b0381116101375761085f903690600401610b0c565b60a4356001600160401b0381116101375761087e903690600401610b0c565b9060c43593841515850361013757610894610b53565b9261089d610b62565b95610a3b575b60405180946108b182610a9f565b60648252606460208301526020838a6108e8604051958693849363632535b960e01b85528d8c8c60843560011c9260048901610ebb565b038160006108025af191821561013c5789926109f3575b509160209591610930936109cf575b60405163632535b960e01b8152978896879660843560011c9260048901610ebb565b038160006108025af1801561013c57610996575b5061094b57005b6000808080650da475abf00061032b9582546109698160070b610e07565b6001600160401b031667ffffffffffffffff19919091161783556001600160a01b03165af1610325610e35565b6020813d6020116109c7575b816109af60209383610ad0565b81010312610137576109c090610d4c565b5082610944565b3d91506109a2565b6000808080650da475abf0006109ed9582546109698160070b610e07565b8861090e565b959150916020863d602011610a33575b81610a1060209383610ad0565b81010312610137578861093093610a28602098610d4c565b5091935091956108ff565b3d9150610a03565b600054610a4a8160070b610e07565b6001600160401b0316906001600160401b03191617600055610a846000808080650da475abf00060018060a01b038d165af1610325610e35565b6108a3565b600435906001600160a01b038216820361013757565b604081019081106001600160401b03821117610aba57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b03821117610aba57604052565b6001600160401b038111610aba57601f01601f191660200190565b81601f8201121561013757803590610b2382610af1565b92610b316040519485610ad0565b8284526020838301011161013757816000926020809301838601378301015290565b60e43590811515820361013757565b6101043590811515820361013757565b3590811515820361013757565b60005b838110610b925750506000910152565b8181015183820152602001610b82565b90602091610bbb81518092818552858086019101610b7f565b601f01601f1916010190565b805190610bdc60409283855283850190610ba2565b90602080910151938181840391015283519182815281810182808560051b8401019601946000925b858410610c15575050505050505090565b909192939495968580610c52600193601f198682030188528b519083610c4283518a84528a840190610ba2565b9201519084818403910152610ba2565b990194019401929594939190610c04565b35906001600160401b038216820361013757565b610120600319820112610137576004916001600160401b039083358281116101375783610ca5918601610b0c565b936024358381116101375784610cbc918301610b0c565b936044358481116101375781610cd3918401610b0c565b93606435936084358281116101375783610cee918601610b0c565b93604060a31985011261013757604051610d0781610a9f565b60a435848116810361013757815260c43584811681036101375760208201529360e435848116810361013757936101043590811161013757610d499201610b0c565b90565b51906001600160401b038216820361013757565b956001600160401b0395610dae610df295610da0610dd196610d92610d499f9d9e9a978d610140908181520190610ba2565b8c810360208e015290610ba2565b908a820360408c0152610ba2565b60608901939093526001600160a01b0316608088015286820360a0880152610ba2565b9560c0850190602090816001600160401b0391828151168552015116910152565b16610100820152610120818403910152610ba2565b60070b677fffffffffffffff8114610e1f5760010190565b634e487b7160e01b600052601160045260246000fd5b3d15610e60573d90610e4682610af1565b91610e546040519384610ad0565b82523d6000602084013e565b606090565b15610e6c57565b60405162461bcd60e51b815260206004820152602160248201527f4661696c656420746f2073656e6420457468657220746f2064656c656761746f6044820152603960f91b6064820152608490fd5b94610efc610f1f94610eee610f409795610ee160209c9b96610140808d528c0190610ba2565b908a82038d8c0152610ba2565b9088820360408a0152610ba2565b60608701939093526001600160a01b0316608086015284820360a0860152610ba2565b9260c0830190602090816001600160401b0391828151168552015116910152565b6000610100820152610120818303910152600081520190565b6001600160401b038111610aba5760051b60200190565b90929192610f7d81610af1565b91610f8b6040519384610ad0565b829482845282820111610137576020610fa5930190610b7f565b565b9080601f83011215610137578151610d4992602001610f70565b91906040928381830312610137578351610fda81610a9f565b80948251936001600160401b03948581116101375781610ffb918601610fa7565b8352602093848101519086821161013757019181601f840112156101375782519061102582610f59565b9661103282519889610ad0565b828852868089019360051b8601019484861161013757878101935b86851061105f57505050505050500152565b84518381116101375782019084601f1983890301126101375784519061108482610a9f565b8a83015185811161013757888c61109d92860101610fa7565b82528583015191858311610137576110bc898d80969581960101610fa7565b8382015281520194019361104d56fea264697066735822122051814c264fbc9ad728c93acc6f2ffed8fd0c82f027781cd49e1e7fee771c9b4164736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/InterchainSenderCaller.json b/precompiles/testutil/contracts/InterchainSenderCaller.json index 5a123def8..253156a71 100644 --- a/precompiles/testutil/contracts/InterchainSenderCaller.json +++ b/precompiles/testutil/contracts/InterchainSenderCaller.json @@ -180,8 +180,8 @@ "type": "function" } ], - "bytecode": "0x6080604052604051610c04380380610c04833981810160405281019061002591906100cf565b80600060086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b610af98061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063073989ff1461005c578063427c1cb61461007857806361bc221a1461009457806369a98b2b146100b2578063ec3c5a14146100ce575b600080fd5b61007660048036038101906100719190610752565b6100ea565b005b610092600480360381019061008d9190610752565b6101f1565b005b61009c61030d565b6040516100a9919061086b565b60405180910390f35b6100cc60048036038101906100c79190610752565b61031e565b005b6100e860048036038101906100e39190610752565b6104c4565b005b60008081819054906101000a900460070b80929190610108906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550503073ffffffffffffffffffffffffffffffffffffffff1663427c1cb68787878787876040518763ffffffff1660e01b815260040161017596959493929190610982565b600060405180830381600087803b15801561018f57600080fd5b505af19250505080156101a0575060015b5060008081819054906101000a900460070b809291906101bf906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555050505050505050565b600060089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dba685b87878787878760018060016040518a63ffffffff1660e01b815260040161025e99989796959493929190610a1a565b600060405180830381600087803b15801561027857600080fd5b505af115801561028c573d6000803e3d6000fd5b505050503073ffffffffffffffffffffffffffffffffffffffff1663ec3c5a148787878787876040518763ffffffff1660e01b81526004016102d396959493929190610982565b600060405180830381600087803b1580156102ed57600080fd5b505af1158015610301573d6000803e3d6000fd5b50505050505050505050565b60008054906101000a900460070b81565b60008081819054906101000a900460070b8092919061033c906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555050600060089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dba685b87878787878760018060016040518a63ffffffff1660e01b81526004016103d399989796959493929190610a1a565b600060405180830381600087803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b505050503073ffffffffffffffffffffffffffffffffffffffff1663ec3c5a148787878787876040518763ffffffff1660e01b815260040161044896959493929190610982565b600060405180830381600087803b15801561046257600080fd5b505af1925050508015610473575060015b5060008081819054906101000a900460070b80929190610492906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555050505050505050565b600060089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dba685b87878787878760018060016040518a63ffffffff1660e01b815260040161053199989796959493929190610a1a565b600060405180830381600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b600080fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a382610578565b9050919050565b6105b381610598565b81146105be57600080fd5b50565b6000813590506105d0816105aa565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610629826105e0565b810181811067ffffffffffffffff82111715610648576106476105f1565b5b80604052505050565b600061065b610564565b90506106678282610620565b919050565b600067ffffffffffffffff821115610687576106866105f1565b5b610690826105e0565b9050602081019050919050565b82818337600083830152505050565b60006106bf6106ba8461066c565b610651565b9050828152602081018484840111156106db576106da6105db565b5b6106e684828561069d565b509392505050565b600082601f830112610703576107026105d6565b5b81356107138482602086016106ac565b91505092915050565b6000819050919050565b61072f8161071c565b811461073a57600080fd5b50565b60008135905061074c81610726565b92915050565b60008060008060008060c0878903121561076f5761076e61056e565b5b600061077d89828a016105c1565b965050602087013567ffffffffffffffff81111561079e5761079d610573565b5b6107aa89828a016106ee565b955050604087013567ffffffffffffffff8111156107cb576107ca610573565b5b6107d789828a016106ee565b945050606087013567ffffffffffffffff8111156107f8576107f7610573565b5b61080489828a016106ee565b935050608061081589828a0161073d565b92505060a087013567ffffffffffffffff81111561083657610835610573565b5b61084289828a016106ee565b9150509295509295509295565b60008160070b9050919050565b6108658161084f565b82525050565b6000602082019050610880600083018461085c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108c08261084f565b9150677fffffffffffffff82036108da576108d9610886565b5b600182019050919050565b6108ee81610598565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561092e578082015181840152602081019050610913565b60008484015250505050565b6000610945826108f4565b61094f81856108ff565b935061095f818560208601610910565b610968816105e0565b840191505092915050565b61097c8161071c565b82525050565b600060c08201905061099760008301896108e5565b81810360208301526109a9818861093a565b905081810360408301526109bd818761093a565b905081810360608301526109d1818661093a565b90506109e06080830185610973565b81810360a08301526109f2818461093a565b9050979650505050505050565b60008115159050919050565b610a14816109ff565b82525050565b600061012082019050610a30600083018c6108e5565b8181036020830152610a42818b61093a565b90508181036040830152610a56818a61093a565b90508181036060830152610a6a818961093a565b9050610a796080830188610973565b81810360a0830152610a8b818761093a565b9050610a9a60c0830186610a0b565b610aa760e0830185610a0b565b610ab5610100830184610a0b565b9a995050505050505050505056fea2646970667358221220d91867aac26bf2f5ab119d971a4b65b265d8c01736e75a4d2df461aae0e85cb564736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063073989ff1461005c578063427c1cb61461007857806361bc221a1461009457806369a98b2b146100b2578063ec3c5a14146100ce575b600080fd5b61007660048036038101906100719190610752565b6100ea565b005b610092600480360381019061008d9190610752565b6101f1565b005b61009c61030d565b6040516100a9919061086b565b60405180910390f35b6100cc60048036038101906100c79190610752565b61031e565b005b6100e860048036038101906100e39190610752565b6104c4565b005b60008081819054906101000a900460070b80929190610108906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff160217905550503073ffffffffffffffffffffffffffffffffffffffff1663427c1cb68787878787876040518763ffffffff1660e01b815260040161017596959493929190610982565b600060405180830381600087803b15801561018f57600080fd5b505af19250505080156101a0575060015b5060008081819054906101000a900460070b809291906101bf906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555050505050505050565b600060089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dba685b87878787878760018060016040518a63ffffffff1660e01b815260040161025e99989796959493929190610a1a565b600060405180830381600087803b15801561027857600080fd5b505af115801561028c573d6000803e3d6000fd5b505050503073ffffffffffffffffffffffffffffffffffffffff1663ec3c5a148787878787876040518763ffffffff1660e01b81526004016102d396959493929190610982565b600060405180830381600087803b1580156102ed57600080fd5b505af1158015610301573d6000803e3d6000fd5b50505050505050505050565b60008054906101000a900460070b81565b60008081819054906101000a900460070b8092919061033c906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555050600060089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dba685b87878787878760018060016040518a63ffffffff1660e01b81526004016103d399989796959493929190610a1a565b600060405180830381600087803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b505050503073ffffffffffffffffffffffffffffffffffffffff1663ec3c5a148787878787876040518763ffffffff1660e01b815260040161044896959493929190610982565b600060405180830381600087803b15801561046257600080fd5b505af1925050508015610473575060015b5060008081819054906101000a900460070b80929190610492906108b5565b91906101000a81548167ffffffffffffffff021916908360070b67ffffffffffffffff16021790555050505050505050565b600060089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dba685b87878787878760018060016040518a63ffffffff1660e01b815260040161053199989796959493929190610a1a565b600060405180830381600087803b15801561054b57600080fd5b505af115801561055f573d6000803e3d6000fd5b600080fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a382610578565b9050919050565b6105b381610598565b81146105be57600080fd5b50565b6000813590506105d0816105aa565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610629826105e0565b810181811067ffffffffffffffff82111715610648576106476105f1565b5b80604052505050565b600061065b610564565b90506106678282610620565b919050565b600067ffffffffffffffff821115610687576106866105f1565b5b610690826105e0565b9050602081019050919050565b82818337600083830152505050565b60006106bf6106ba8461066c565b610651565b9050828152602081018484840111156106db576106da6105db565b5b6106e684828561069d565b509392505050565b600082601f830112610703576107026105d6565b5b81356107138482602086016106ac565b91505092915050565b6000819050919050565b61072f8161071c565b811461073a57600080fd5b50565b60008135905061074c81610726565b92915050565b60008060008060008060c0878903121561076f5761076e61056e565b5b600061077d89828a016105c1565b965050602087013567ffffffffffffffff81111561079e5761079d610573565b5b6107aa89828a016106ee565b955050604087013567ffffffffffffffff8111156107cb576107ca610573565b5b6107d789828a016106ee565b945050606087013567ffffffffffffffff8111156107f8576107f7610573565b5b61080489828a016106ee565b935050608061081589828a0161073d565b92505060a087013567ffffffffffffffff81111561083657610835610573565b5b61084289828a016106ee565b9150509295509295509295565b60008160070b9050919050565b6108658161084f565b82525050565b6000602082019050610880600083018461085c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108c08261084f565b9150677fffffffffffffff82036108da576108d9610886565b5b600182019050919050565b6108ee81610598565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561092e578082015181840152602081019050610913565b60008484015250505050565b6000610945826108f4565b61094f81856108ff565b935061095f818560208601610910565b610968816105e0565b840191505092915050565b61097c8161071c565b82525050565b600060c08201905061099760008301896108e5565b81810360208301526109a9818861093a565b905081810360408301526109bd818761093a565b905081810360608301526109d1818661093a565b90506109e06080830185610973565b81810360a08301526109f2818461093a565b9050979650505050505050565b60008115159050919050565b610a14816109ff565b82525050565b600061012082019050610a30600083018c6108e5565b8181036020830152610a42818b61093a565b90508181036040830152610a56818a61093a565b90508181036060830152610a6a818961093a565b9050610a796080830188610973565b81810360a0830152610a8b818761093a565b9050610a9a60c0830186610a0b565b610aa760e0830185610a0b565b610ab5610100830184610a0b565b9a995050505050505050505056fea2646970667358221220d91867aac26bf2f5ab119d971a4b65b265d8c01736e75a4d2df461aae0e85cb564736f6c63430008140033", + "bytecode": "0x6080601f6106af38819003918201601f19168301916001600160401b038311848410176100815780849260209460405283398101031261007c57516001600160a01b038116810361007c5760008054600160401b600160e01b031916604092831b600160401b600160e01b03161790555161061790816100988239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c838163073989ff146102e8578163427c1cb6146102195750806361bc221a146101f557806369a98b2b146100de5763ec3c5a141461005a57600080fd5b8291346100da5761006a36610414565b88549397909593871c6001600160a01b03169392843b156100d657899687936100a7928a519b8c998a988997631dba685b60e01b89528801610510565b03925af19081156100cd57506100ba5750fd5b6100c390610382565b6100ca5780fd5b80fd5b513d84823e3d90fd5b8980fd5b5050fd5b5090346101cf57826100ef36610414565b8654989297949593949161010660078b900b6104a2565b67ffffffffffffffff199a8b1667ffffffffffffffff91821617808a55909a9990841c6001600160a01b0316803b156100d6578989899289838a6101608a8a8a8e519a8b998a988997631dba685b60e01b89528801610510565b03925af180156101eb57908a916101d7575b5050303b156101d357889661019894519889978897633b0f168560e21b89528801610585565b038183305af16101bb575b5054916101b28360070b6104a2565b16911617815580f35b6101c490610382565b6101cf5782386101a3565b8280fd5b8880fd5b6101e090610382565b6101d3578838610172565b85513d8c823e3d90fd5b5050346102155781600319360112610215576020915460070b9051908152f35b5080fd5b929050346100da5761022a36610414565b9060018060a09995949796991b038954881c16803b156100d6578989859288838961026c898f8f8b91519a8b998a988997631dba685b60e01b89528801610510565b03925af180156102de57908a916102ca575b5050303b156101d35788956102a5938851998a978897633b0f168560e21b89528801610585565b038183305af19081156100cd57506102ba5750f35b6102c390610382565b6100ca5780f35b6102d390610382565b6101d357883861027e565b88513d8c823e3d90fd5b808484346100da576102f936610414565b90889594969397929854986103108a60070b6104a2565b67ffffffffffffffff199a8b1667ffffffffffffffff9182161788559998303b1561037e576103509451988997889763213e0e5b60e11b89528801610585565b038183305af161036b575b508254916101b28360070b6104a2565b61037790939193610382565b918361035b565b8780fd5b67ffffffffffffffff811161039657604052565b634e487b7160e01b600052604160045260246000fd5b81601f8201121561040f5780359067ffffffffffffffff928383116103965760405193601f8401601f19908116603f0116850190811185821017610396576040528284526020838301011161040f57816000926020809301838601378301015290565b600080fd5b60c060031982011261040f576004356001600160a01b038116810361040f579167ffffffffffffffff60243581811161040f5783610454916004016103ac565b9260443582811161040f578161046c916004016103ac565b9260643583811161040f5782610484916004016103ac565b926084359260a43591821161040f5761049f916004016103ac565b90565b60070b677fffffffffffffff81146104ba5760010190565b634e487b7160e01b600052601160045260246000fd5b919082519283825260005b8481106104fc575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016104db565b969590610100946105536105749561054560019996610561958b8060a01b03168d5260208d61012091829101528d01906104d0565b908b820360408d01526104d0565b9089820360608b01526104d0565b91608088015286820360a08801526104d0565b938260c08201528260e08201520152565b926105c0906105b26105ce9461049f99979460018060a01b0316875260c0602088015260c08701906104d0565b9085820360408701526104d0565b9083820360608501526104d0565b92608082015260a08184039101526104d056fea264697066735822122034839481f88e1aff801b78902159f4d7ed1d3d669e8c0e715a2b7bb7448bcfc464736f6c63430008140033", + "deployedBytecode": "0x6040608081526004908136101561001557600080fd5b600091823560e01c838163073989ff146102e8578163427c1cb6146102195750806361bc221a146101f557806369a98b2b146100de5763ec3c5a141461005a57600080fd5b8291346100da5761006a36610414565b88549397909593871c6001600160a01b03169392843b156100d657899687936100a7928a519b8c998a988997631dba685b60e01b89528801610510565b03925af19081156100cd57506100ba5750fd5b6100c390610382565b6100ca5780fd5b80fd5b513d84823e3d90fd5b8980fd5b5050fd5b5090346101cf57826100ef36610414565b8654989297949593949161010660078b900b6104a2565b67ffffffffffffffff199a8b1667ffffffffffffffff91821617808a55909a9990841c6001600160a01b0316803b156100d6578989899289838a6101608a8a8a8e519a8b998a988997631dba685b60e01b89528801610510565b03925af180156101eb57908a916101d7575b5050303b156101d357889661019894519889978897633b0f168560e21b89528801610585565b038183305af16101bb575b5054916101b28360070b6104a2565b16911617815580f35b6101c490610382565b6101cf5782386101a3565b8280fd5b8880fd5b6101e090610382565b6101d3578838610172565b85513d8c823e3d90fd5b5050346102155781600319360112610215576020915460070b9051908152f35b5080fd5b929050346100da5761022a36610414565b9060018060a09995949796991b038954881c16803b156100d6578989859288838961026c898f8f8b91519a8b998a988997631dba685b60e01b89528801610510565b03925af180156102de57908a916102ca575b5050303b156101d35788956102a5938851998a978897633b0f168560e21b89528801610585565b038183305af19081156100cd57506102ba5750f35b6102c390610382565b6100ca5780f35b6102d390610382565b6101d357883861027e565b88513d8c823e3d90fd5b808484346100da576102f936610414565b90889594969397929854986103108a60070b6104a2565b67ffffffffffffffff199a8b1667ffffffffffffffff9182161788559998303b1561037e576103509451988997889763213e0e5b60e11b89528801610585565b038183305af161036b575b508254916101b28360070b6104a2565b61037790939193610382565b918361035b565b8780fd5b67ffffffffffffffff811161039657604052565b634e487b7160e01b600052604160045260246000fd5b81601f8201121561040f5780359067ffffffffffffffff928383116103965760405193601f8401601f19908116603f0116850190811185821017610396576040528284526020838301011161040f57816000926020809301838601378301015290565b600080fd5b60c060031982011261040f576004356001600160a01b038116810361040f579167ffffffffffffffff60243581811161040f5783610454916004016103ac565b9260443582811161040f578161046c916004016103ac565b9260643583811161040f5782610484916004016103ac565b926084359260a43591821161040f5761049f916004016103ac565b90565b60070b677fffffffffffffff81146104ba5760010190565b634e487b7160e01b600052601160045260246000fd5b919082519283825260005b8481106104fc575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016104db565b969590610100946105536105749561054560019996610561958b8060a01b03168d5260208d61012091829101528d01906104d0565b908b820360408d01526104d0565b9089820360608b01526104d0565b91608088015286820360a08801526104d0565b938260c08201528260e08201520152565b926105c0906105b26105ce9461049f99979460018060a01b0316875260c0602088015260c08701906104d0565b9085820360408701526104d0565b9083820360608501526104d0565b92608082015260a08184039101526104d056fea264697066735822122034839481f88e1aff801b78902159f4d7ed1d3d669e8c0e715a2b7bb7448bcfc464736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/Reverter.json b/precompiles/testutil/contracts/Reverter.json index afea867b4..c4fb52113 100644 --- a/precompiles/testutil/contracts/Reverter.json +++ b/precompiles/testutil/contracts/Reverter.json @@ -38,8 +38,8 @@ "type": "receive" } ], - "bytecode": "0x608060405260008055610c17806100176000396000f3fe60806040526004361061002d5760003560e01c806379388e9414610039578063c04062261461006257610034565b3661003457005b600080fd5b34801561004557600080fd5b50610060600480360381019061005b9190610360565b610079565b005b34801561006e57600080fd5b50610077610131565b005b808290604051610088906102d4565b82906040518091039083f590509050801580156100a9573d6000803e3d6000fd5b505061080173ffffffffffffffffffffffffffffffffffffffff166354be1a28306040518263ffffffff1660e01b81526004016100e691906103e1565b600060405180830381865afa158015610103573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061012c9190610884565b600080fd5b6000808154809291906101439061092b565b91905055503073ffffffffffffffffffffffffffffffffffffffff166379388e9460005460001b476040518363ffffffff1660e01b8152600401610188929190610991565b600060405180830381600087803b1580156101a257600080fd5b505af19250505080156101b3575060015b61022f5760006101c760005460001b610249565b90508073ffffffffffffffffffffffffffffffffffffffff16633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021157600080fd5b505af1158015610225573d6000803e3d6000fd5b5050505050610230565b5b6000808154809291906102429061092b565b9190505550565b60008060ff60f81b308460405180602001610263906102d4565b6020820181038252601f19601f820116604052506040516020016102879190610a01565b604051602081830303815290604052805190602001206040516020016102b09493929190610ace565b6040516020818303038152906040528051906020012060001c905080915050919050565b60c580610b1d83390190565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b6000819050919050565b61033d8161032a565b811461034857600080fd5b50565b60008135905061035a81610334565b92915050565b60008060408385031215610377576103766102ea565b5b600061038585828601610315565b92505060206103968582860161034b565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103cb826103a0565b9050919050565b6103db816103c0565b82525050565b60006020820190506103f660008301846103d2565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61044a82610401565b810181811067ffffffffffffffff8211171561046957610468610412565b5b80604052505050565b600061047c6102e0565b90506104888282610441565b919050565b600067ffffffffffffffff8211156104a8576104a7610412565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600067ffffffffffffffff8211156104e8576104e7610412565b5b6104f182610401565b9050602081019050919050565b60005b8381101561051c578082015181840152602081019050610501565b60008484015250505050565b600061053b610536846104cd565b610472565b905082815260208101848484011115610557576105566104c8565b5b6105628482856104fe565b509392505050565b600082601f83011261057f5761057e6103fc565b5b815161058f848260208601610528565b91505092915050565b600067ffffffffffffffff8211156105b3576105b2610412565b5b602082029050602081019050919050565b6000815190506105d381610334565b92915050565b600060ff82169050919050565b6105ef816105d9565b81146105fa57600080fd5b50565b60008151905061060c816105e6565b92915050565b600060608284031215610628576106276104be565b5b6106326060610472565b9050600082015167ffffffffffffffff811115610652576106516104c3565b5b61065e8482850161056a565b6000830152506020610672848285016105c4565b6020830152506040610686848285016105fd565b60408301525092915050565b60006106a56106a084610598565b610472565b905080838252602082019050602084028301858111156106c8576106c76104b9565b5b835b8181101561070f57805167ffffffffffffffff8111156106ed576106ec6103fc565b5b8086016106fa8982610612565b855260208501945050506020810190506106ca565b5050509392505050565b600082601f83011261072e5761072d6103fc565b5b815161073e848260208601610692565b91505092915050565b60006040828403121561075d5761075c6104be565b5b6107676040610472565b9050600082015167ffffffffffffffff811115610787576107866104c3565b5b6107938482850161056a565b600083015250602082015167ffffffffffffffff8111156107b7576107b66104c3565b5b6107c384828501610719565b60208301525092915050565b60006107e26107dd8461048d565b610472565b90508083825260208201905060208402830185811115610805576108046104b9565b5b835b8181101561084c57805167ffffffffffffffff81111561082a576108296103fc565b5b8086016108378982610747565b85526020850194505050602081019050610807565b5050509392505050565b600082601f83011261086b5761086a6103fc565b5b815161087b8482602086016107cf565b91505092915050565b6000806040838503121561089b5761089a6102ea565b5b600083015167ffffffffffffffff8111156108b9576108b86102ef565b5b6108c585828601610856565b925050602083015167ffffffffffffffff8111156108e6576108e56102ef565b5b6108f285828601610719565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109368261032a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610968576109676108fc565b5b600182019050919050565b61097c816102f4565b82525050565b61098b8161032a565b82525050565b60006040820190506109a66000830185610973565b6109b36020830184610982565b9392505050565b600081519050919050565b600081905092915050565b60006109db826109ba565b6109e581856109c5565b93506109f58185602086016104fe565b80840191505092915050565b6000610a0d82846109d0565b915081905092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610a5f610a5a82610a18565b610a44565b82525050565b60008160601b9050919050565b6000610a7d82610a65565b9050919050565b6000610a8f82610a72565b9050919050565b610aa7610aa2826103c0565b610a84565b82525050565b6000819050919050565b610ac8610ac3826102f4565b610aad565b82525050565b6000610ada8287610a4e565b600182019150610aea8286610a96565b601482019150610afa8285610ab7565b602082019150610b0a8284610ab7565b6020820191508190509594505050505056fe608060405260b3806100126000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633ccfd60b14602d575b600080fd5b60336035565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015607a573d6000803e3d6000fd5b5056fea26469706673582212207da4499020b38137ee79f072192ccaf6e65cda45d0852daec28c1899ffcaea8b64736f6c63430008140033a2646970667358221220626d4a567f7b53f59bf81d33094e24325d52fc78516a5763b7e8d3759f8ee18a64736f6c63430008140033", - "deployedBytecode": "0x60806040526004361061002d5760003560e01c806379388e9414610039578063c04062261461006257610034565b3661003457005b600080fd5b34801561004557600080fd5b50610060600480360381019061005b9190610360565b610079565b005b34801561006e57600080fd5b50610077610131565b005b808290604051610088906102d4565b82906040518091039083f590509050801580156100a9573d6000803e3d6000fd5b505061080173ffffffffffffffffffffffffffffffffffffffff166354be1a28306040518263ffffffff1660e01b81526004016100e691906103e1565b600060405180830381865afa158015610103573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061012c9190610884565b600080fd5b6000808154809291906101439061092b565b91905055503073ffffffffffffffffffffffffffffffffffffffff166379388e9460005460001b476040518363ffffffff1660e01b8152600401610188929190610991565b600060405180830381600087803b1580156101a257600080fd5b505af19250505080156101b3575060015b61022f5760006101c760005460001b610249565b90508073ffffffffffffffffffffffffffffffffffffffff16633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021157600080fd5b505af1158015610225573d6000803e3d6000fd5b5050505050610230565b5b6000808154809291906102429061092b565b9190505550565b60008060ff60f81b308460405180602001610263906102d4565b6020820181038252601f19601f820116604052506040516020016102879190610a01565b604051602081830303815290604052805190602001206040516020016102b09493929190610ace565b6040516020818303038152906040528051906020012060001c905080915050919050565b60c580610b1d83390190565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b6000819050919050565b61033d8161032a565b811461034857600080fd5b50565b60008135905061035a81610334565b92915050565b60008060408385031215610377576103766102ea565b5b600061038585828601610315565b92505060206103968582860161034b565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103cb826103a0565b9050919050565b6103db816103c0565b82525050565b60006020820190506103f660008301846103d2565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61044a82610401565b810181811067ffffffffffffffff8211171561046957610468610412565b5b80604052505050565b600061047c6102e0565b90506104888282610441565b919050565b600067ffffffffffffffff8211156104a8576104a7610412565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600067ffffffffffffffff8211156104e8576104e7610412565b5b6104f182610401565b9050602081019050919050565b60005b8381101561051c578082015181840152602081019050610501565b60008484015250505050565b600061053b610536846104cd565b610472565b905082815260208101848484011115610557576105566104c8565b5b6105628482856104fe565b509392505050565b600082601f83011261057f5761057e6103fc565b5b815161058f848260208601610528565b91505092915050565b600067ffffffffffffffff8211156105b3576105b2610412565b5b602082029050602081019050919050565b6000815190506105d381610334565b92915050565b600060ff82169050919050565b6105ef816105d9565b81146105fa57600080fd5b50565b60008151905061060c816105e6565b92915050565b600060608284031215610628576106276104be565b5b6106326060610472565b9050600082015167ffffffffffffffff811115610652576106516104c3565b5b61065e8482850161056a565b6000830152506020610672848285016105c4565b6020830152506040610686848285016105fd565b60408301525092915050565b60006106a56106a084610598565b610472565b905080838252602082019050602084028301858111156106c8576106c76104b9565b5b835b8181101561070f57805167ffffffffffffffff8111156106ed576106ec6103fc565b5b8086016106fa8982610612565b855260208501945050506020810190506106ca565b5050509392505050565b600082601f83011261072e5761072d6103fc565b5b815161073e848260208601610692565b91505092915050565b60006040828403121561075d5761075c6104be565b5b6107676040610472565b9050600082015167ffffffffffffffff811115610787576107866104c3565b5b6107938482850161056a565b600083015250602082015167ffffffffffffffff8111156107b7576107b66104c3565b5b6107c384828501610719565b60208301525092915050565b60006107e26107dd8461048d565b610472565b90508083825260208201905060208402830185811115610805576108046104b9565b5b835b8181101561084c57805167ffffffffffffffff81111561082a576108296103fc565b5b8086016108378982610747565b85526020850194505050602081019050610807565b5050509392505050565b600082601f83011261086b5761086a6103fc565b5b815161087b8482602086016107cf565b91505092915050565b6000806040838503121561089b5761089a6102ea565b5b600083015167ffffffffffffffff8111156108b9576108b86102ef565b5b6108c585828601610856565b925050602083015167ffffffffffffffff8111156108e6576108e56102ef565b5b6108f285828601610719565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006109368261032a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610968576109676108fc565b5b600182019050919050565b61097c816102f4565b82525050565b61098b8161032a565b82525050565b60006040820190506109a66000830185610973565b6109b36020830184610982565b9392505050565b600081519050919050565b600081905092915050565b60006109db826109ba565b6109e581856109c5565b93506109f58185602086016104fe565b80840191505092915050565b6000610a0d82846109d0565b915081905092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b610a5f610a5a82610a18565b610a44565b82525050565b60008160601b9050919050565b6000610a7d82610a65565b9050919050565b6000610a8f82610a72565b9050919050565b610aa7610aa2826103c0565b610a84565b82525050565b6000819050919050565b610ac8610ac3826102f4565b610aad565b82525050565b6000610ada8287610a4e565b600182019150610aea8286610a96565b601482019150610afa8285610ab7565b602082019150610b0a8284610ab7565b6020820191508190509594505050505056fe608060405260b3806100126000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633ccfd60b14602d575b600080fd5b60336035565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015607a573d6000803e3d6000fd5b5056fea26469706673582212207da4499020b38137ee79f072192ccaf6e65cda45d0852daec28c1899ffcaea8b64736f6c63430008140033a2646970667358221220626d4a567f7b53f59bf81d33094e24325d52fc78516a5763b7e8d3759f8ee18a64736f6c63430008140033", + "bytecode": "0x6080806040526000805561064b90816100168239f3fe6080604090808252600480361015610022575b505050361561002057600080fd5b005b600091823560e01c90816379388e94146101c3575063c04062260361001257346101bf57816003193601126101bf5761005b8254610383565b80835547303b156101bb57845191631e4e23a560e21b8352838301526024820152828160448183305af190816101a8575b506101a05781549260a881516100a560208301826103d1565b818152602081019161056e83396100da6020845180936100cd83830196879251928391610409565b81010380845201826103d1565b51902091815192602084019560ff60f81b87523060601b6021860152603585015260558401526055835260808301928084106001600160401b0385111761018b5783835251909420929384936001600160a01b0316803b1561018757849184838193633ccfd60b60e01b83525af190811561017e5750610167575b50505b6101628154610383565b815580f35b610170906103a8565b61017b578038610155565b80fd5b513d84823e3d90fd5b8480fd5b604182634e487b7160e01b6000525260246000fd5b509050610158565b6101b4909391936103a8565b913861008c565b8380fd5b5080fd5b92939050346101bb57806003193601126101bb5760a8908184016001600160401b0392858210848311176103705761056e86396024948085359203908635f515610367578051630a97c34560e31b8152308482015293858582816108015afa801561035d57610230578580fd5b3d8087873e61023f81876103d1565b85019382868603126103595785518481116103555786019185601f840112156103555782519161026e836103f2565b9461027b815196876103d1565b8386526020808097019460051b8601019488861161035157868101945b8686106102c457505050505050508301519081116101bb576102ba9201610485565b5038808080808580fd5b855189811161034d5782019083601f19838d03011261034d578351908482018281108c82111761033b578552898301518b8111610337578c8b6103099286010161042c565b825284830151918b8311610337576103288d8c80969581960101610485565b83820152815201950194610298565b8e80fd5b634e487b7160e01b8f5260418752878ffd5b8c80fd5b8a80fd5b8780fd5b8680fd5b82513d88823e3d90fd5b513d85823e3d90fd5b634e487b7160e01b875260418552602487fd5b60001981146103925760010190565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381116103bb57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b038211176103bb57604052565b6001600160401b0381116103bb5760051b60200190565b60005b83811061041c5750506000910152565b818101518382015260200161040c565b81601f820112156104805780516001600160401b0381116103bb576040519261045f601f8301601f1916602001856103d1565b818452602082840101116104805761047d9160208085019101610409565b90565b600080fd5b9080601f830112156104805781519161049d836103f2565b926040906104ad825195866103d1565b808552602093848087019260051b8501019381851161048057858101925b8584106104dc575050505050505090565b8351906001600160401b039182811161048057830160609081601f19828803011261048057875193828501858110828211176105585789528a82015190811161048057868b61052d9284010161042c565b8452878101518a85015201519060ff82168203610480578289939288859401528152019301926104cb565b60246000634e487b7160e01b81526041600452fdfe608080604052609790816100118239f3fe60806040526004361015601157600080fd5b6000803560e01c633ccfd60b14602657600080fd5b34605e5780600319360112605e5780808080478181156056575b3390f115604a5780f35b604051903d90823e3d90fd5b506108fc6040565b80fdfea2646970667358221220a84d47d16d94667ccf1fa2c5806581649184eaca8c39fac14a893453228a441064736f6c63430008140033a2646970667358221220752c4206a3f71a423553a97c473d9ee307c1e6c5b9df4acdbe3bbcc8736c257664736f6c63430008140033", + "deployedBytecode": "0x6080604090808252600480361015610022575b505050361561002057600080fd5b005b600091823560e01c90816379388e94146101c3575063c04062260361001257346101bf57816003193601126101bf5761005b8254610383565b80835547303b156101bb57845191631e4e23a560e21b8352838301526024820152828160448183305af190816101a8575b506101a05781549260a881516100a560208301826103d1565b818152602081019161056e83396100da6020845180936100cd83830196879251928391610409565b81010380845201826103d1565b51902091815192602084019560ff60f81b87523060601b6021860152603585015260558401526055835260808301928084106001600160401b0385111761018b5783835251909420929384936001600160a01b0316803b1561018757849184838193633ccfd60b60e01b83525af190811561017e5750610167575b50505b6101628154610383565b815580f35b610170906103a8565b61017b578038610155565b80fd5b513d84823e3d90fd5b8480fd5b604182634e487b7160e01b6000525260246000fd5b509050610158565b6101b4909391936103a8565b913861008c565b8380fd5b5080fd5b92939050346101bb57806003193601126101bb5760a8908184016001600160401b0392858210848311176103705761056e86396024948085359203908635f515610367578051630a97c34560e31b8152308482015293858582816108015afa801561035d57610230578580fd5b3d8087873e61023f81876103d1565b85019382868603126103595785518481116103555786019185601f840112156103555782519161026e836103f2565b9461027b815196876103d1565b8386526020808097019460051b8601019488861161035157868101945b8686106102c457505050505050508301519081116101bb576102ba9201610485565b5038808080808580fd5b855189811161034d5782019083601f19838d03011261034d578351908482018281108c82111761033b578552898301518b8111610337578c8b6103099286010161042c565b825284830151918b8311610337576103288d8c80969581960101610485565b83820152815201950194610298565b8e80fd5b634e487b7160e01b8f5260418752878ffd5b8c80fd5b8a80fd5b8780fd5b8680fd5b82513d88823e3d90fd5b513d85823e3d90fd5b634e487b7160e01b875260418552602487fd5b60001981146103925760010190565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381116103bb57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b038211176103bb57604052565b6001600160401b0381116103bb5760051b60200190565b60005b83811061041c5750506000910152565b818101518382015260200161040c565b81601f820112156104805780516001600160401b0381116103bb576040519261045f601f8301601f1916602001856103d1565b818452602082840101116104805761047d9160208085019101610409565b90565b600080fd5b9080601f830112156104805781519161049d836103f2565b926040906104ad825195866103d1565b808552602093848087019260051b8501019381851161048057858101925b8584106104dc575050505050505090565b8351906001600160401b039182811161048057830160609081601f19828803011261048057875193828501858110828211176105585789528a82015190811161048057868b61052d9284010161042c565b8452878101518a85015201519060ff82168203610480578289939288859401528152019301926104cb565b60246000634e487b7160e01b81526041600452fdfe608080604052609790816100118239f3fe60806040526004361015601157600080fd5b6000803560e01c633ccfd60b14602657600080fd5b34605e5780600319360112605e5780808080478181156056575b3390f115604a5780f35b604051903d90823e3d90fd5b506108fc6040565b80fdfea2646970667358221220a84d47d16d94667ccf1fa2c5806581649184eaca8c39fac14a893453228a441064736f6c63430008140033a2646970667358221220752c4206a3f71a423553a97c473d9ee307c1e6c5b9df4acdbe3bbcc8736c257664736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/testutil/contracts/StakingReverter.json b/precompiles/testutil/contracts/StakingReverter.json index c0ae8d765..ff68dce37 100644 --- a/precompiles/testutil/contracts/StakingReverter.json +++ b/precompiles/testutil/contracts/StakingReverter.json @@ -128,9 +128,36 @@ "type": "uint256" }, { - "internalType": "string", + "components": [ + { + "internalType": "string", + "name": "moniker", + "type": "string" + }, + { + "internalType": "string", + "name": "identity", + "type": "string" + }, + { + "internalType": "string", + "name": "website", + "type": "string" + }, + { + "internalType": "string", + "name": "securityContact", + "type": "string" + }, + { + "internalType": "string", + "name": "details", + "type": "string" + } + ], + "internalType": "struct Description", "name": "description", - "type": "string" + "type": "tuple" }, { "internalType": "int64", @@ -216,8 +243,8 @@ "type": "function" } ], - "bytecode": "0x60806040526000805561150f806100176000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063668f452b1161005b578063668f452b146100d6578063922a4b6714610107578063cbc367d414610123578063f66013d7146101535761007d565b80634d9db92b146100825780634e5a8fe51461009e57806352fce7b1146100ba575b600080fd5b61009c60048036038101906100979190610a0e565b61016f565b005b6100b860048036038101906100b39190610a82565b61041c565b005b6100d460048036038101906100cf9190610a82565b6104be565b005b6100f060048036038101906100eb9190610ae2565b610566565b6040516100fe929190610c1a565b60405180910390f35b610121600480360381019061011c9190610a82565b610600565b005b61013d60048036038101906101389190610ca8565b610797565b60405161014a9190610e93565b60405180910390f35b61016d60048036038101906101689190610ae2565b610847565b005b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016101b19493929190610f56565b6020604051808303816000875af11580156101d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f49190610fc2565b5060005b8481101561038f573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b815260040161023b929190610fef565b600060405180830381600087803b15801561025557600080fd5b505af1925050508015610266575060015b61037b5761080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308585600a6040518563ffffffff1660e01b81526004016102ac9493929190610f56565b6020604051808303816000875af11580156102cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190610fc2565b5060005b84811015610375573073ffffffffffffffffffffffffffffffffffffffff1663f66013d785856040518363ffffffff1660e01b8152600401610336929190610fef565b600060405180830381600087803b15801561035057600080fd5b505af1925050508015610361575060015b50808061036d90611042565b9150506102f3565b5061037c565b5b808061038790611042565b9150506101f8565b5061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016103d29493929190610f56565b6020604051808303816000875af11580156103f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104159190610fc2565b5050505050565b60008081548092919061042e90611042565b919050555060005b838110156104b8573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b8152600401610479929190610fef565b600060405180830381600087803b15801561049357600080fd5b505af19250505080156104a4575060015b5080806104b090611042565b915050610436565b50505050565b6000808154809291906104d090611042565b919050555060005b83811015610560573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b815260040161051b929190610fef565b600060405180830381600087803b15801561053557600080fd5b505af1158015610549573d6000803e3d6000fd5b50505050808061055890611042565b9150506104d8565b50505050565b60006105706108d1565b61080073ffffffffffffffffffffffffffffffffffffffff1663241774e63086866040518463ffffffff1660e01b81526004016105af9392919061108a565b600060405180830381865afa1580156105cc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105f59190611268565b915091509250929050565b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016106429493929190610f56565b6020604051808303816000875af1158015610661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106859190610fc2565b5060005b8381101561070b573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b81526004016106cc929190610fef565b600060405180830381600087803b1580156106e657600080fd5b505af19250505080156106f7575060015b50808061070390611042565b915050610689565b5061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b815260040161074e9493929190610f56565b6020604051808303816000875af115801561076d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107919190610fc2565b50505050565b61079f6108eb565b60005b838110156108405761080073ffffffffffffffffffffffffffffffffffffffff1663223b3b7a846040518263ffffffff1660e01b81526004016107e591906112c4565b600060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061082b9190611490565b9150808061083890611042565b9150506107a2565b5092915050565b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016108899493929190610f56565b6020604051808303816000875af11580156108a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cc9190610fc2565b600080fd5b604051806040016040528060608152602001600081525090565b60405180610160016040528060608152602001606081526020016000151581526020016000600381111561092257610921610d03565b5b8152602001600081526020016000815260200160608152602001600060070b8152602001600060070b815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61098681610973565b811461099157600080fd5b50565b6000813590506109a38161097d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126109ce576109cd6109a9565b5b8235905067ffffffffffffffff8111156109eb576109ea6109ae565b5b602083019150836001820283011115610a0757610a066109b3565b5b9250929050565b60008060008060608587031215610a2857610a27610969565b5b6000610a3687828801610994565b9450506020610a4787828801610994565b935050604085013567ffffffffffffffff811115610a6857610a6761096e565b5b610a74878288016109b8565b925092505092959194509250565b600080600060408486031215610a9b57610a9a610969565b5b6000610aa986828701610994565b935050602084013567ffffffffffffffff811115610aca57610ac961096e565b5b610ad6868287016109b8565b92509250509250925092565b60008060208385031215610af957610af8610969565b5b600083013567ffffffffffffffff811115610b1757610b1661096e565b5b610b23858286016109b8565b92509250509250929050565b610b3881610973565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b78578082015181840152602081019050610b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ba082610b3e565b610baa8185610b49565b9350610bba818560208601610b5a565b610bc381610b84565b840191505092915050565b610bd781610973565b82525050565b60006040830160008301518482036000860152610bfa8282610b95565b9150506020830151610c0f6020860182610bce565b508091505092915050565b6000604082019050610c2f6000830185610b2f565b8181036020830152610c418184610bdd565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c7582610c4a565b9050919050565b610c8581610c6a565b8114610c9057600080fd5b50565b600081359050610ca281610c7c565b92915050565b60008060408385031215610cbf57610cbe610969565b5b6000610ccd85828601610994565b9250506020610cde85828601610c93565b9150509250929050565b60008115159050919050565b610cfd81610ce8565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110610d4357610d42610d03565b5b50565b6000819050610d5482610d32565b919050565b6000610d6482610d46565b9050919050565b610d7481610d59565b82525050565b60008160070b9050919050565b610d9081610d7a565b82525050565b6000610160830160008301518482036000860152610db48282610b95565b91505060208301518482036020860152610dce8282610b95565b9150506040830151610de36040860182610cf4565b506060830151610df66060860182610d6b565b506080830151610e096080860182610bce565b5060a0830151610e1c60a0860182610bce565b5060c083015184820360c0860152610e348282610b95565b91505060e0830151610e4960e0860182610d87565b50610100830151610e5e610100860182610d87565b50610120830151610e73610120860182610bce565b50610140830151610e88610140860182610bce565b508091505092915050565b60006020820190508181036000830152610ead8184610d96565b905092915050565b610ebe81610c6a565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b6000610ef08385610ec4565b9350610efd838584610ed5565b610f0683610b84565b840190509392505050565b6000819050919050565b6000819050919050565b6000610f40610f3b610f3684610f11565b610f1b565b610973565b9050919050565b610f5081610f25565b82525050565b6000606082019050610f6b6000830187610eb5565b8181036020830152610f7e818587610ee4565b9050610f8d6040830184610f47565b95945050505050565b610f9f81610ce8565b8114610faa57600080fd5b50565b600081519050610fbc81610f96565b92915050565b600060208284031215610fd857610fd7610969565b5b6000610fe684828501610fad565b91505092915050565b6000602082019050818103600083015261100a818486610ee4565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061104d82610973565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361107f5761107e611013565b5b600182019050919050565b600060408201905061109f6000830186610eb5565b81810360208301526110b2818486610ee4565b9050949350505050565b6000815190506110cb8161097d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61110e82610b84565b810181811067ffffffffffffffff8211171561112d5761112c6110d6565b5b80604052505050565b600061114061095f565b905061114c8282611105565b919050565b600080fd5b600080fd5b600067ffffffffffffffff821115611176576111756110d6565b5b61117f82610b84565b9050602081019050919050565b600061119f61119a8461115b565b611136565b9050828152602081018484840111156111bb576111ba611156565b5b6111c6848285610b5a565b509392505050565b600082601f8301126111e3576111e26109a9565b5b81516111f384826020860161118c565b91505092915050565b600060408284031215611212576112116110d1565b5b61121c6040611136565b9050600082015167ffffffffffffffff81111561123c5761123b611151565b5b611248848285016111ce565b600083015250602061125c848285016110bc565b60208301525092915050565b6000806040838503121561127f5761127e610969565b5b600061128d858286016110bc565b925050602083015167ffffffffffffffff8111156112ae576112ad61096e565b5b6112ba858286016111fc565b9150509250929050565b60006020820190506112d96000830184610eb5565b92915050565b600481106112ec57600080fd5b50565b6000815190506112fe816112df565b92915050565b61130d81610d7a565b811461131857600080fd5b50565b60008151905061132a81611304565b92915050565b60006101608284031215611347576113466110d1565b5b611352610160611136565b9050600082015167ffffffffffffffff81111561137257611371611151565b5b61137e848285016111ce565b600083015250602082015167ffffffffffffffff8111156113a2576113a1611151565b5b6113ae848285016111ce565b60208301525060406113c284828501610fad565b60408301525060606113d6848285016112ef565b60608301525060806113ea848285016110bc565b60808301525060a06113fe848285016110bc565b60a08301525060c082015167ffffffffffffffff81111561142257611421611151565b5b61142e848285016111ce565b60c08301525060e06114428482850161131b565b60e0830152506101006114578482850161131b565b6101008301525061012061146d848285016110bc565b61012083015250610140611483848285016110bc565b6101408301525092915050565b6000602082840312156114a6576114a5610969565b5b600082015167ffffffffffffffff8111156114c4576114c361096e565b5b6114d084828501611330565b9150509291505056fea2646970667358221220909639086b03bb38b32aaba32e58073b8f74fe67a6fa3e21df62be2b2faddaed64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063668f452b1161005b578063668f452b146100d6578063922a4b6714610107578063cbc367d414610123578063f66013d7146101535761007d565b80634d9db92b146100825780634e5a8fe51461009e57806352fce7b1146100ba575b600080fd5b61009c60048036038101906100979190610a0e565b61016f565b005b6100b860048036038101906100b39190610a82565b61041c565b005b6100d460048036038101906100cf9190610a82565b6104be565b005b6100f060048036038101906100eb9190610ae2565b610566565b6040516100fe929190610c1a565b60405180910390f35b610121600480360381019061011c9190610a82565b610600565b005b61013d60048036038101906101389190610ca8565b610797565b60405161014a9190610e93565b60405180910390f35b61016d60048036038101906101689190610ae2565b610847565b005b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016101b19493929190610f56565b6020604051808303816000875af11580156101d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f49190610fc2565b5060005b8481101561038f573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b815260040161023b929190610fef565b600060405180830381600087803b15801561025557600080fd5b505af1925050508015610266575060015b61037b5761080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308585600a6040518563ffffffff1660e01b81526004016102ac9493929190610f56565b6020604051808303816000875af11580156102cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190610fc2565b5060005b84811015610375573073ffffffffffffffffffffffffffffffffffffffff1663f66013d785856040518363ffffffff1660e01b8152600401610336929190610fef565b600060405180830381600087803b15801561035057600080fd5b505af1925050508015610361575060015b50808061036d90611042565b9150506102f3565b5061037c565b5b808061038790611042565b9150506101f8565b5061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016103d29493929190610f56565b6020604051808303816000875af11580156103f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104159190610fc2565b5050505050565b60008081548092919061042e90611042565b919050555060005b838110156104b8573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b8152600401610479929190610fef565b600060405180830381600087803b15801561049357600080fd5b505af19250505080156104a4575060015b5080806104b090611042565b915050610436565b50505050565b6000808154809291906104d090611042565b919050555060005b83811015610560573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b815260040161051b929190610fef565b600060405180830381600087803b15801561053557600080fd5b505af1158015610549573d6000803e3d6000fd5b50505050808061055890611042565b9150506104d8565b50505050565b60006105706108d1565b61080073ffffffffffffffffffffffffffffffffffffffff1663241774e63086866040518463ffffffff1660e01b81526004016105af9392919061108a565b600060405180830381865afa1580156105cc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105f59190611268565b915091509250929050565b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016106429493929190610f56565b6020604051808303816000875af1158015610661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106859190610fc2565b5060005b8381101561070b573073ffffffffffffffffffffffffffffffffffffffff1663f66013d784846040518363ffffffff1660e01b81526004016106cc929190610fef565b600060405180830381600087803b1580156106e657600080fd5b505af19250505080156106f7575060015b50808061070390611042565b915050610689565b5061080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b815260040161074e9493929190610f56565b6020604051808303816000875af115801561076d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107919190610fc2565b50505050565b61079f6108eb565b60005b838110156108405761080073ffffffffffffffffffffffffffffffffffffffff1663223b3b7a846040518263ffffffff1660e01b81526004016107e591906112c4565b600060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061082b9190611490565b9150808061083890611042565b9150506107a2565b5092915050565b61080073ffffffffffffffffffffffffffffffffffffffff166353266bbb308484600a6040518563ffffffff1660e01b81526004016108899493929190610f56565b6020604051808303816000875af11580156108a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cc9190610fc2565b600080fd5b604051806040016040528060608152602001600081525090565b60405180610160016040528060608152602001606081526020016000151581526020016000600381111561092257610921610d03565b5b8152602001600081526020016000815260200160608152602001600060070b8152602001600060070b815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61098681610973565b811461099157600080fd5b50565b6000813590506109a38161097d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126109ce576109cd6109a9565b5b8235905067ffffffffffffffff8111156109eb576109ea6109ae565b5b602083019150836001820283011115610a0757610a066109b3565b5b9250929050565b60008060008060608587031215610a2857610a27610969565b5b6000610a3687828801610994565b9450506020610a4787828801610994565b935050604085013567ffffffffffffffff811115610a6857610a6761096e565b5b610a74878288016109b8565b925092505092959194509250565b600080600060408486031215610a9b57610a9a610969565b5b6000610aa986828701610994565b935050602084013567ffffffffffffffff811115610aca57610ac961096e565b5b610ad6868287016109b8565b92509250509250925092565b60008060208385031215610af957610af8610969565b5b600083013567ffffffffffffffff811115610b1757610b1661096e565b5b610b23858286016109b8565b92509250509250929050565b610b3881610973565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b78578082015181840152602081019050610b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ba082610b3e565b610baa8185610b49565b9350610bba818560208601610b5a565b610bc381610b84565b840191505092915050565b610bd781610973565b82525050565b60006040830160008301518482036000860152610bfa8282610b95565b9150506020830151610c0f6020860182610bce565b508091505092915050565b6000604082019050610c2f6000830185610b2f565b8181036020830152610c418184610bdd565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c7582610c4a565b9050919050565b610c8581610c6a565b8114610c9057600080fd5b50565b600081359050610ca281610c7c565b92915050565b60008060408385031215610cbf57610cbe610969565b5b6000610ccd85828601610994565b9250506020610cde85828601610c93565b9150509250929050565b60008115159050919050565b610cfd81610ce8565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110610d4357610d42610d03565b5b50565b6000819050610d5482610d32565b919050565b6000610d6482610d46565b9050919050565b610d7481610d59565b82525050565b60008160070b9050919050565b610d9081610d7a565b82525050565b6000610160830160008301518482036000860152610db48282610b95565b91505060208301518482036020860152610dce8282610b95565b9150506040830151610de36040860182610cf4565b506060830151610df66060860182610d6b565b506080830151610e096080860182610bce565b5060a0830151610e1c60a0860182610bce565b5060c083015184820360c0860152610e348282610b95565b91505060e0830151610e4960e0860182610d87565b50610100830151610e5e610100860182610d87565b50610120830151610e73610120860182610bce565b50610140830151610e88610140860182610bce565b508091505092915050565b60006020820190508181036000830152610ead8184610d96565b905092915050565b610ebe81610c6a565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b6000610ef08385610ec4565b9350610efd838584610ed5565b610f0683610b84565b840190509392505050565b6000819050919050565b6000819050919050565b6000610f40610f3b610f3684610f11565b610f1b565b610973565b9050919050565b610f5081610f25565b82525050565b6000606082019050610f6b6000830187610eb5565b8181036020830152610f7e818587610ee4565b9050610f8d6040830184610f47565b95945050505050565b610f9f81610ce8565b8114610faa57600080fd5b50565b600081519050610fbc81610f96565b92915050565b600060208284031215610fd857610fd7610969565b5b6000610fe684828501610fad565b91505092915050565b6000602082019050818103600083015261100a818486610ee4565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061104d82610973565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361107f5761107e611013565b5b600182019050919050565b600060408201905061109f6000830186610eb5565b81810360208301526110b2818486610ee4565b9050949350505050565b6000815190506110cb8161097d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61110e82610b84565b810181811067ffffffffffffffff8211171561112d5761112c6110d6565b5b80604052505050565b600061114061095f565b905061114c8282611105565b919050565b600080fd5b600080fd5b600067ffffffffffffffff821115611176576111756110d6565b5b61117f82610b84565b9050602081019050919050565b600061119f61119a8461115b565b611136565b9050828152602081018484840111156111bb576111ba611156565b5b6111c6848285610b5a565b509392505050565b600082601f8301126111e3576111e26109a9565b5b81516111f384826020860161118c565b91505092915050565b600060408284031215611212576112116110d1565b5b61121c6040611136565b9050600082015167ffffffffffffffff81111561123c5761123b611151565b5b611248848285016111ce565b600083015250602061125c848285016110bc565b60208301525092915050565b6000806040838503121561127f5761127e610969565b5b600061128d858286016110bc565b925050602083015167ffffffffffffffff8111156112ae576112ad61096e565b5b6112ba858286016111fc565b9150509250929050565b60006020820190506112d96000830184610eb5565b92915050565b600481106112ec57600080fd5b50565b6000815190506112fe816112df565b92915050565b61130d81610d7a565b811461131857600080fd5b50565b60008151905061132a81611304565b92915050565b60006101608284031215611347576113466110d1565b5b611352610160611136565b9050600082015167ffffffffffffffff81111561137257611371611151565b5b61137e848285016111ce565b600083015250602082015167ffffffffffffffff8111156113a2576113a1611151565b5b6113ae848285016111ce565b60208301525060406113c284828501610fad565b60408301525060606113d6848285016112ef565b60608301525060806113ea848285016110bc565b60808301525060a06113fe848285016110bc565b60a08301525060c082015167ffffffffffffffff81111561142257611421611151565b5b61142e848285016111ce565b60c08301525060e06114428482850161131b565b60e0830152506101006114578482850161131b565b6101008301525061012061146d848285016110bc565b61012083015250610140611483848285016110bc565b6101408301525092915050565b6000602082840312156114a6576114a5610969565b5b600082015167ffffffffffffffff8111156114c4576114c361096e565b5b6114d084828501611330565b9150509291505056fea2646970667358221220909639086b03bb38b32aaba32e58073b8f74fe67a6fa3e21df62be2b2faddaed64736f6c63430008140033", + "bytecode": "0x60808060405260008055610db890816100168239f3fe608080604052600436101561001357600080fd5b60003560e01c9081634d9db92b14610938575080634e5a8fe5146108c757806352fce7b11461083f578063668f452b14610714578063922a4b671461059c578063cbc367d41461012b5763f66013d71461006c57600080fd5b34610112576020366003190112610112576004356001600160401b0381116101125760206100a16100ca923690600401610b89565b6040516353266bbb60e01b81523060048201526060602482015293849283926064840191610cf2565b600a6044830152038160006108005af1801561011f576100e957600080fd5b6020813d8211610117575b8161010160209383610cd1565b810103126101125761011290610d13565b600080fd5b3d91506100f4565b6040513d6000823e3d90fd5b34610112576040366003190112610112576024356001600160a01b03811681036101125760405161015b81610c9a565b6060815260606020820152600060408201526000606082015260006080820152600060a082015260405161018e81610cb6565b6060815260606020820152606060408201526060808201526060608082015260c0820152600060e0820152600061010082015260006101208201526000610140820152906000905b60043582106103185782604051906020825261021961020382516101606020860152610180850190610c0c565b6020830151848203601f19016040860152610c0c565b906040810151151560608401526060810151916004831015610302576102ce6101409185946080860152608084015160a086015260a084015160c086015260c084015190601f198682030160e087015260806102bd6102ab610299610287865160a0875260a0870190610c0c565b60208701518682036020880152610c0c565b60408601518582036040870152610c0c565b60608501518482036060860152610c0c565b920151906080818403910152610c0c565b9160e081015160070b61010085015261010081015160070b6101208501526101208101518285015201516101608301520390f35b634e487b7160e01b600052602160045260246000fd5b60405163111d9dbd60e11b81526001600160a01b0382166004820152919250906000816024816108005afa801561011f57600090610362575b61035c915092610c31565b906101d6565b503d806000833e6103738183610cd1565b6020828281010312610112578151906001600160401b03821161011257610160828401828501031261011257604051916103ac83610c9a565b808401516001600160401b038111610112576103cf908386019083870101610d20565b8352602081850101516001600160401b038111610112576103f7908386019083870101610d20565b602084015261040a604082860101610d13565b60408401526060818501015160048110156101125760608401528381016080818101519085015260a0808201519085015260c00151936001600160401b0385116101125760a0858383010184830103126101125760405161046a81610cb6565b8583830101516001600160401b038111610112576104919085840190888686010101610d20565b81526020868484010101516001600160401b038111610112576104bd9085840190888686010101610d20565b60208201526040868484010101516001600160401b038111610112576104ec9085840190888686010101610d20565b60408201526060868484010101516001600160401b0381116101125761051b9085840190888686010101610d20565b6060820152608086848401010151936001600160401b0385116101125761035c9661014095610551928501918686010101610d20565b608082015260c085015261056960e083830101610d74565b60e085015261057d61010083830101610d74565b6101008501520161012081810151908401520151610140820152610351565b34610112576105aa36610bb6565b91604051916353266bbb60e01b8084523060048501526024916060838601526105d7606486018783610cf2565b93600a604487015260209586818061080098038160008a5af1801561011f576106e0575b5091859391949260005b81811061067c57505060009061063760609596604051998a978896879586523060048701528501526064840191610cf2565b600a604483015203925af1801561011f5761064e57005b81813d8311610675575b6106628183610cd1565b810103126101125761067390610d13565b005b503d610658565b90919395929450303b156101125760405163f66013d760e01b8152600481018890526106c59190600081806106b48a82018e8a610cf2565b038183305af16106d1575b50610c31565b90869492959391610605565b6106da90610c56565b896106bf565b8681813d831161070d575b6106f58183610cd1565b810103126101125761070690610d13565b50876105fb565b503d6106eb565b3461011257602080600319360112610112576004356001600160401b0380821161011257600061074b610788933690600401610b89565b828660405161075981610c7f565b606081520152604051948592839263120bba7360e11b8452306004850152604060248501526044840191610cf2565b03816108005afa90811561011f576000926000926107d2575b505060405192839283526040818401526107c682516040808601526080850190610c0c565b91015160608301520390f35b915091503d806000833e6107e68183610cd1565b81016040828203126101125781519184810151908482116101125701604081830312610112576040519361081985610c7f565b815190811161011257859261082f918301610d20565b84520151838301529083806107a1565b346101125761084d36610bb6565b61085b600093929354610c31565b60005560005b82811061086a57005b303b156101125760405163f66013d760e01b815260206004820152906000828061089860248201878a610cf2565b038183305af191821561011f576108b3926108b85750610c31565b610861565b6108c190610c56565b856106bf565b34610112576108d536610bb6565b91906108e2600054610c31565b60005560005b8281106108f157005b303b156101125760405163f66013d760e01b815260206004820152610933919060008180610923602482018a89610cf2565b038183305af16108b85750610c31565b6108e8565b34610112576060366003190112610112576044356001600160401b03811161011257610968903690600401610b89565b6353266bbb60e01b8352306004840152606060248401529160208180610992606482018787610cf2565b600a6044830152038160006108005af1801561011f57610b50575b5060005b6004358110610a23576040516353266bbb60e01b815230600482015260606024820152602081806109e6606482018888610cf2565b600a6044830152038160006108005af1801561011f57610a0257005b6020813d602011610a1b575b8161066260209383610cd1565b3d9150610a0e565b90303b156101125760405163f66013d760e01b81526020600482015260008180610a51602482018887610cf2565b038183305af19081610b41575b50610b37576040516353266bbb60e01b81523060048201526060602482015260208180610a8f606482018887610cf2565b600a6044830152038160006108005af1801561011f57610afe575b5060005b6024358110610ac7575090610ac290610c31565b6109b1565b303b156101125760405163f66013d760e01b815260206004820152610af9919060008180610923602482018a89610cf2565b610aae565b6020813d602011610b2f575b81610b1760209383610cd1565b8101031261011257610b2890610d13565b5083610aaa565b3d9150610b0a565b90610ac290610c31565b610b4a90610c56565b84610a5e565b6020813d602011610b81575b81610b6960209383610cd1565b8101031261011257610b7a90610d13565b50826109ad565b3d9150610b5c565b9181601f84011215610112578235916001600160401b038311610112576020838186019501011161011257565b9060406003198301126101125760043591602435906001600160401b03821161011257610be591600401610b89565b9091565b60005b838110610bfc5750506000910152565b8181015183820152602001610bec565b90602091610c2581518092818552858086019101610be9565b601f01601f1916010190565b6000198114610c405760010190565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038111610c6957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117610c6957604052565b61016081019081106001600160401b03821117610c6957604052565b60a081019081106001600160401b03821117610c6957604052565b90601f801991011681019081106001600160401b03821117610c6957604052565b908060209392818452848401376000828201840152601f01601f1916010190565b5190811515820361011257565b81601f820112156101125780516001600160401b038111610c695760405192610d53601f8301601f191660200185610cd1565b8184526020828401011161011257610d719160208085019101610be9565b90565b51908160070b82036101125756fea26469706673582212204b99277ce78a90870d2a3dd8b1cfe0c936d27451384c2c734af37693a846925564736f6c63430008140033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c9081634d9db92b14610938575080634e5a8fe5146108c757806352fce7b11461083f578063668f452b14610714578063922a4b671461059c578063cbc367d41461012b5763f66013d71461006c57600080fd5b34610112576020366003190112610112576004356001600160401b0381116101125760206100a16100ca923690600401610b89565b6040516353266bbb60e01b81523060048201526060602482015293849283926064840191610cf2565b600a6044830152038160006108005af1801561011f576100e957600080fd5b6020813d8211610117575b8161010160209383610cd1565b810103126101125761011290610d13565b600080fd5b3d91506100f4565b6040513d6000823e3d90fd5b34610112576040366003190112610112576024356001600160a01b03811681036101125760405161015b81610c9a565b6060815260606020820152600060408201526000606082015260006080820152600060a082015260405161018e81610cb6565b6060815260606020820152606060408201526060808201526060608082015260c0820152600060e0820152600061010082015260006101208201526000610140820152906000905b60043582106103185782604051906020825261021961020382516101606020860152610180850190610c0c565b6020830151848203601f19016040860152610c0c565b906040810151151560608401526060810151916004831015610302576102ce6101409185946080860152608084015160a086015260a084015160c086015260c084015190601f198682030160e087015260806102bd6102ab610299610287865160a0875260a0870190610c0c565b60208701518682036020880152610c0c565b60408601518582036040870152610c0c565b60608501518482036060860152610c0c565b920151906080818403910152610c0c565b9160e081015160070b61010085015261010081015160070b6101208501526101208101518285015201516101608301520390f35b634e487b7160e01b600052602160045260246000fd5b60405163111d9dbd60e11b81526001600160a01b0382166004820152919250906000816024816108005afa801561011f57600090610362575b61035c915092610c31565b906101d6565b503d806000833e6103738183610cd1565b6020828281010312610112578151906001600160401b03821161011257610160828401828501031261011257604051916103ac83610c9a565b808401516001600160401b038111610112576103cf908386019083870101610d20565b8352602081850101516001600160401b038111610112576103f7908386019083870101610d20565b602084015261040a604082860101610d13565b60408401526060818501015160048110156101125760608401528381016080818101519085015260a0808201519085015260c00151936001600160401b0385116101125760a0858383010184830103126101125760405161046a81610cb6565b8583830101516001600160401b038111610112576104919085840190888686010101610d20565b81526020868484010101516001600160401b038111610112576104bd9085840190888686010101610d20565b60208201526040868484010101516001600160401b038111610112576104ec9085840190888686010101610d20565b60408201526060868484010101516001600160401b0381116101125761051b9085840190888686010101610d20565b6060820152608086848401010151936001600160401b0385116101125761035c9661014095610551928501918686010101610d20565b608082015260c085015261056960e083830101610d74565b60e085015261057d61010083830101610d74565b6101008501520161012081810151908401520151610140820152610351565b34610112576105aa36610bb6565b91604051916353266bbb60e01b8084523060048501526024916060838601526105d7606486018783610cf2565b93600a604487015260209586818061080098038160008a5af1801561011f576106e0575b5091859391949260005b81811061067c57505060009061063760609596604051998a978896879586523060048701528501526064840191610cf2565b600a604483015203925af1801561011f5761064e57005b81813d8311610675575b6106628183610cd1565b810103126101125761067390610d13565b005b503d610658565b90919395929450303b156101125760405163f66013d760e01b8152600481018890526106c59190600081806106b48a82018e8a610cf2565b038183305af16106d1575b50610c31565b90869492959391610605565b6106da90610c56565b896106bf565b8681813d831161070d575b6106f58183610cd1565b810103126101125761070690610d13565b50876105fb565b503d6106eb565b3461011257602080600319360112610112576004356001600160401b0380821161011257600061074b610788933690600401610b89565b828660405161075981610c7f565b606081520152604051948592839263120bba7360e11b8452306004850152604060248501526044840191610cf2565b03816108005afa90811561011f576000926000926107d2575b505060405192839283526040818401526107c682516040808601526080850190610c0c565b91015160608301520390f35b915091503d806000833e6107e68183610cd1565b81016040828203126101125781519184810151908482116101125701604081830312610112576040519361081985610c7f565b815190811161011257859261082f918301610d20565b84520151838301529083806107a1565b346101125761084d36610bb6565b61085b600093929354610c31565b60005560005b82811061086a57005b303b156101125760405163f66013d760e01b815260206004820152906000828061089860248201878a610cf2565b038183305af191821561011f576108b3926108b85750610c31565b610861565b6108c190610c56565b856106bf565b34610112576108d536610bb6565b91906108e2600054610c31565b60005560005b8281106108f157005b303b156101125760405163f66013d760e01b815260206004820152610933919060008180610923602482018a89610cf2565b038183305af16108b85750610c31565b6108e8565b34610112576060366003190112610112576044356001600160401b03811161011257610968903690600401610b89565b6353266bbb60e01b8352306004840152606060248401529160208180610992606482018787610cf2565b600a6044830152038160006108005af1801561011f57610b50575b5060005b6004358110610a23576040516353266bbb60e01b815230600482015260606024820152602081806109e6606482018888610cf2565b600a6044830152038160006108005af1801561011f57610a0257005b6020813d602011610a1b575b8161066260209383610cd1565b3d9150610a0e565b90303b156101125760405163f66013d760e01b81526020600482015260008180610a51602482018887610cf2565b038183305af19081610b41575b50610b37576040516353266bbb60e01b81523060048201526060602482015260208180610a8f606482018887610cf2565b600a6044830152038160006108005af1801561011f57610afe575b5060005b6024358110610ac7575090610ac290610c31565b6109b1565b303b156101125760405163f66013d760e01b815260206004820152610af9919060008180610923602482018a89610cf2565b610aae565b6020813d602011610b2f575b81610b1760209383610cd1565b8101031261011257610b2890610d13565b5083610aaa565b3d9150610b0a565b90610ac290610c31565b610b4a90610c56565b84610a5e565b6020813d602011610b81575b81610b6960209383610cd1565b8101031261011257610b7a90610d13565b50826109ad565b3d9150610b5c565b9181601f84011215610112578235916001600160401b038311610112576020838186019501011161011257565b9060406003198301126101125760043591602435906001600160401b03821161011257610be591600401610b89565b9091565b60005b838110610bfc5750506000910152565b8181015183820152602001610bec565b90602091610c2581518092818552858086019101610be9565b601f01601f1916010190565b6000198114610c405760010190565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038111610c6957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117610c6957604052565b61016081019081106001600160401b03821117610c6957604052565b60a081019081106001600160401b03821117610c6957604052565b90601f801991011681019081106001600160401b03821117610c6957604052565b908060209392818452848401376000828201840152601f01601f1916010190565b5190811515820361011257565b81601f820112156101125780516001600160401b038111610c695760405192610d53601f8301601f191660200185610cd1565b8184526020828401011161011257610d719160208085019101610be9565b90565b51908160070b82036101125756fea26469706673582212204b99277ce78a90870d2a3dd8b1cfe0c936d27451384c2c734af37693a846925564736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/precompiles/werc20/testdata/WEVMOS9TestCaller.json b/precompiles/werc20/testdata/WEVMOS9TestCaller.json index 58502611d..dfcd6ca3d 100644 --- a/precompiles/werc20/testdata/WEVMOS9TestCaller.json +++ b/precompiles/werc20/testdata/WEVMOS9TestCaller.json @@ -72,8 +72,8 @@ "type": "function" } ], - "bytecode": "0x60a060405234801561001057600080fd5b506040516105a23803806105a2833981810160405281019061003291906100d6565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506000808190555050610103565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a382610078565b9050919050565b6100b381610098565b81146100be57600080fd5b50565b6000815190506100d0816100aa565b92915050565b6000602082840312156100ec576100eb610073565b5b60006100fa848285016100c1565b91505092915050565b60805161047e6101246000396000818160c901526101fc015261047e6000f3fe6080604052600436106100345760003560e01c80635dab6f8c1461003957806361bc221a146100555780637cf5b4fc14610080575b600080fd5b610053600480360381019061004e919061025b565b6100ab565b005b34801561006157600080fd5b5061006a6101f4565b60405161007791906102b4565b60405180910390f35b34801561008c57600080fd5b506100956101fa565b6040516100a29190610310565b60405180910390f35b6000808154809291906100bd9061035a565b919050555060003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561012f57600080fd5b505af1158015610143573d6000803e3d6000fd5b5050505050821561019057600061018f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610186906103ff565b60405180910390fd5b5b6000808154809291906101a29061041f565b919050555081156101ef5760006101ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e5906103ff565b60405180910390fd5b5b505050565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080fd5b60008115159050919050565b61023881610223565b811461024357600080fd5b50565b6000813590506102558161022f565b92915050565b600080604083850312156102725761027161021e565b5b600061028085828601610246565b925050602061029185828601610246565b9150509250929050565b6000819050919050565b6102ae8161029b565b82525050565b60006020820190506102c960008301846102a5565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102fa826102cf565b9050919050565b61030a816102ef565b82525050565b60006020820190506103256000830184610301565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103658261029b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036103975761039661032b565b5b600182019050919050565b600082825260208201905092915050565b7f7265766572742068657265000000000000000000000000000000000000000000600082015250565b60006103e9600b836103a2565b91506103f4826103b3565b602082019050919050565b60006020820190508181036000830152610418816103dc565b9050919050565b600061042a8261029b565b91506000820361043d5761043c61032b565b5b60018203905091905056fea2646970667358221220207e35291d341f7545d914a2b088f2b46ffbbb02a05c064466cf62ddc7a0fec164736f6c63430008140033", - "deployedBytecode": "0x6080604052600436106100345760003560e01c80635dab6f8c1461003957806361bc221a146100555780637cf5b4fc14610080575b600080fd5b610053600480360381019061004e919061025b565b6100ab565b005b34801561006157600080fd5b5061006a6101f4565b60405161007791906102b4565b60405180910390f35b34801561008c57600080fd5b506100956101fa565b6040516100a29190610310565b60405180910390f35b6000808154809291906100bd9061035a565b919050555060003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561012f57600080fd5b505af1158015610143573d6000803e3d6000fd5b5050505050821561019057600061018f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610186906103ff565b60405180910390fd5b5b6000808154809291906101a29061041f565b919050555081156101ef5760006101ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e5906103ff565b60405180910390fd5b5b505050565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080fd5b60008115159050919050565b61023881610223565b811461024357600080fd5b50565b6000813590506102558161022f565b92915050565b600080604083850312156102725761027161021e565b5b600061028085828601610246565b925050602061029185828601610246565b9150509250929050565b6000819050919050565b6102ae8161029b565b82525050565b60006020820190506102c960008301846102a5565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102fa826102cf565b9050919050565b61030a816102ef565b82525050565b60006020820190506103256000830184610301565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103658261029b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036103975761039661032b565b5b600182019050919050565b600082825260208201905092915050565b7f7265766572742068657265000000000000000000000000000000000000000000600082015250565b60006103e9600b836103a2565b91506103f4826103b3565b602082019050919050565b60006020820190508181036000830152610418816103dc565b9050919050565b600061042a8261029b565b91506000820361043d5761043c61032b565b5b60018203905091905056fea2646970667358221220207e35291d341f7545d914a2b088f2b46ffbbb02a05c064466cf62ddc7a0fec164736f6c63430008140033", + "bytecode": "0x60a03461007357601f6102b138819003918201601f19168301916001600160401b038311848410176100785780849260209460405283398101031261007357516001600160a01b03811681036100735760805260008055604051610222908161008f82396080518181816058015260e40152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604081815260048036101561001557600080fd5b600092833560e01c9182635dab6f8c146100a7575050806361bc221a1461008b57637cf5b4fc1461004557600080fd5b34610087578160031936011261008757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b5034610087578160031936011261008757602091549051908152f35b90928092506003193601126101b557803580151581036101b1576024359384151585036101ad578554600019949085811461019a576001018755867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156100875785848092630d0e30db60e41b825234905af1801561019057610162575b505061014a57835490811561014f575001825561014a5780f35b6101b9565b634e487b7160e01b855260119052602484fd5b67ffffffffffffffff829793971161017d5752933880610130565b634e487b7160e01b835260418452602483fd5b81513d89823e3d90fd5b634e487b7160e01b885260118552602488fd5b8580fd5b8480fd5b8380fd5b60405162461bcd60e51b815260206004820152600b60248201526a726576657274206865726560a81b6044820152606490fdfea2646970667358221220b32282c4091e7b1e0ef38cfff23aebf1e60aad8d2696f353a69484cad09862a964736f6c63430008140033", + "deployedBytecode": "0x6080604081815260048036101561001557600080fd5b600092833560e01c9182635dab6f8c146100a7575050806361bc221a1461008b57637cf5b4fc1461004557600080fd5b34610087578160031936011261008757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b5034610087578160031936011261008757602091549051908152f35b90928092506003193601126101b557803580151581036101b1576024359384151585036101ad578554600019949085811461019a576001018755867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156100875785848092630d0e30db60e41b825234905af1801561019057610162575b505061014a57835490811561014f575001825561014a5780f35b6101b9565b634e487b7160e01b855260119052602484fd5b67ffffffffffffffff829793971161017d5752933880610130565b634e487b7160e01b835260418452602483fd5b81513d89823e3d90fd5b634e487b7160e01b885260118552602488fd5b8580fd5b8480fd5b8380fd5b60405162461bcd60e51b815260206004820152600b60248201526a726576657274206865726560a81b6044820152606490fdfea2646970667358221220b32282c4091e7b1e0ef38cfff23aebf1e60aad8d2696f353a69484cad09862a964736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/tests/integration/precompiles/erc20/test_integration.go b/tests/integration/precompiles/erc20/test_integration.go index 20869e598..43073db41 100644 --- a/tests/integration/precompiles/erc20/test_integration.go +++ b/tests/integration/precompiles/erc20/test_integration.go @@ -324,12 +324,12 @@ func TestIntegrationTestSuite(t *testing.T, create network.CreateEvmApp, options }, ) - Expect(res.GasUsed > expGasUsedLowerBound).To(BeTrue(), "expected different gas used") - Expect(res.GasUsed < expGasUsedUpperBound).To(BeTrue(), "expected different gas used") + Expect(res.GasUsed).To(BeNumerically(">", expGasUsedLowerBound), "expected more gas used") + Expect(res.GasUsed).To(BeNumerically("<", expGasUsedUpperBound), "expected less gas used") }, // FIXME: The gas used on the precompile is much higher than on the EVM Entry(" - direct call", directCall, int64(30_000), int64(31_000)), - Entry(" - through erc20 contract", erc20Call, int64(54_000), int64(54_500)), + Entry(" - through erc20 contract", erc20Call, int64(53_000), int64(54_500)), Entry(" - through erc20 v5 contract", erc20V5Call, int64(52_000), int64(52_200)), ) diff --git a/tests/solidity/suites/precompiles/test/1_staking/1_create_and_edit_validator.js b/tests/solidity/suites/precompiles/test/1_staking/1_create_and_edit_validator.js index 9150403e9..6ee567d23 100644 --- a/tests/solidity/suites/precompiles/test/1_staking/1_create_and_edit_validator.js +++ b/tests/solidity/suites/precompiles/test/1_staking/1_create_and_edit_validator.js @@ -7,7 +7,7 @@ const { findEvent, waitWithTimeout, RETRY_DELAY_FUNC } = require('../common') -describe('StakingI – createValidator', function () { +describe('StakingI – createValidator', function() { const GAS_LIMIT = DEFAULT_GAS_LIMIT // skip gas estimation for simplicity let staking, signer @@ -19,7 +19,7 @@ describe('StakingI – createValidator', function () { staking = await hre.ethers.getContractAt('StakingI', STAKING_PRECOMPILE_ADDRESS) }) - it('should create a validator successfully', async function () { + it('should create a validator successfully', async function() { // Define the validator’s descriptive metadata const description = { moniker: 'TestValidator', @@ -49,7 +49,7 @@ describe('StakingI – createValidator', function () { signer.address, pubkey, deposit, - {gasLimit: GAS_LIMIT} + { gasLimit: GAS_LIMIT } ) // Wait for 2 confirmations and log the transaction hash @@ -81,7 +81,11 @@ describe('StakingI – createValidator', function () { expect(info.status).to.equal(3n) // BondStatus.Bonded === 3 expect(info.tokens).to.equal(deposit) expect(info.delegatorShares).to.be.gt(0n) - expect(info.description).to.equal(description.details) + expect(info.description.moniker).to.equal(description.moniker) + expect(info.description.identity).to.equal(description.identity) + expect(info.description.website).to.equal(description.website) + expect(info.description.securityContact).to.equal(description.securityContact) + expect(info.description.details).to.equal(description.details) expect(info.unbondingHeight).to.equal(0n) expect(info.unbondingTime).to.equal(0n) expect(info.commission).to.equal(commissionRates.rate) @@ -90,13 +94,12 @@ describe('StakingI – createValidator', function () { // --- editValidator --- // prepare edit parameters: only update 'details' - const updatedDetails = 'updated unit-test validator' const editDescription = { moniker: '[do-not-modify]', identity: '[do-not-modify]', website: '[do-not-modify]', securityContact: '[do-not-modify]', - details: updatedDetails, + details: 'updated unit-test validator', } const DO_NOT_MODIFY = -1 @@ -106,7 +109,7 @@ describe('StakingI – createValidator', function () { signer.address, DO_NOT_MODIFY, // leave commissionRate unchanged DO_NOT_MODIFY, // leave minSelfDelegation unchanged - {gasLimit: GAS_LIMIT} + { gasLimit: GAS_LIMIT } ) const editReceipt = await waitWithTimeout(editTx, 20000, RETRY_DELAY_FUNC) console.log('EditValidator tx hash:', editTx.hash) @@ -120,7 +123,13 @@ describe('StakingI – createValidator', function () { // verify on-chain state after edit const updatedInfo = parseValidator(await staking.validator(signer.address)) - expect(updatedInfo.description).to.equal(updatedDetails) + // only the "details" field is updated: + expect(updatedInfo.description.details).to.equal(editDescription.details) + // the other fields are unchanged: + expect(updatedInfo.description.moniker).to.equal(description.moniker) + expect(updatedInfo.description.identity).to.equal(description.identity) + expect(updatedInfo.description.website).to.equal(description.website) + expect(updatedInfo.description.securityContact).to.equal(description.securityContact) const pageReq = { key: '0x', offset: 0, limit: 100, countTotal: false, reverse: false } const out = await staking.validators('', pageReq) @@ -128,4 +137,4 @@ describe('StakingI – createValidator', function () { expect(validators.length).to.be.gte(2) expect(validators[1].operatorAddress.toLowerCase()).to.equal(signer.address.toLowerCase()) }) -}) \ No newline at end of file +}) diff --git a/tests/solidity/suites/precompiles/test/common.js b/tests/solidity/suites/precompiles/test/common.js index c85f34458..8f8e518c2 100644 --- a/tests/solidity/suites/precompiles/test/common.js +++ b/tests/solidity/suites/precompiles/test/common.js @@ -13,7 +13,7 @@ const WERC20_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' const DEFAULT_GAS_LIMIT = 1_000_000 const LARGE_GAS_LIMIT = 10_000_000 -const RETRY_DELAY_FUNC = (attempt) => 500 * Math.pow(2, attempt) +const RETRY_DELAY_FUNC = (attempt) => 500 * Math.pow(2, attempt) function waitWithTimeout(txn, timeoutMs, retryDelayFn = (attempt) => 1000) { @@ -43,7 +43,7 @@ function waitWithTimeout(txn, timeoutMs, retryDelayFn = (attempt) => 1000) { } // Helper to convert the raw tuple returned by staking.validator() into an object -function parseValidator (raw) { +function parseValidator(raw) { return { operatorAddress: raw[0], consensusPubkey: raw[1], @@ -51,7 +51,13 @@ function parseValidator (raw) { status: raw[3], tokens: raw[4], delegatorShares: raw[5], - description: raw[6], + description: { + moniker: raw[6][0], + identity: raw[6][1], + website: raw[6][2], + securityContact: raw[6][3], + details: raw[6][4], + }, unbondingHeight: raw[7], unbondingTime: raw[8], commission: raw[9], @@ -60,7 +66,7 @@ function parseValidator (raw) { } // Utility to parse logs and return the first matching event by name -function findEvent (logs, iface, eventName) { +function findEvent(logs, iface, eventName) { for (const log of logs) { try { const parsed = iface.parseLog(log) @@ -89,4 +95,4 @@ module.exports = { parseValidator, findEvent, waitWithTimeout -} \ No newline at end of file +} diff --git a/x/erc20/keeper/testdata/ERC20DirectBalanceManipulation.json b/x/erc20/keeper/testdata/ERC20DirectBalanceManipulation.json index da4c529ab..e0ebe7dd3 100644 --- a/x/erc20/keeper/testdata/ERC20DirectBalanceManipulation.json +++ b/x/erc20/keeper/testdata/ERC20DirectBalanceManipulation.json @@ -660,8 +660,8 @@ "type": "function" } ], - "bytecode": "0x6080604052734dc6ac40af078661fc43823086e1513635eeab14600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162003dca38038062003dca83398181016040528101906200008c9190620006ef565b6040518060400160405280601e81526020017f455243323044697265637442616c616e63654d616e6970756c6174696f6e00008152506040518060400160405280601e81526020017f455243323044697265637442616c616e63654d616e6970756c6174696f6e0000815250818181600590816200010b919062000991565b5080600690816200011d919062000991565b5050506000600760006101000a81548160ff0219169083151502179055506200015f6000801b620001536200021160201b60201c565b6200021960201b60201c565b620001a07f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001946200021160201b60201c565b6200021960201b60201c565b620001e17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a620001d56200021160201b60201c565b6200021960201b60201c565b5050620001f86000801b336200021960201b60201c565b6200020a33826200022f60201b60201c565b5062000c2b565b600033905090565b6200022b82826200039d60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002989062000ad9565b60405180910390fd5b620002b560008383620003db60201b60201c565b8060046000828254620002c9919062000b2a565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200037d919062000b76565b60405180910390a36200039960008383620003f360201b60201c565b5050565b620003af8282620003f860201b60201c565b620003d68160016000858152602001908152602001600020620004e960201b90919060201c565b505050565b620003ee8383836200052160201b60201c565b505050565b505050565b6200040a82826200058c60201b60201c565b620004e557600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200048a6200021160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000519836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620005f660201b60201c565b905092915050565b620005348383836200067060201b60201c565b620005446200067560201b60201c565b1562000587576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200057e9062000c09565b60405180910390fd5b505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200060a83836200068c60201b60201c565b620006655782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506200066a565b600090505b92915050565b505050565b6000600760009054906101000a900460ff16905090565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b6000819050919050565b620006c981620006b4565b8114620006d557600080fd5b50565b600081519050620006e981620006be565b92915050565b600060208284031215620007085762000707620006af565b5b60006200071884828501620006d8565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007a357607f821691505b602082108103620007b957620007b86200075b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007e4565b6200082f8683620007e4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008726200086c6200086684620006b4565b62000847565b620006b4565b9050919050565b6000819050919050565b6200088e8362000851565b620008a66200089d8262000879565b848454620007f1565b825550505050565b600090565b620008bd620008ae565b620008ca81848462000883565b505050565b5b81811015620008f257620008e6600082620008b3565b600181019050620008d0565b5050565b601f82111562000941576200090b81620007bf565b6200091684620007d4565b8101602085101562000926578190505b6200093e6200093585620007d4565b830182620008cf565b50505b505050565b600082821c905092915050565b6000620009666000198460080262000946565b1980831691505092915050565b600062000981838362000953565b9150826002028217905092915050565b6200099c8262000721565b67ffffffffffffffff811115620009b857620009b76200072c565b5b620009c482546200078a565b620009d1828285620008f6565b600060209050601f83116001811462000a095760008415620009f4578287015190505b62000a00858262000973565b86555062000a70565b601f19841662000a1986620007bf565b60005b8281101562000a435784890151825560018201915060208501945060208101905062000a1c565b8683101562000a63578489015162000a5f601f89168262000953565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac1601f8362000a78565b915062000ace8262000a89565b602082019050919050565b6000602082019050818103600083015262000af48162000ab2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b3782620006b4565b915062000b4483620006b4565b925082820190508082111562000b5f5762000b5e62000afb565b5b92915050565b62000b7081620006b4565b82525050565b600060208201905062000b8d600083018462000b65565b92915050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b600062000bf1602a8362000a78565b915062000bfe8262000b93565b604082019050919050565b6000602082019050818103600083015262000c248162000be2565b9050919050565b61318f8062000c3b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d53913931461052d578063d547741f1461054b578063dd62ed3e14610567578063e63ab1e914610597576101c4565b8063a457c2d71461049d578063a9059cbb146104cd578063ca15c873146104fd576101c4565b80639010d07c116100d35780639010d07c1461040157806391d148541461043157806395d89b4114610461578063a217fddf1461047f576101c4565b806370a08231146103ab57806379cc6790146103db5780638456cb59146103f7576101c4565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a1461034b57806340c10f191461035557806342966c68146103715780635c975abb1461038d576101c4565b8063313ce567146102e157806336568abe146102ff578063395093511461031b576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd14610265578063248a9ca3146102955780632f2ff15d146102c5576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de9190612008565b6105b5565b6040516101f09190612050565b60405180910390f35b61020161062f565b60405161020e91906120fb565b60405180910390f35b610231600480360381019061022c91906121b1565b6106c1565b60405161023e9190612050565b60405180910390f35b61024f6106e4565b60405161025c9190612200565b60405180910390f35b61027f600480360381019061027a919061221b565b6106ee565b60405161028c9190612050565b60405180910390f35b6102af60048036038101906102aa91906122a4565b61071d565b6040516102bc91906122e0565b60405180910390f35b6102df60048036038101906102da91906122fb565b61073c565b005b6102e961075d565b6040516102f69190612357565b60405180910390f35b610319600480360381019061031491906122fb565b610766565b005b610335600480360381019061033091906121b1565b6107e9565b6040516103429190612050565b60405180910390f35b610353610820565b005b61036f600480360381019061036a91906121b1565b61089a565b005b61038b60048036038101906103869190612372565b610918565b005b61039561092c565b6040516103a29190612050565b60405180910390f35b6103c560048036038101906103c0919061239f565b610943565b6040516103d29190612200565b60405180910390f35b6103f560048036038101906103f091906121b1565b61098c565b005b6103ff6109ac565b005b61041b600480360381019061041691906123cc565b610a26565b604051610428919061241b565b60405180910390f35b61044b600480360381019061044691906122fb565b610a55565b6040516104589190612050565b60405180910390f35b610469610abf565b60405161047691906120fb565b60405180910390f35b610487610b51565b60405161049491906122e0565b60405180910390f35b6104b760048036038101906104b291906121b1565b610b58565b6040516104c49190612050565b60405180910390f35b6104e760048036038101906104e291906121b1565b610bcf565b6040516104f49190612050565b60405180910390f35b610517600480360381019061051291906122a4565b610c2c565b6040516105249190612200565b60405180910390f35b610535610c50565b60405161054291906122e0565b60405180910390f35b610565600480360381019061056091906122fb565b610c74565b005b610581600480360381019061057c9190612436565b610c95565b60405161058e9190612200565b60405180910390f35b61059f610d1c565b6040516105ac91906122e0565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610628575061062782610d40565b5b9050919050565b60606005805461063e906124a5565b80601f016020809104026020016040519081016040528092919081815260200182805461066a906124a5565b80156106b75780601f1061068c576101008083540402835291602001916106b7565b820191906000526020600020905b81548152906001019060200180831161069a57829003601f168201915b5050505050905090565b6000806106cc610dba565b90506106d9818585610dc2565b600191505092915050565b6000600454905090565b6000806106f9610dba565b9050610706858285610f8b565b610711858585611017565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6107458261071d565b61074e81611290565b61075883836112a4565b505050565b60006012905090565b61076e610dba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612548565b60405180910390fd5b6107e582826112d8565b5050565b6000806107f4610dba565b90506108158185856108068589610c95565b6108109190612597565b610dc2565b600191505092915050565b6108517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61084c610dba565b610a55565b610890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108879061263d565b60405180910390fd5b61089861130c565b565b6108cb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66108c6610dba565b610a55565b61090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906126cf565b60405180910390fd5b610914828261136f565b5050565b610929610923610dba565b826114c6565b50565b6000600760009054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61099e82610998610dba565b83610f8b565b6109a882826114c6565b5050565b6109dd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109d8610dba565b610a55565b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612761565b60405180910390fd5b610a24611695565b565b6000610a4d82600160008681526020019081526020016000206116f890919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060068054610ace906124a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa906124a5565b8015610b475780601f10610b1c57610100808354040283529160200191610b47565b820191906000526020600020905b815481529060010190602001808311610b2a57829003601f168201915b5050505050905090565b6000801b81565b600080610b63610dba565b90506000610b718286610c95565b905083811015610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad906127f3565b60405180910390fd5b610bc38286868403610dc2565b60019250505092915050565b600080600283610bdf9190612842565b9050610c18600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168285610c139190612873565b611712565b50610c238482611712565b91505092915050565b6000610c4960016000848152602001908152602001600020611735565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610c7d8261071d565b610c8681611290565b610c9083836112d8565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610db35750610db28261174a565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890612919565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e97906129ab565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f7e9190612200565b60405180910390a3505050565b6000610f978484610c95565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110115781811015611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa90612a17565b60405180910390fd5b6110108484848403610dc2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d90612aa9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90612b3b565b60405180910390fd5b6111008383836117b4565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e90612bcd565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112779190612200565b60405180910390a361128a8484846117c4565b50505050565b6112a18161129c610dba565b6117c9565b50565b6112ae828261184e565b6112d3816001600085815260200190815260200160002061192e90919063ffffffff16565b505050565b6112e2828261195e565b6113078160016000858152602001908152602001600020611a3f90919063ffffffff16565b505050565b611314611a6f565b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611358610dba565b604051611365919061241b565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612c39565b60405180910390fd5b6113ea600083836117b4565b80600460008282546113fc9190612597565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114ae9190612200565b60405180910390a36114c2600083836117c4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612ccb565b60405180910390fd5b611541826000836117b4565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90612d5d565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161167c9190612200565b60405180910390a3611690836000846117c4565b505050565b61169d611ab8565b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116e1610dba565b6040516116ee919061241b565b60405180910390a1565b60006117078360000183611b02565b60001c905092915050565b60008061171d610dba565b905061172a818585611017565b600191505092915050565b600061174382600001611b2d565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6117bf838383611b3e565b505050565b505050565b6117d38282610a55565b61184a576117e081611b96565b6117ee8360001c6020611bc3565b6040516020016117ff929190612e51565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184191906120fb565b60405180910390fd5b5050565b6118588282610a55565b61192a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118cf610dba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611956836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611dff565b905092915050565b6119688282610a55565b15611a3b57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119e0610dba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611a67836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611e6f565b905092915050565b611a7761092c565b611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90612ed7565b60405180910390fd5b565b611ac061092c565b15611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790612f43565b60405180910390fd5b565b6000826000018281548110611b1a57611b19612f63565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b611b49838383611f83565b611b5161092c565b15611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890613004565b60405180910390fd5b505050565b6060611bbc8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611bc3565b9050919050565b606060006002836002611bd69190613024565b611be09190612597565b67ffffffffffffffff811115611bf957611bf8613066565b5b6040519080825280601f01601f191660200182016040528015611c2b5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611c6357611c62612f63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611cc757611cc6612f63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d079190613024565b611d119190612597565b90505b6001811115611db1577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611d5357611d52612f63565b5b1a60f81b828281518110611d6a57611d69612f63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611daa90613095565b9050611d14565b5060008414611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec9061310a565b60405180910390fd5b8091505092915050565b6000611e0b8383611f88565b611e64578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611e69565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114611f77576000600182611ea19190612873565b9050600060018660000180549050611eb99190612873565b9050818114611f28576000866000018281548110611eda57611ed9612f63565b5b9060005260206000200154905080876000018481548110611efe57611efd612f63565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611f3c57611f3b61312a565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611f7d565b60009150505b92915050565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fe581611fb0565b8114611ff057600080fd5b50565b60008135905061200281611fdc565b92915050565b60006020828403121561201e5761201d611fab565b5b600061202c84828501611ff3565b91505092915050565b60008115159050919050565b61204a81612035565b82525050565b60006020820190506120656000830184612041565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120a557808201518184015260208101905061208a565b60008484015250505050565b6000601f19601f8301169050919050565b60006120cd8261206b565b6120d78185612076565b93506120e7818560208601612087565b6120f0816120b1565b840191505092915050565b6000602082019050818103600083015261211581846120c2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121488261211d565b9050919050565b6121588161213d565b811461216357600080fd5b50565b6000813590506121758161214f565b92915050565b6000819050919050565b61218e8161217b565b811461219957600080fd5b50565b6000813590506121ab81612185565b92915050565b600080604083850312156121c8576121c7611fab565b5b60006121d685828601612166565b92505060206121e78582860161219c565b9150509250929050565b6121fa8161217b565b82525050565b600060208201905061221560008301846121f1565b92915050565b60008060006060848603121561223457612233611fab565b5b600061224286828701612166565b935050602061225386828701612166565b92505060406122648682870161219c565b9150509250925092565b6000819050919050565b6122818161226e565b811461228c57600080fd5b50565b60008135905061229e81612278565b92915050565b6000602082840312156122ba576122b9611fab565b5b60006122c88482850161228f565b91505092915050565b6122da8161226e565b82525050565b60006020820190506122f560008301846122d1565b92915050565b6000806040838503121561231257612311611fab565b5b60006123208582860161228f565b925050602061233185828601612166565b9150509250929050565b600060ff82169050919050565b6123518161233b565b82525050565b600060208201905061236c6000830184612348565b92915050565b60006020828403121561238857612387611fab565b5b60006123968482850161219c565b91505092915050565b6000602082840312156123b5576123b4611fab565b5b60006123c384828501612166565b91505092915050565b600080604083850312156123e3576123e2611fab565b5b60006123f18582860161228f565b92505060206124028582860161219c565b9150509250929050565b6124158161213d565b82525050565b6000602082019050612430600083018461240c565b92915050565b6000806040838503121561244d5761244c611fab565b5b600061245b85828601612166565b925050602061246c85828601612166565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124bd57607f821691505b6020821081036124d0576124cf612476565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612532602f83612076565b915061253d826124d6565b604082019050919050565b6000602082019050818103600083015261256181612525565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125a28261217b565b91506125ad8361217b565b92508282019050808211156125c5576125c4612568565b5b92915050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b6000612627603983612076565b9150612632826125cb565b604082019050919050565b600060208201905081810360008301526126568161261a565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b60006126b9603683612076565b91506126c48261265d565b604082019050919050565b600060208201905081810360008301526126e8816126ac565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b600061274b603783612076565b9150612756826126ef565b604082019050919050565b6000602082019050818103600083015261277a8161273e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006127dd602583612076565b91506127e882612781565b604082019050919050565b6000602082019050818103600083015261280c816127d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284d8261217b565b91506128588361217b565b92508261286857612867612813565b5b828204905092915050565b600061287e8261217b565b91506128898361217b565b92508282039050818111156128a1576128a0612568565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612903602483612076565b915061290e826128a7565b604082019050919050565b60006020820190508181036000830152612932816128f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612995602283612076565b91506129a082612939565b604082019050919050565b600060208201905081810360008301526129c481612988565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612a01601d83612076565b9150612a0c826129cb565b602082019050919050565b60006020820190508181036000830152612a30816129f4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a93602583612076565b9150612a9e82612a37565b604082019050919050565b60006020820190508181036000830152612ac281612a86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b25602383612076565b9150612b3082612ac9565b604082019050919050565b60006020820190508181036000830152612b5481612b18565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612bb7602683612076565b9150612bc282612b5b565b604082019050919050565b60006020820190508181036000830152612be681612baa565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612c23601f83612076565b9150612c2e82612bed565b602082019050919050565b60006020820190508181036000830152612c5281612c16565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cb5602183612076565b9150612cc082612c59565b604082019050919050565b60006020820190508181036000830152612ce481612ca8565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d47602283612076565b9150612d5282612ceb565b604082019050919050565b60006020820190508181036000830152612d7681612d3a565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612dbe601783612d7d565b9150612dc982612d88565b601782019050919050565b6000612ddf8261206b565b612de98185612d7d565b9350612df9818560208601612087565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612e3b601183612d7d565b9150612e4682612e05565b601182019050919050565b6000612e5c82612db1565b9150612e688285612dd4565b9150612e7382612e2e565b9150612e7f8284612dd4565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612ec1601483612076565b9150612ecc82612e8b565b602082019050919050565b60006020820190508181036000830152612ef081612eb4565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612f2d601083612076565b9150612f3882612ef7565b602082019050919050565b60006020820190508181036000830152612f5c81612f20565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000612fee602a83612076565b9150612ff982612f92565b604082019050919050565b6000602082019050818103600083015261301d81612fe1565b9050919050565b600061302f8261217b565b915061303a8361217b565b92508282026130488161217b565b9150828204841483151761305f5761305e612568565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006130a08261217b565b9150600082036130b3576130b2612568565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006130f4602083612076565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122045a663a6268be58b34e06e44a98d69ac00c67812b2996505d21fd5773559660264736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d53913931461052d578063d547741f1461054b578063dd62ed3e14610567578063e63ab1e914610597576101c4565b8063a457c2d71461049d578063a9059cbb146104cd578063ca15c873146104fd576101c4565b80639010d07c116100d35780639010d07c1461040157806391d148541461043157806395d89b4114610461578063a217fddf1461047f576101c4565b806370a08231146103ab57806379cc6790146103db5780638456cb59146103f7576101c4565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a1461034b57806340c10f191461035557806342966c68146103715780635c975abb1461038d576101c4565b8063313ce567146102e157806336568abe146102ff578063395093511461031b576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd14610265578063248a9ca3146102955780632f2ff15d146102c5576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de9190612008565b6105b5565b6040516101f09190612050565b60405180910390f35b61020161062f565b60405161020e91906120fb565b60405180910390f35b610231600480360381019061022c91906121b1565b6106c1565b60405161023e9190612050565b60405180910390f35b61024f6106e4565b60405161025c9190612200565b60405180910390f35b61027f600480360381019061027a919061221b565b6106ee565b60405161028c9190612050565b60405180910390f35b6102af60048036038101906102aa91906122a4565b61071d565b6040516102bc91906122e0565b60405180910390f35b6102df60048036038101906102da91906122fb565b61073c565b005b6102e961075d565b6040516102f69190612357565b60405180910390f35b610319600480360381019061031491906122fb565b610766565b005b610335600480360381019061033091906121b1565b6107e9565b6040516103429190612050565b60405180910390f35b610353610820565b005b61036f600480360381019061036a91906121b1565b61089a565b005b61038b60048036038101906103869190612372565b610918565b005b61039561092c565b6040516103a29190612050565b60405180910390f35b6103c560048036038101906103c0919061239f565b610943565b6040516103d29190612200565b60405180910390f35b6103f560048036038101906103f091906121b1565b61098c565b005b6103ff6109ac565b005b61041b600480360381019061041691906123cc565b610a26565b604051610428919061241b565b60405180910390f35b61044b600480360381019061044691906122fb565b610a55565b6040516104589190612050565b60405180910390f35b610469610abf565b60405161047691906120fb565b60405180910390f35b610487610b51565b60405161049491906122e0565b60405180910390f35b6104b760048036038101906104b291906121b1565b610b58565b6040516104c49190612050565b60405180910390f35b6104e760048036038101906104e291906121b1565b610bcf565b6040516104f49190612050565b60405180910390f35b610517600480360381019061051291906122a4565b610c2c565b6040516105249190612200565b60405180910390f35b610535610c50565b60405161054291906122e0565b60405180910390f35b610565600480360381019061056091906122fb565b610c74565b005b610581600480360381019061057c9190612436565b610c95565b60405161058e9190612200565b60405180910390f35b61059f610d1c565b6040516105ac91906122e0565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610628575061062782610d40565b5b9050919050565b60606005805461063e906124a5565b80601f016020809104026020016040519081016040528092919081815260200182805461066a906124a5565b80156106b75780601f1061068c576101008083540402835291602001916106b7565b820191906000526020600020905b81548152906001019060200180831161069a57829003601f168201915b5050505050905090565b6000806106cc610dba565b90506106d9818585610dc2565b600191505092915050565b6000600454905090565b6000806106f9610dba565b9050610706858285610f8b565b610711858585611017565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6107458261071d565b61074e81611290565b61075883836112a4565b505050565b60006012905090565b61076e610dba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290612548565b60405180910390fd5b6107e582826112d8565b5050565b6000806107f4610dba565b90506108158185856108068589610c95565b6108109190612597565b610dc2565b600191505092915050565b6108517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61084c610dba565b610a55565b610890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108879061263d565b60405180910390fd5b61089861130c565b565b6108cb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66108c6610dba565b610a55565b61090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906126cf565b60405180910390fd5b610914828261136f565b5050565b610929610923610dba565b826114c6565b50565b6000600760009054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61099e82610998610dba565b83610f8b565b6109a882826114c6565b5050565b6109dd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109d8610dba565b610a55565b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612761565b60405180910390fd5b610a24611695565b565b6000610a4d82600160008681526020019081526020016000206116f890919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060068054610ace906124a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa906124a5565b8015610b475780601f10610b1c57610100808354040283529160200191610b47565b820191906000526020600020905b815481529060010190602001808311610b2a57829003601f168201915b5050505050905090565b6000801b81565b600080610b63610dba565b90506000610b718286610c95565b905083811015610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad906127f3565b60405180910390fd5b610bc38286868403610dc2565b60019250505092915050565b600080600283610bdf9190612842565b9050610c18600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168285610c139190612873565b611712565b50610c238482611712565b91505092915050565b6000610c4960016000848152602001908152602001600020611735565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610c7d8261071d565b610c8681611290565b610c9083836112d8565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610db35750610db28261174a565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890612919565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e97906129ab565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f7e9190612200565b60405180910390a3505050565b6000610f978484610c95565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110115781811015611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa90612a17565b60405180910390fd5b6110108484848403610dc2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d90612aa9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90612b3b565b60405180910390fd5b6111008383836117b4565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e90612bcd565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112779190612200565b60405180910390a361128a8484846117c4565b50505050565b6112a18161129c610dba565b6117c9565b50565b6112ae828261184e565b6112d3816001600085815260200190815260200160002061192e90919063ffffffff16565b505050565b6112e2828261195e565b6113078160016000858152602001908152602001600020611a3f90919063ffffffff16565b505050565b611314611a6f565b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611358610dba565b604051611365919061241b565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612c39565b60405180910390fd5b6113ea600083836117b4565b80600460008282546113fc9190612597565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114ae9190612200565b60405180910390a36114c2600083836117c4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612ccb565b60405180910390fd5b611541826000836117b4565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bf90612d5d565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161167c9190612200565b60405180910390a3611690836000846117c4565b505050565b61169d611ab8565b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116e1610dba565b6040516116ee919061241b565b60405180910390a1565b60006117078360000183611b02565b60001c905092915050565b60008061171d610dba565b905061172a818585611017565b600191505092915050565b600061174382600001611b2d565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6117bf838383611b3e565b505050565b505050565b6117d38282610a55565b61184a576117e081611b96565b6117ee8360001c6020611bc3565b6040516020016117ff929190612e51565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184191906120fb565b60405180910390fd5b5050565b6118588282610a55565b61192a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118cf610dba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611956836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611dff565b905092915050565b6119688282610a55565b15611a3b57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119e0610dba565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611a67836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611e6f565b905092915050565b611a7761092c565b611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90612ed7565b60405180910390fd5b565b611ac061092c565b15611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790612f43565b60405180910390fd5b565b6000826000018281548110611b1a57611b19612f63565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b611b49838383611f83565b611b5161092c565b15611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890613004565b60405180910390fd5b505050565b6060611bbc8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611bc3565b9050919050565b606060006002836002611bd69190613024565b611be09190612597565b67ffffffffffffffff811115611bf957611bf8613066565b5b6040519080825280601f01601f191660200182016040528015611c2b5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611c6357611c62612f63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611cc757611cc6612f63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611d079190613024565b611d119190612597565b90505b6001811115611db1577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611d5357611d52612f63565b5b1a60f81b828281518110611d6a57611d69612f63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611daa90613095565b9050611d14565b5060008414611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec9061310a565b60405180910390fd5b8091505092915050565b6000611e0b8383611f88565b611e64578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611e69565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114611f77576000600182611ea19190612873565b9050600060018660000180549050611eb99190612873565b9050818114611f28576000866000018281548110611eda57611ed9612f63565b5b9060005260206000200154905080876000018481548110611efe57611efd612f63565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611f3c57611f3b61312a565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611f7d565b60009150505b92915050565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fe581611fb0565b8114611ff057600080fd5b50565b60008135905061200281611fdc565b92915050565b60006020828403121561201e5761201d611fab565b5b600061202c84828501611ff3565b91505092915050565b60008115159050919050565b61204a81612035565b82525050565b60006020820190506120656000830184612041565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120a557808201518184015260208101905061208a565b60008484015250505050565b6000601f19601f8301169050919050565b60006120cd8261206b565b6120d78185612076565b93506120e7818560208601612087565b6120f0816120b1565b840191505092915050565b6000602082019050818103600083015261211581846120c2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121488261211d565b9050919050565b6121588161213d565b811461216357600080fd5b50565b6000813590506121758161214f565b92915050565b6000819050919050565b61218e8161217b565b811461219957600080fd5b50565b6000813590506121ab81612185565b92915050565b600080604083850312156121c8576121c7611fab565b5b60006121d685828601612166565b92505060206121e78582860161219c565b9150509250929050565b6121fa8161217b565b82525050565b600060208201905061221560008301846121f1565b92915050565b60008060006060848603121561223457612233611fab565b5b600061224286828701612166565b935050602061225386828701612166565b92505060406122648682870161219c565b9150509250925092565b6000819050919050565b6122818161226e565b811461228c57600080fd5b50565b60008135905061229e81612278565b92915050565b6000602082840312156122ba576122b9611fab565b5b60006122c88482850161228f565b91505092915050565b6122da8161226e565b82525050565b60006020820190506122f560008301846122d1565b92915050565b6000806040838503121561231257612311611fab565b5b60006123208582860161228f565b925050602061233185828601612166565b9150509250929050565b600060ff82169050919050565b6123518161233b565b82525050565b600060208201905061236c6000830184612348565b92915050565b60006020828403121561238857612387611fab565b5b60006123968482850161219c565b91505092915050565b6000602082840312156123b5576123b4611fab565b5b60006123c384828501612166565b91505092915050565b600080604083850312156123e3576123e2611fab565b5b60006123f18582860161228f565b92505060206124028582860161219c565b9150509250929050565b6124158161213d565b82525050565b6000602082019050612430600083018461240c565b92915050565b6000806040838503121561244d5761244c611fab565b5b600061245b85828601612166565b925050602061246c85828601612166565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124bd57607f821691505b6020821081036124d0576124cf612476565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612532602f83612076565b915061253d826124d6565b604082019050919050565b6000602082019050818103600083015261256181612525565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125a28261217b565b91506125ad8361217b565b92508282019050808211156125c5576125c4612568565b5b92915050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b6000612627603983612076565b9150612632826125cb565b604082019050919050565b600060208201905081810360008301526126568161261a565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b60006126b9603683612076565b91506126c48261265d565b604082019050919050565b600060208201905081810360008301526126e8816126ac565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b600061274b603783612076565b9150612756826126ef565b604082019050919050565b6000602082019050818103600083015261277a8161273e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006127dd602583612076565b91506127e882612781565b604082019050919050565b6000602082019050818103600083015261280c816127d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284d8261217b565b91506128588361217b565b92508261286857612867612813565b5b828204905092915050565b600061287e8261217b565b91506128898361217b565b92508282039050818111156128a1576128a0612568565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612903602483612076565b915061290e826128a7565b604082019050919050565b60006020820190508181036000830152612932816128f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612995602283612076565b91506129a082612939565b604082019050919050565b600060208201905081810360008301526129c481612988565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612a01601d83612076565b9150612a0c826129cb565b602082019050919050565b60006020820190508181036000830152612a30816129f4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a93602583612076565b9150612a9e82612a37565b604082019050919050565b60006020820190508181036000830152612ac281612a86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b25602383612076565b9150612b3082612ac9565b604082019050919050565b60006020820190508181036000830152612b5481612b18565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612bb7602683612076565b9150612bc282612b5b565b604082019050919050565b60006020820190508181036000830152612be681612baa565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612c23601f83612076565b9150612c2e82612bed565b602082019050919050565b60006020820190508181036000830152612c5281612c16565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612cb5602183612076565b9150612cc082612c59565b604082019050919050565b60006020820190508181036000830152612ce481612ca8565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d47602283612076565b9150612d5282612ceb565b604082019050919050565b60006020820190508181036000830152612d7681612d3a565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612dbe601783612d7d565b9150612dc982612d88565b601782019050919050565b6000612ddf8261206b565b612de98185612d7d565b9350612df9818560208601612087565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612e3b601183612d7d565b9150612e4682612e05565b601182019050919050565b6000612e5c82612db1565b9150612e688285612dd4565b9150612e7382612e2e565b9150612e7f8284612dd4565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612ec1601483612076565b9150612ecc82612e8b565b602082019050919050565b60006020820190508181036000830152612ef081612eb4565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612f2d601083612076565b9150612f3882612ef7565b602082019050919050565b60006020820190508181036000830152612f5c81612f20565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000612fee602a83612076565b9150612ff982612f92565b604082019050919050565b6000602082019050818103600083015261301d81612fe1565b9050919050565b600061302f8261217b565b915061303a8361217b565b92508282026130488161217b565b9150828204841483151761305f5761305e612568565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006130a08261217b565b9150600082036130b3576130b2612568565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006130f4602083612076565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122045a663a6268be58b34e06e44a98d69ac00c67812b2996505d21fd5773559660264736f6c63430008140033", + "bytecode": "0x6080346200064f57601f62001f3738819003828101601f199081168501946001600160401b039490939092858711858810176200056a57808592604098895283396020948591810103126200064f5751936200005a62000654565b916200006562000654565b908351918383116200056a5760059283546001968782811c9216801562000644575b8a83101462000549578189849311620005f0575b5089908983116001146200058c5760009262000580575b5050600019600383901b1c191690861b1783555b80519384116200056a576006548581811c911680156200055f575b8882101462000549578493878211620004f0575b505086918684116001146200048957506000926200047d575b5050600019600383901b1c191690821b176006555b60ff19806007541660075560008052600084528560002033600052845260ff8660002054161562000442575b600080528184526200016533876000206200069e565b507f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a680600052600085528660002033600052855260ff8760002054161562000407575b600052818452620001bd33876000206200069e565b507f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a80600052600085528660002033600052855260ff87600020541615620003cc575b6000528184526200021533876000206200069e565b5060078054610100600160a81b031916744dc6ac40af078661fc43823086e1513635eeab1400179055600080805280855286812033825285528690205460ff161562000390575b506000805282526200027233856000206200069e565b5033156200034e575060ff60075416620002f857600454828101809111620002e2576000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916004553383526002815284832084815401905584519384523393a3516117eb90816200072c8239f35b634e487b7160e01b600052601160045260246000fd5b60849083519062461bcd60e51b82526004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b6064925083519162461bcd60e51b8352600483015260248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b6000805260008452856000203360005284528186600020918254161790553333600060008051602062001f178339815191528180a4386200025c565b80600052600085528660002033600052855286600020838382541617905533338260008051602062001f17833981519152600080a462000200565b80600052600085528660002033600052855286600020838382541617905533338260008051602062001f17833981519152600080a4620001a8565b6000805260008452856000203360005284528560002082828254161790553333600060008051602062001f178339815191528180a46200014f565b0151905038806200010e565b859492919216916006600052876000209260005b89828210620004d95750508411620004bf575b505050811b0160065562000123565b015160001960f88460031b161c19169055388080620004b0565b83850151865588979095019493840193016200049d565b90919293506006600052876000209087808701821c8301938a88106200053f575b91879695949391899301901c01915b8281106200052f5750620000f5565b6000815586955087910162000520565b9350829362000511565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000e1565b634e487b7160e01b600052604160045260246000fd5b015190503880620000b2565b908589941691876000528b6000209260005b8d828210620005d95750508411620005bf575b505050811b018355620000c6565b015160001960f88460031b161c19169055388080620005b1565b8385015186558c979095019493840193016200059e565b909150856000528960002089808501881c8201928c86106200063a575b918a918695949301891c01915b8281106200062a5750506200009b565b600081558594508a91016200061a565b925081926200060d565b91607f169162000087565b600080fd5b60408051919082016001600160401b038111838210176200056a57604052601e82527f455243323044697265637442616c616e63654d616e6970756c6174696f6e00006020830152565b91906001830160009082825280602052604082205415600014620007255784549468010000000000000000861015620007115760018601808255861015620006fd57836040949596828552602085200155549382526020522055600190565b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b83526041600452602483fd5b5092505056fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610c615750816306fdde0314610bc0578163095ea7b314610b9657816318160ddd14610b7857816323b872dd14610b3b578163248a9ca314610b115781632f2ff15d14610a5d578163313ce56714610a4157816336568abe146109af578163395093511461095f5781633f4ba83a1461085557816340c10f19146106c057816342966c68146106a25781635c975abb1461067e57816370a082311461064657816379cc6790146106165781638456cb59146105105781639010d07c146104cf57816391d148541461048957816395d89b41146103a4578163a217fddf14610389578163a457c2d7146102e4578163a9059cbb14610271578163ca15c87314610249578163d53913931461020e578163d547741f146101cc57508063dd62ed3e146101845763e63ab1e91461015957600080fd5b34610180578160031936011261018057602090516000805160206117768339815191528152f35b5080fd5b5034610180578060031936011261018057806020926101a1610d1d565b6101a9610d38565b6001600160a01b0391821683526003865283832091168252845220549051908152f35b9190503461020a578060031936011261020a57610207913561020260016101f1610d38565b938387528660205286200154610d4e565b6110ae565b80f35b8280fd5b505034610180578160031936011261018057602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b90503461020a57602036600319011261020a5760209282913581526001845220549051908152f35b8284346102e157816003193601126102e15761028b610d1d565b600754602435600181901c938482039260081c6001600160a01b03169183116102ce576020866102c787876102c1888833611158565b33611158565b5160018152f35b634e487b7160e01b815260118752602490fd5b80fd5b905082346102e157826003193601126102e1576102ff610d1d565b918360243592338152600360205281812060018060a01b0386168252602052205490828210610338576020856102c78585038733611318565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50503461018057816003193601126101805751908152602090f35b9190503461020a578260031936011261020a57805191836006549060019082821c92828116801561047f575b602095868610821461046c575084885290811561044a575060011461040f575b61040b8686610401828b0383611076565b5191829182610cf1565b0390f35b929550600683528583205b828410610437575050508261040b946104019282010194386103f0565b805486850188015292860192810161041a565b60ff191687860152505050151560051b83010192506104018261040b386103f0565b634e487b7160e01b845260229052602483fd5b93607f16936103d0565b90503461020a578160031936011261020a578160209360ff926104aa610d38565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b90503461020a578160031936011261020a576020926104fa91358152600184528260243591206115dc565b905491519160018060a01b039160031b1c168152f35b90503461020a578260031936011261020a5760008051602061177683398151915283528260205281832033845260205260ff8284205416156105c6576007549060ff8216610590575060ff1916600117600755513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b6020608492519162461bcd60e51b83528201526037602482015260008051602061175683398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152fd5b505034610180573660031901126102e157610207610632610d1d565b6024359061064182338361141a565b6114b2565b5050346101805760203660031901126101805760209181906001600160a01b0361066e610d1d565b1681526002845220549051908152f35b50503461018057816003193601126101805760209060ff6007541690519015158152f35b839034610180576020366003190112610180576102079035336114b2565b9190503461020a578060031936011261020a576106db610d1d565b90602435907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68552602092858452818620338752845260ff828720541615610805576001600160a01b03169384156107c45760ff60075416610770579185939183610756836000805160206117968339815191529654611135565b90558585526002835280852082815401905551908152a380f35b83608492519162461bcd60e51b8352820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b83606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b815162461bcd60e51b8152808601859052603660248201526000805160206117568339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608490fd5b90503461020a578260031936011261020a5760008051602061177683398151915283528260205281832033845260205260ff82842054161561090d576007549060ff8216156108d3575060ff1916600755513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b606490602084519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b6020608492519162461bcd60e51b83528201526039602482015260008051602061175683398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152fd5b5050346101805780600319360112610180576102c76020926109a8610982610d1d565b338352600386528483206001600160a01b03821684528652918490205460243590611135565b9033611318565b839150346101805782600319360112610180576109ca610d38565b90336001600160a01b038316036109e6579061020791356110ae565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b5050346101805781600319360112610180576020905160128152f35b9190503461020a578060031936011261020a57610ac69135906001610a80610d38565b92808652602090868252610a98838589200154610d4e565b80875286825283872094838060a01b031694858852825260ff848820541615610aca575b86525283206115f4565b5080f35b8087528682528387208588528252838720805460ff1916841790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a80a4610abc565b90503461020a57602036600319011261020a57816020936001923581528085522001549051908152f35b505034610180576060366003190112610180576020906102c7610b5c610d1d565b610b64610d38565b60443591610b7383338361141a565b611158565b90503461020a578260031936011261020a5760209250549051908152f35b5050346101805780600319360112610180576020906102c7610bb6610d1d565b6024359033611318565b9190503461020a578260031936011261020a57805191836005549060019082821c928281168015610c57575b602095868610821461046c575084885290811561044a5750600114610c1c5761040b8686610401828b0383611076565b929550600583528583205b828410610c44575050508261040b946104019282010194386103f0565b8054868501880152928601928101610c27565b93607f1693610bec565b84913461020a57602036600319011261020a573563ffffffff60e01b811680910361020a5760209250635a05180f60e01b8114908115610ca3575b5015158152f35b637965db0b60e01b811491508115610cbd575b5083610c9c565b6301ffc9a760e01b14905083610cb6565b60005b838110610ce15750506000910152565b8181015183820152602001610cd1565b60409160208252610d118151809281602086015260208686019101610cce565b601f01601f1916010190565b600435906001600160a01b0382168203610d3357565b600080fd5b602435906001600160a01b0382168203610d3357565b6000818152602090808252604092838220338352835260ff848320541615610d765750505050565b835167ffffffffffffffff9190336060820184811183821017611062578752602a8252858201928736853782511561104e576030845382519160019283101561103a576078602185015360295b838111610fd05750610f8e5790875194608086019086821090821117610f7a57885260428552868501956060368837855115610f6657603087538551821015610f665790607860218701536041915b818311610ef857505050610eb657938593610e9c93610e8d604894610e6476020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b99610eb29b519a8b978801525180926037880190610cce565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cce565b01036028810185520183611076565b5162461bcd60e51b815291829160048301610cf1565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610f52576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f2885896115b5565b5360041c928015610f3e57600019019190610e12565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b87526041600452602487fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015611026576f181899199a1a9b1b9c1cb0b131b232b360811b901a610ffe83876115b5565b5360041c9080156110125760001901610dc3565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526032600452602489fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90601f8019910116810190811067ffffffffffffffff82111761109857604052565b634e487b7160e01b600052604160045260246000fd5b9060406110eb92600090808252816020528282209360018060a01b03169384835260205260ff83832054166110ee575b8152600160205220611679565b50565b8082528160205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46110de565b9190820180921161114257565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039081169182156112c557169182156112745760ff6007541661121c57600082815260026020526040812054918083106111c8576040828260008051602061179683398151915295876020965260028652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b039081169182156113c957169182156113795760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260038252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0380831660005260036020526040600020908216600052602052604060002054926000198403611452575b50505050565b80841061146d57611464930391611318565b3880808061144c565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b031680156115665760ff6007541661121c57806000526002602052604060002054918083106115165760208160008051602061179683398151915292600095858752600284520360408620558060045403600455604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b9081518110156115c6570160200190565b634e487b7160e01b600052603260045260246000fd5b80548210156115c65760005260206000200190600090565b9190600183016000908282528060205260408220541560001461167357845494600160401b86101561165f578361164f611638886001604098999a018555846115dc565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b9060018201906000928184528260205260408420549081151560001461174e576000199180830181811161173a5782549084820191821161101257808203611705575b505050805480156116f1578201916116d483836115dc565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b61172561171561163893866115dc565b90549060031b1c928392866115dc565b905586528460205260408620553880806116bc565b634e487b7160e01b87526011600452602487fd5b505050509056fe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220487a5706488fe467f28c39bcfc12e0aef2533a87fec1d9e291529501d9b86f3964736f6c634300081400332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610c615750816306fdde0314610bc0578163095ea7b314610b9657816318160ddd14610b7857816323b872dd14610b3b578163248a9ca314610b115781632f2ff15d14610a5d578163313ce56714610a4157816336568abe146109af578163395093511461095f5781633f4ba83a1461085557816340c10f19146106c057816342966c68146106a25781635c975abb1461067e57816370a082311461064657816379cc6790146106165781638456cb59146105105781639010d07c146104cf57816391d148541461048957816395d89b41146103a4578163a217fddf14610389578163a457c2d7146102e4578163a9059cbb14610271578163ca15c87314610249578163d53913931461020e578163d547741f146101cc57508063dd62ed3e146101845763e63ab1e91461015957600080fd5b34610180578160031936011261018057602090516000805160206117768339815191528152f35b5080fd5b5034610180578060031936011261018057806020926101a1610d1d565b6101a9610d38565b6001600160a01b0391821683526003865283832091168252845220549051908152f35b9190503461020a578060031936011261020a57610207913561020260016101f1610d38565b938387528660205286200154610d4e565b6110ae565b80f35b8280fd5b505034610180578160031936011261018057602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b90503461020a57602036600319011261020a5760209282913581526001845220549051908152f35b8284346102e157816003193601126102e15761028b610d1d565b600754602435600181901c938482039260081c6001600160a01b03169183116102ce576020866102c787876102c1888833611158565b33611158565b5160018152f35b634e487b7160e01b815260118752602490fd5b80fd5b905082346102e157826003193601126102e1576102ff610d1d565b918360243592338152600360205281812060018060a01b0386168252602052205490828210610338576020856102c78585038733611318565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50503461018057816003193601126101805751908152602090f35b9190503461020a578260031936011261020a57805191836006549060019082821c92828116801561047f575b602095868610821461046c575084885290811561044a575060011461040f575b61040b8686610401828b0383611076565b5191829182610cf1565b0390f35b929550600683528583205b828410610437575050508261040b946104019282010194386103f0565b805486850188015292860192810161041a565b60ff191687860152505050151560051b83010192506104018261040b386103f0565b634e487b7160e01b845260229052602483fd5b93607f16936103d0565b90503461020a578160031936011261020a578160209360ff926104aa610d38565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b90503461020a578160031936011261020a576020926104fa91358152600184528260243591206115dc565b905491519160018060a01b039160031b1c168152f35b90503461020a578260031936011261020a5760008051602061177683398151915283528260205281832033845260205260ff8284205416156105c6576007549060ff8216610590575060ff1916600117600755513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b6020608492519162461bcd60e51b83528201526037602482015260008051602061175683398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152fd5b505034610180573660031901126102e157610207610632610d1d565b6024359061064182338361141a565b6114b2565b5050346101805760203660031901126101805760209181906001600160a01b0361066e610d1d565b1681526002845220549051908152f35b50503461018057816003193601126101805760209060ff6007541690519015158152f35b839034610180576020366003190112610180576102079035336114b2565b9190503461020a578060031936011261020a576106db610d1d565b90602435907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68552602092858452818620338752845260ff828720541615610805576001600160a01b03169384156107c45760ff60075416610770579185939183610756836000805160206117968339815191529654611135565b90558585526002835280852082815401905551908152a380f35b83608492519162461bcd60e51b8352820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b83606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b815162461bcd60e51b8152808601859052603660248201526000805160206117568339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608490fd5b90503461020a578260031936011261020a5760008051602061177683398151915283528260205281832033845260205260ff82842054161561090d576007549060ff8216156108d3575060ff1916600755513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b606490602084519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b6020608492519162461bcd60e51b83528201526039602482015260008051602061175683398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152fd5b5050346101805780600319360112610180576102c76020926109a8610982610d1d565b338352600386528483206001600160a01b03821684528652918490205460243590611135565b9033611318565b839150346101805782600319360112610180576109ca610d38565b90336001600160a01b038316036109e6579061020791356110ae565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b5050346101805781600319360112610180576020905160128152f35b9190503461020a578060031936011261020a57610ac69135906001610a80610d38565b92808652602090868252610a98838589200154610d4e565b80875286825283872094838060a01b031694858852825260ff848820541615610aca575b86525283206115f4565b5080f35b8087528682528387208588528252838720805460ff1916841790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a80a4610abc565b90503461020a57602036600319011261020a57816020936001923581528085522001549051908152f35b505034610180576060366003190112610180576020906102c7610b5c610d1d565b610b64610d38565b60443591610b7383338361141a565b611158565b90503461020a578260031936011261020a5760209250549051908152f35b5050346101805780600319360112610180576020906102c7610bb6610d1d565b6024359033611318565b9190503461020a578260031936011261020a57805191836005549060019082821c928281168015610c57575b602095868610821461046c575084885290811561044a5750600114610c1c5761040b8686610401828b0383611076565b929550600583528583205b828410610c44575050508261040b946104019282010194386103f0565b8054868501880152928601928101610c27565b93607f1693610bec565b84913461020a57602036600319011261020a573563ffffffff60e01b811680910361020a5760209250635a05180f60e01b8114908115610ca3575b5015158152f35b637965db0b60e01b811491508115610cbd575b5083610c9c565b6301ffc9a760e01b14905083610cb6565b60005b838110610ce15750506000910152565b8181015183820152602001610cd1565b60409160208252610d118151809281602086015260208686019101610cce565b601f01601f1916010190565b600435906001600160a01b0382168203610d3357565b600080fd5b602435906001600160a01b0382168203610d3357565b6000818152602090808252604092838220338352835260ff848320541615610d765750505050565b835167ffffffffffffffff9190336060820184811183821017611062578752602a8252858201928736853782511561104e576030845382519160019283101561103a576078602185015360295b838111610fd05750610f8e5790875194608086019086821090821117610f7a57885260428552868501956060368837855115610f6657603087538551821015610f665790607860218701536041915b818311610ef857505050610eb657938593610e9c93610e8d604894610e6476020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b99610eb29b519a8b978801525180926037880190610cce565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cce565b01036028810185520183611076565b5162461bcd60e51b815291829160048301610cf1565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610f52576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f2885896115b5565b5360041c928015610f3e57600019019190610e12565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b87526041600452602487fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015611026576f181899199a1a9b1b9c1cb0b131b232b360811b901a610ffe83876115b5565b5360041c9080156110125760001901610dc3565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526032600452602489fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90601f8019910116810190811067ffffffffffffffff82111761109857604052565b634e487b7160e01b600052604160045260246000fd5b9060406110eb92600090808252816020528282209360018060a01b03169384835260205260ff83832054166110ee575b8152600160205220611679565b50565b8082528160205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46110de565b9190820180921161114257565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039081169182156112c557169182156112745760ff6007541661121c57600082815260026020526040812054918083106111c8576040828260008051602061179683398151915295876020965260028652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b039081169182156113c957169182156113795760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260038252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0380831660005260036020526040600020908216600052602052604060002054926000198403611452575b50505050565b80841061146d57611464930391611318565b3880808061144c565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b031680156115665760ff6007541661121c57806000526002602052604060002054918083106115165760208160008051602061179683398151915292600095858752600284520360408620558060045403600455604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b9081518110156115c6570160200190565b634e487b7160e01b600052603260045260246000fd5b80548210156115c65760005260206000200190600090565b9190600183016000908282528060205260408220541560001461167357845494600160401b86101561165f578361164f611638886001604098999a018555846115dc565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b9060018201906000928184528260205260408420549081151560001461174e576000199180830181811161173a5782549084820191821161101257808203611705575b505050805480156116f1578201916116d483836115dc565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b61172561171561163893866115dc565b90549060031b1c928392866115dc565b905586528460205260408620553880806116bc565b634e487b7160e01b87526011600452602487fd5b505050509056fe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220487a5706488fe467f28c39bcfc12e0aef2533a87fec1d9e291529501d9b86f3964736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/x/erc20/keeper/testdata/ERC20MaliciousDelayed.json b/x/erc20/keeper/testdata/ERC20MaliciousDelayed.json index 893b41191..2c92d92cc 100644 --- a/x/erc20/keeper/testdata/ERC20MaliciousDelayed.json +++ b/x/erc20/keeper/testdata/ERC20MaliciousDelayed.json @@ -660,8 +660,8 @@ "type": "function" } ], - "bytecode": "0x6080604052734dc6ac40af078661fc43823086e1513635eeab14600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a76400006008553480156200007257600080fd5b5060405162003d5c38038062003d5c8339818101604052810190620000989190620006fb565b6040518060400160405280601581526020017f45524332304d616c6963696f757344656c6179656400000000000000000000008152506040518060400160405280601581526020017f45524332304d414c4943494f555344454c415945440000000000000000000000815250818181600590816200011791906200099d565b5080600690816200012991906200099d565b5050506000600760006101000a81548160ff0219169083151502179055506200016b6000801b6200015f6200021d60201b60201c565b6200022560201b60201c565b620001ac7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001a06200021d60201b60201c565b6200022560201b60201c565b620001ed7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a620001e16200021d60201b60201c565b6200022560201b60201c565b5050620002046000801b336200022560201b60201c565b6200021633826200023b60201b60201c565b5062000c37565b600033905090565b620002378282620003a960201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a49062000ae5565b60405180910390fd5b620002c160008383620003e760201b60201c565b8060046000828254620002d5919062000b36565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000389919062000b82565b60405180910390a3620003a560008383620003ff60201b60201c565b5050565b620003bb82826200040460201b60201c565b620003e28160016000858152602001908152602001600020620004f560201b90919060201c565b505050565b620003fa8383836200052d60201b60201c565b505050565b505050565b6200041682826200059860201b60201c565b620004f157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004966200021d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600062000525836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200060260201b60201c565b905092915050565b620005408383836200067c60201b60201c565b620005506200068160201b60201c565b1562000593576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200058a9062000c15565b60405180910390fd5b505050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006200061683836200069860201b60201c565b6200067157826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000676565b600090505b92915050565b505050565b6000600760009054906101000a900460ff16905090565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b6000819050919050565b620006d581620006c0565b8114620006e157600080fd5b50565b600081519050620006f581620006ca565b92915050565b600060208284031215620007145762000713620006bb565b5b60006200072484828501620006e4565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007af57607f821691505b602082108103620007c557620007c462000767565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200082f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f0565b6200083b8683620007f0565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200087e620008786200087284620006c0565b62000853565b620006c0565b9050919050565b6000819050919050565b6200089a836200085d565b620008b2620008a98262000885565b848454620007fd565b825550505050565b600090565b620008c9620008ba565b620008d68184846200088f565b505050565b5b81811015620008fe57620008f2600082620008bf565b600181019050620008dc565b5050565b601f8211156200094d576200091781620007cb565b6200092284620007e0565b8101602085101562000932578190505b6200094a6200094185620007e0565b830182620008db565b50505b505050565b600082821c905092915050565b6000620009726000198460080262000952565b1980831691505092915050565b60006200098d83836200095f565b9150826002028217905092915050565b620009a8826200072d565b67ffffffffffffffff811115620009c457620009c362000738565b5b620009d0825462000796565b620009dd82828562000902565b600060209050601f83116001811462000a15576000841562000a00578287015190505b62000a0c85826200097f565b86555062000a7c565b601f19841662000a2586620007cb565b60005b8281101562000a4f5784890151825560018201915060208501945060208101905062000a28565b8683101562000a6f578489015162000a6b601f8916826200095f565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000acd601f8362000a84565b915062000ada8262000a95565b602082019050919050565b6000602082019050818103600083015262000b008162000abe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b4382620006c0565b915062000b5083620006c0565b925082820190508082111562000b6b5762000b6a62000b07565b5b92915050565b62000b7c81620006c0565b82525050565b600060208201905062000b99600083018462000b71565b92915050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b600062000bfd602a8362000a84565b915062000c0a8262000b9f565b604082019050919050565b6000602082019050818103600083015262000c308162000bee565b9050919050565b6131158062000c476000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d53913931461052d578063d547741f1461054b578063dd62ed3e14610567578063e63ab1e914610597576101c4565b8063a457c2d71461049d578063a9059cbb146104cd578063ca15c873146104fd576101c4565b80639010d07c116100d35780639010d07c1461040157806391d148541461043157806395d89b4114610461578063a217fddf1461047f576101c4565b806370a08231146103ab57806379cc6790146103db5780638456cb59146103f7576101c4565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a1461034b57806340c10f191461035557806342966c68146103715780635c975abb1461038d576101c4565b8063313ce567146102e157806336568abe146102ff578063395093511461031b576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd14610265578063248a9ca3146102955780632f2ff15d146102c5576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de9190611fee565b6105b5565b6040516101f09190612036565b60405180910390f35b61020161062f565b60405161020e91906120e1565b60405180910390f35b610231600480360381019061022c9190612197565b6106c1565b60405161023e9190612036565b60405180910390f35b61024f6106e4565b60405161025c91906121e6565b60405180910390f35b61027f600480360381019061027a9190612201565b6106ee565b60405161028c9190612036565b60405180910390f35b6102af60048036038101906102aa919061228a565b61071d565b6040516102bc91906122c6565b60405180910390f35b6102df60048036038101906102da91906122e1565b61073c565b005b6102e961075d565b6040516102f6919061233d565b60405180910390f35b610319600480360381019061031491906122e1565b610766565b005b61033560048036038101906103309190612197565b6107e9565b6040516103429190612036565b60405180910390f35b610353610820565b005b61036f600480360381019061036a9190612197565b61089a565b005b61038b60048036038101906103869190612358565b610918565b005b61039561092c565b6040516103a29190612036565b60405180910390f35b6103c560048036038101906103c09190612385565b610943565b6040516103d291906121e6565b60405180910390f35b6103f560048036038101906103f09190612197565b61098c565b005b6103ff6109ac565b005b61041b600480360381019061041691906123b2565b610a26565b6040516104289190612401565b60405180910390f35b61044b600480360381019061044691906122e1565b610a55565b6040516104589190612036565b60405180910390f35b610469610abf565b60405161047691906120e1565b60405180910390f35b610487610b51565b60405161049491906122c6565b60405180910390f35b6104b760048036038101906104b29190612197565b610b58565b6040516104c49190612036565b60405180910390f35b6104e760048036038101906104e29190612197565b610bcf565b6040516104f49190612036565b60405180910390f35b6105176004803603810190610512919061228a565b610c12565b60405161052491906121e6565b60405180910390f35b610535610c36565b60405161054291906122c6565b60405180910390f35b610565600480360381019061056091906122e1565b610c5a565b005b610581600480360381019061057c919061241c565b610c7b565b60405161058e91906121e6565b60405180910390f35b61059f610d02565b6040516105ac91906122c6565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610628575061062782610d26565b5b9050919050565b60606005805461063e9061248b565b80601f016020809104026020016040519081016040528092919081815260200182805461066a9061248b565b80156106b75780601f1061068c576101008083540402835291602001916106b7565b820191906000526020600020905b81548152906001019060200180831161069a57829003601f168201915b5050505050905090565b6000806106cc610da0565b90506106d9818585610da8565b600191505092915050565b6000600454905090565b6000806106f9610da0565b9050610706858285610f71565b610711858585610ffd565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6107458261071d565b61074e81611276565b610758838361128a565b505050565b60006012905090565b61076e610da0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d29061252e565b60405180910390fd5b6107e582826112be565b5050565b6000806107f4610da0565b90506108158185856108068589610c7b565b610810919061257d565b610da8565b600191505092915050565b6108517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61084c610da0565b610a55565b610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088790612623565b60405180910390fd5b6108986112f2565b565b6108cb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66108c6610da0565b610a55565b61090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906126b5565b60405180910390fd5b6109148282611355565b5050565b610929610923610da0565b826114ac565b50565b6000600760009054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61099e82610998610da0565b83610f71565b6109a882826114ac565b5050565b6109dd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109d8610da0565b610a55565b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612747565b60405180910390fd5b610a2461167b565b565b6000610a4d82600160008681526020019081526020016000206116de90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060068054610ace9061248b565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa9061248b565b8015610b475780601f10610b1c57610100808354040283529160200191610b47565b820191906000526020600020905b815481529060010190602001808311610b2a57829003601f168201915b5050505050905090565b6000801b81565b600080610b63610da0565b90506000610b718286610c7b565b905083811015610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad906127d9565b60405180910390fd5b610bc38286868403610da8565b60019250505092915050565b6000610c0083600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854610da8565b610c0a83836116f8565b905092915050565b6000610c2f6001600084815260200190815260200160002061171b565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610c638261071d565b610c6c81611276565b610c7683836112be565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d995750610d9882611730565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e9061286b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906128fd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f6491906121e6565b60405180910390a3505050565b6000610f7d8484610c7b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ff75781811015610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090612969565b60405180910390fd5b610ff68484848403610da8565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906129fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612a8d565b60405180910390fd5b6110e683838361179a565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490612b1f565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161125d91906121e6565b60405180910390a36112708484846117aa565b50505050565b61128781611282610da0565b6117af565b50565b6112948282611834565b6112b9816001600085815260200190815260200160002061191490919063ffffffff16565b505050565b6112c88282611944565b6112ed8160016000858152602001908152602001600020611a2590919063ffffffff16565b505050565b6112fa611a55565b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61133e610da0565b60405161134b9190612401565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb90612b8b565b60405180910390fd5b6113d06000838361179a565b80600460008282546113e2919061257d565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161149491906121e6565b60405180910390a36114a8600083836117aa565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612c1d565b60405180910390fd5b6115278260008361179a565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590612caf565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161166291906121e6565b60405180910390a3611676836000846117aa565b505050565b611683611a9e565b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116c7610da0565b6040516116d49190612401565b60405180910390a1565b60006116ed8360000183611ae8565b60001c905092915050565b600080611703610da0565b9050611710818585610ffd565b600191505092915050565b600061172982600001611b13565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6117a5838383611b24565b505050565b505050565b6117b98282610a55565b611830576117c681611b7c565b6117d48360001c6020611ba9565b6040516020016117e5929190612da3565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182791906120e1565b60405180910390fd5b5050565b61183e8282610a55565b61191057600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118b5610da0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061193c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611de5565b905092915050565b61194e8282610a55565b15611a2157600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119c6610da0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611a4d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611e55565b905092915050565b611a5d61092c565b611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612e29565b60405180910390fd5b565b611aa661092c565b15611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90612e95565b60405180910390fd5b565b6000826000018281548110611b0057611aff612eb5565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b611b2f838383611f69565b611b3761092c565b15611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e90612f56565b60405180910390fd5b505050565b6060611ba28273ffffffffffffffffffffffffffffffffffffffff16601460ff16611ba9565b9050919050565b606060006002836002611bbc9190612f76565b611bc6919061257d565b67ffffffffffffffff811115611bdf57611bde612fb8565b5b6040519080825280601f01601f191660200182016040528015611c115781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611c4957611c48612eb5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611cad57611cac612eb5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611ced9190612f76565b611cf7919061257d565b90505b6001811115611d97577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611d3957611d38612eb5565b5b1a60f81b828281518110611d5057611d4f612eb5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611d9090612fe7565b9050611cfa565b5060008414611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd29061305c565b60405180910390fd5b8091505092915050565b6000611df18383611f6e565b611e4a578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611e4f565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114611f5d576000600182611e87919061307c565b9050600060018660000180549050611e9f919061307c565b9050818114611f0e576000866000018281548110611ec057611ebf612eb5565b5b9060005260206000200154905080876000018481548110611ee457611ee3612eb5565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611f2257611f216130b0565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611f63565b60009150505b92915050565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fcb81611f96565b8114611fd657600080fd5b50565b600081359050611fe881611fc2565b92915050565b60006020828403121561200457612003611f91565b5b600061201284828501611fd9565b91505092915050565b60008115159050919050565b6120308161201b565b82525050565b600060208201905061204b6000830184612027565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561208b578082015181840152602081019050612070565b60008484015250505050565b6000601f19601f8301169050919050565b60006120b382612051565b6120bd818561205c565b93506120cd81856020860161206d565b6120d681612097565b840191505092915050565b600060208201905081810360008301526120fb81846120a8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061212e82612103565b9050919050565b61213e81612123565b811461214957600080fd5b50565b60008135905061215b81612135565b92915050565b6000819050919050565b61217481612161565b811461217f57600080fd5b50565b6000813590506121918161216b565b92915050565b600080604083850312156121ae576121ad611f91565b5b60006121bc8582860161214c565b92505060206121cd85828601612182565b9150509250929050565b6121e081612161565b82525050565b60006020820190506121fb60008301846121d7565b92915050565b60008060006060848603121561221a57612219611f91565b5b60006122288682870161214c565b93505060206122398682870161214c565b925050604061224a86828701612182565b9150509250925092565b6000819050919050565b61226781612254565b811461227257600080fd5b50565b6000813590506122848161225e565b92915050565b6000602082840312156122a05761229f611f91565b5b60006122ae84828501612275565b91505092915050565b6122c081612254565b82525050565b60006020820190506122db60008301846122b7565b92915050565b600080604083850312156122f8576122f7611f91565b5b600061230685828601612275565b92505060206123178582860161214c565b9150509250929050565b600060ff82169050919050565b61233781612321565b82525050565b6000602082019050612352600083018461232e565b92915050565b60006020828403121561236e5761236d611f91565b5b600061237c84828501612182565b91505092915050565b60006020828403121561239b5761239a611f91565b5b60006123a98482850161214c565b91505092915050565b600080604083850312156123c9576123c8611f91565b5b60006123d785828601612275565b92505060206123e885828601612182565b9150509250929050565b6123fb81612123565b82525050565b600060208201905061241660008301846123f2565b92915050565b6000806040838503121561243357612432611f91565b5b60006124418582860161214c565b92505060206124528582860161214c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124a357607f821691505b6020821081036124b6576124b561245c565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612518602f8361205c565b9150612523826124bc565b604082019050919050565b600060208201905081810360008301526125478161250b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061258882612161565b915061259383612161565b92508282019050808211156125ab576125aa61254e565b5b92915050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b600061260d60398361205c565b9150612618826125b1565b604082019050919050565b6000602082019050818103600083015261263c81612600565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b600061269f60368361205c565b91506126aa82612643565b604082019050919050565b600060208201905081810360008301526126ce81612692565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b600061273160378361205c565b915061273c826126d5565b604082019050919050565b6000602082019050818103600083015261276081612724565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006127c360258361205c565b91506127ce82612767565b604082019050919050565b600060208201905081810360008301526127f2816127b6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061285560248361205c565b9150612860826127f9565b604082019050919050565b6000602082019050818103600083015261288481612848565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006128e760228361205c565b91506128f28261288b565b604082019050919050565b60006020820190508181036000830152612916816128da565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612953601d8361205c565b915061295e8261291d565b602082019050919050565b6000602082019050818103600083015261298281612946565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129e560258361205c565b91506129f082612989565b604082019050919050565b60006020820190508181036000830152612a14816129d8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a7760238361205c565b9150612a8282612a1b565b604082019050919050565b60006020820190508181036000830152612aa681612a6a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612b0960268361205c565b9150612b1482612aad565b604082019050919050565b60006020820190508181036000830152612b3881612afc565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612b75601f8361205c565b9150612b8082612b3f565b602082019050919050565b60006020820190508181036000830152612ba481612b68565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c0760218361205c565b9150612c1282612bab565b604082019050919050565b60006020820190508181036000830152612c3681612bfa565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c9960228361205c565b9150612ca482612c3d565b604082019050919050565b60006020820190508181036000830152612cc881612c8c565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612d10601783612ccf565b9150612d1b82612cda565b601782019050919050565b6000612d3182612051565b612d3b8185612ccf565b9350612d4b81856020860161206d565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612d8d601183612ccf565b9150612d9882612d57565b601182019050919050565b6000612dae82612d03565b9150612dba8285612d26565b9150612dc582612d80565b9150612dd18284612d26565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612e1360148361205c565b9150612e1e82612ddd565b602082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612e7f60108361205c565b9150612e8a82612e49565b602082019050919050565b60006020820190508181036000830152612eae81612e72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000612f40602a8361205c565b9150612f4b82612ee4565b604082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b6000612f8182612161565b9150612f8c83612161565b9250828202612f9a81612161565b91508282048414831517612fb157612fb061254e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612ff282612161565b9150600082036130055761300461254e565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061304660208361205c565b915061305182613010565b602082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b600061308782612161565b915061309283612161565b92508282039050818111156130aa576130a961254e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ca74da21511fd15190e1e1b87fe9b3a7f4e30c5cf68a6da3cd37a90a1a92ff8364736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d53913931461052d578063d547741f1461054b578063dd62ed3e14610567578063e63ab1e914610597576101c4565b8063a457c2d71461049d578063a9059cbb146104cd578063ca15c873146104fd576101c4565b80639010d07c116100d35780639010d07c1461040157806391d148541461043157806395d89b4114610461578063a217fddf1461047f576101c4565b806370a08231146103ab57806379cc6790146103db5780638456cb59146103f7576101c4565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a1461034b57806340c10f191461035557806342966c68146103715780635c975abb1461038d576101c4565b8063313ce567146102e157806336568abe146102ff578063395093511461031b576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd14610265578063248a9ca3146102955780632f2ff15d146102c5576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de9190611fee565b6105b5565b6040516101f09190612036565b60405180910390f35b61020161062f565b60405161020e91906120e1565b60405180910390f35b610231600480360381019061022c9190612197565b6106c1565b60405161023e9190612036565b60405180910390f35b61024f6106e4565b60405161025c91906121e6565b60405180910390f35b61027f600480360381019061027a9190612201565b6106ee565b60405161028c9190612036565b60405180910390f35b6102af60048036038101906102aa919061228a565b61071d565b6040516102bc91906122c6565b60405180910390f35b6102df60048036038101906102da91906122e1565b61073c565b005b6102e961075d565b6040516102f6919061233d565b60405180910390f35b610319600480360381019061031491906122e1565b610766565b005b61033560048036038101906103309190612197565b6107e9565b6040516103429190612036565b60405180910390f35b610353610820565b005b61036f600480360381019061036a9190612197565b61089a565b005b61038b60048036038101906103869190612358565b610918565b005b61039561092c565b6040516103a29190612036565b60405180910390f35b6103c560048036038101906103c09190612385565b610943565b6040516103d291906121e6565b60405180910390f35b6103f560048036038101906103f09190612197565b61098c565b005b6103ff6109ac565b005b61041b600480360381019061041691906123b2565b610a26565b6040516104289190612401565b60405180910390f35b61044b600480360381019061044691906122e1565b610a55565b6040516104589190612036565b60405180910390f35b610469610abf565b60405161047691906120e1565b60405180910390f35b610487610b51565b60405161049491906122c6565b60405180910390f35b6104b760048036038101906104b29190612197565b610b58565b6040516104c49190612036565b60405180910390f35b6104e760048036038101906104e29190612197565b610bcf565b6040516104f49190612036565b60405180910390f35b6105176004803603810190610512919061228a565b610c12565b60405161052491906121e6565b60405180910390f35b610535610c36565b60405161054291906122c6565b60405180910390f35b610565600480360381019061056091906122e1565b610c5a565b005b610581600480360381019061057c919061241c565b610c7b565b60405161058e91906121e6565b60405180910390f35b61059f610d02565b6040516105ac91906122c6565b60405180910390f35b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610628575061062782610d26565b5b9050919050565b60606005805461063e9061248b565b80601f016020809104026020016040519081016040528092919081815260200182805461066a9061248b565b80156106b75780601f1061068c576101008083540402835291602001916106b7565b820191906000526020600020905b81548152906001019060200180831161069a57829003601f168201915b5050505050905090565b6000806106cc610da0565b90506106d9818585610da8565b600191505092915050565b6000600454905090565b6000806106f9610da0565b9050610706858285610f71565b610711858585610ffd565b60019150509392505050565b6000806000838152602001908152602001600020600101549050919050565b6107458261071d565b61074e81611276565b610758838361128a565b505050565b60006012905090565b61076e610da0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d29061252e565b60405180910390fd5b6107e582826112be565b5050565b6000806107f4610da0565b90506108158185856108068589610c7b565b610810919061257d565b610da8565b600191505092915050565b6108517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61084c610da0565b610a55565b610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088790612623565b60405180910390fd5b6108986112f2565b565b6108cb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66108c6610da0565b610a55565b61090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610901906126b5565b60405180910390fd5b6109148282611355565b5050565b610929610923610da0565b826114ac565b50565b6000600760009054906101000a900460ff16905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61099e82610998610da0565b83610f71565b6109a882826114ac565b5050565b6109dd7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109d8610da0565b610a55565b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612747565b60405180910390fd5b610a2461167b565b565b6000610a4d82600160008681526020019081526020016000206116de90919063ffffffff16565b905092915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060068054610ace9061248b565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa9061248b565b8015610b475780601f10610b1c57610100808354040283529160200191610b47565b820191906000526020600020905b815481529060010190602001808311610b2a57829003601f168201915b5050505050905090565b6000801b81565b600080610b63610da0565b90506000610b718286610c7b565b905083811015610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad906127d9565b60405180910390fd5b610bc38286868403610da8565b60019250505092915050565b6000610c0083600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854610da8565b610c0a83836116f8565b905092915050565b6000610c2f6001600084815260200190815260200160002061171b565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610c638261071d565b610c6c81611276565b610c7683836112be565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d995750610d9882611730565b5b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e9061286b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906128fd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f6491906121e6565b60405180910390a3505050565b6000610f7d8484610c7b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ff75781811015610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090612969565b60405180910390fd5b610ff68484848403610da8565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906129fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612a8d565b60405180910390fd5b6110e683838361179a565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561116d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116490612b1f565b60405180910390fd5b818103600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161125d91906121e6565b60405180910390a36112708484846117aa565b50505050565b61128781611282610da0565b6117af565b50565b6112948282611834565b6112b9816001600085815260200190815260200160002061191490919063ffffffff16565b505050565b6112c88282611944565b6112ed8160016000858152602001908152602001600020611a2590919063ffffffff16565b505050565b6112fa611a55565b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61133e610da0565b60405161134b9190612401565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb90612b8b565b60405180910390fd5b6113d06000838361179a565b80600460008282546113e2919061257d565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161149491906121e6565b60405180910390a36114a8600083836117aa565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612c1d565b60405180910390fd5b6115278260008361179a565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590612caf565b60405180910390fd5b818103600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161166291906121e6565b60405180910390a3611676836000846117aa565b505050565b611683611a9e565b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116c7610da0565b6040516116d49190612401565b60405180910390a1565b60006116ed8360000183611ae8565b60001c905092915050565b600080611703610da0565b9050611710818585610ffd565b600191505092915050565b600061172982600001611b13565b9050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6117a5838383611b24565b505050565b505050565b6117b98282610a55565b611830576117c681611b7c565b6117d48360001c6020611ba9565b6040516020016117e5929190612da3565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182791906120e1565b60405180910390fd5b5050565b61183e8282610a55565b61191057600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118b5610da0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061193c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611de5565b905092915050565b61194e8282610a55565b15611a2157600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119c6610da0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611a4d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611e55565b905092915050565b611a5d61092c565b611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612e29565b60405180910390fd5b565b611aa661092c565b15611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90612e95565b60405180910390fd5b565b6000826000018281548110611b0057611aff612eb5565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b611b2f838383611f69565b611b3761092c565b15611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e90612f56565b60405180910390fd5b505050565b6060611ba28273ffffffffffffffffffffffffffffffffffffffff16601460ff16611ba9565b9050919050565b606060006002836002611bbc9190612f76565b611bc6919061257d565b67ffffffffffffffff811115611bdf57611bde612fb8565b5b6040519080825280601f01601f191660200182016040528015611c115781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611c4957611c48612eb5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611cad57611cac612eb5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611ced9190612f76565b611cf7919061257d565b90505b6001811115611d97577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611d3957611d38612eb5565b5b1a60f81b828281518110611d5057611d4f612eb5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611d9090612fe7565b9050611cfa565b5060008414611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd29061305c565b60405180910390fd5b8091505092915050565b6000611df18383611f6e565b611e4a578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050611e4f565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114611f5d576000600182611e87919061307c565b9050600060018660000180549050611e9f919061307c565b9050818114611f0e576000866000018281548110611ec057611ebf612eb5565b5b9060005260206000200154905080876000018481548110611ee457611ee3612eb5565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480611f2257611f216130b0565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611f63565b60009150505b92915050565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fcb81611f96565b8114611fd657600080fd5b50565b600081359050611fe881611fc2565b92915050565b60006020828403121561200457612003611f91565b5b600061201284828501611fd9565b91505092915050565b60008115159050919050565b6120308161201b565b82525050565b600060208201905061204b6000830184612027565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561208b578082015181840152602081019050612070565b60008484015250505050565b6000601f19601f8301169050919050565b60006120b382612051565b6120bd818561205c565b93506120cd81856020860161206d565b6120d681612097565b840191505092915050565b600060208201905081810360008301526120fb81846120a8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061212e82612103565b9050919050565b61213e81612123565b811461214957600080fd5b50565b60008135905061215b81612135565b92915050565b6000819050919050565b61217481612161565b811461217f57600080fd5b50565b6000813590506121918161216b565b92915050565b600080604083850312156121ae576121ad611f91565b5b60006121bc8582860161214c565b92505060206121cd85828601612182565b9150509250929050565b6121e081612161565b82525050565b60006020820190506121fb60008301846121d7565b92915050565b60008060006060848603121561221a57612219611f91565b5b60006122288682870161214c565b93505060206122398682870161214c565b925050604061224a86828701612182565b9150509250925092565b6000819050919050565b61226781612254565b811461227257600080fd5b50565b6000813590506122848161225e565b92915050565b6000602082840312156122a05761229f611f91565b5b60006122ae84828501612275565b91505092915050565b6122c081612254565b82525050565b60006020820190506122db60008301846122b7565b92915050565b600080604083850312156122f8576122f7611f91565b5b600061230685828601612275565b92505060206123178582860161214c565b9150509250929050565b600060ff82169050919050565b61233781612321565b82525050565b6000602082019050612352600083018461232e565b92915050565b60006020828403121561236e5761236d611f91565b5b600061237c84828501612182565b91505092915050565b60006020828403121561239b5761239a611f91565b5b60006123a98482850161214c565b91505092915050565b600080604083850312156123c9576123c8611f91565b5b60006123d785828601612275565b92505060206123e885828601612182565b9150509250929050565b6123fb81612123565b82525050565b600060208201905061241660008301846123f2565b92915050565b6000806040838503121561243357612432611f91565b5b60006124418582860161214c565b92505060206124528582860161214c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124a357607f821691505b6020821081036124b6576124b561245c565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612518602f8361205c565b9150612523826124bc565b604082019050919050565b600060208201905081810360008301526125478161250b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061258882612161565b915061259383612161565b92508282019050808211156125ab576125aa61254e565b5b92915050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f20756e706175736500000000000000602082015250565b600061260d60398361205c565b9150612618826125b1565b604082019050919050565b6000602082019050818103600083015261263c81612600565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f7665206d696e74657220726f6c6520746f206d696e7400000000000000000000602082015250565b600061269f60368361205c565b91506126aa82612643565b604082019050919050565b600060208201905081810360008301526126ce81612692565b9050919050565b7f45524332305072657365744d696e7465725061757365723a206d75737420686160008201527f76652070617573657220726f6c6520746f207061757365000000000000000000602082015250565b600061273160378361205c565b915061273c826126d5565b604082019050919050565b6000602082019050818103600083015261276081612724565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006127c360258361205c565b91506127ce82612767565b604082019050919050565b600060208201905081810360008301526127f2816127b6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061285560248361205c565b9150612860826127f9565b604082019050919050565b6000602082019050818103600083015261288481612848565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006128e760228361205c565b91506128f28261288b565b604082019050919050565b60006020820190508181036000830152612916816128da565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612953601d8361205c565b915061295e8261291d565b602082019050919050565b6000602082019050818103600083015261298281612946565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129e560258361205c565b91506129f082612989565b604082019050919050565b60006020820190508181036000830152612a14816129d8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a7760238361205c565b9150612a8282612a1b565b604082019050919050565b60006020820190508181036000830152612aa681612a6a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612b0960268361205c565b9150612b1482612aad565b604082019050919050565b60006020820190508181036000830152612b3881612afc565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612b75601f8361205c565b9150612b8082612b3f565b602082019050919050565b60006020820190508181036000830152612ba481612b68565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c0760218361205c565b9150612c1282612bab565b604082019050919050565b60006020820190508181036000830152612c3681612bfa565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c9960228361205c565b9150612ca482612c3d565b604082019050919050565b60006020820190508181036000830152612cc881612c8c565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612d10601783612ccf565b9150612d1b82612cda565b601782019050919050565b6000612d3182612051565b612d3b8185612ccf565b9350612d4b81856020860161206d565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612d8d601183612ccf565b9150612d9882612d57565b601182019050919050565b6000612dae82612d03565b9150612dba8285612d26565b9150612dc582612d80565b9150612dd18284612d26565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612e1360148361205c565b9150612e1e82612ddd565b602082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612e7f60108361205c565b9150612e8a82612e49565b602082019050919050565b60006020820190508181036000830152612eae81612e72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000612f40602a8361205c565b9150612f4b82612ee4565b604082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b6000612f8182612161565b9150612f8c83612161565b9250828202612f9a81612161565b91508282048414831517612fb157612fb061254e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612ff282612161565b9150600082036130055761300461254e565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061304660208361205c565b915061305182613010565b602082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b600061308782612161565b915061309283612161565b92508282039050818111156130aa576130a961254e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ca74da21511fd15190e1e1b87fe9b3a7f4e30c5cf68a6da3cd37a90a1a92ff8364736f6c63430008140033", + "bytecode": "0x608034620006ad57601f62001f4938819003828101601f199081168501946001600160401b03949093909285871185881017620005c85780859260409889528339602094859181010312620006ad5751936200005a620006b2565b91601583527f45524332304d616c6963696f757344656c617965640000000000000000000000858401526200008e620006b2565b90601582527f45524332304d414c4943494f555344454c41594544000000000000000000000086830152835191838311620005c85760059283546001968782811c92168015620006a2575b8a831014620005a75781898493116200064e575b508990898311600114620005ea57600092620005de575b5050600019600383901b1c191690861b1783555b8051938411620005c8576006548581811c91168015620005bd575b88821014620005a75784938782116200054e575b50508691868411600114620004e75750600092620004db575b5050600019600383901b1c191690821b176006555b60ff19806007541660075560008052600084528560002033600052845260ff86600020541615620004a0575b60008052818452620001b73387600020620006d2565b507f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a680600052600085528660002033600052855260ff8760002054161562000465575b6000528184526200020f3387600020620006d2565b507f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a80600052600085528660002033600052855260ff876000205416156200042a575b600052818452620002673387600020620006d2565b5060078054610100600160a81b031916744dc6ac40af078661fc43823086e1513635eeab1400179055670de0b6b3a7640000600855600080805280855286812033825285528690205460ff1615620003ee575b50600080528252620002d03385600020620006d2565b503315620003ac575060ff60075416620003565760045482810180911162000340576000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916004553383526002815284832084815401905584519384523393a3516117c99081620007608239f35b634e487b7160e01b600052601160045260246000fd5b60849083519062461bcd60e51b82526004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b6064925083519162461bcd60e51b8352600483015260248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b6000805260008452856000203360005284528186600020918254161790553333600060008051602062001f298339815191528180a438620002ba565b80600052600085528660002033600052855286600020838382541617905533338260008051602062001f29833981519152600080a462000252565b80600052600085528660002033600052855286600020838382541617905533338260008051602062001f29833981519152600080a4620001fa565b6000805260008452856000203360005284528560002082828254161790553333600060008051602062001f298339815191528180a4620001a1565b01519050388062000160565b859492919216916006600052876000209260005b898282106200053757505084116200051d575b505050811b0160065562000175565b015160001960f88460031b161c191690553880806200050e565b8385015186558897909501949384019301620004fb565b90919293506006600052876000209087808701821c8301938a88106200059d575b91879695949391899301901c01915b8281106200058d575062000147565b600081558695508791016200057e565b935082936200056f565b634e487b7160e01b600052602260045260246000fd5b90607f169062000133565b634e487b7160e01b600052604160045260246000fd5b01519050388062000104565b908589941691876000528b6000209260005b8d8282106200063757505084116200061d575b505050811b01835562000118565b015160001960f88460031b161c191690553880806200060f565b8385015186558c97909501949384019301620005fc565b909150856000528960002089808501881c8201928c861062000698575b918a918695949301891c01915b82811062000688575050620000ed565b600081558594508a910162000678565b925081926200066b565b91607f1691620000d9565b600080fd5b60408051919082016001600160401b03811183821017620005c857604052565b919060018301600090828252806020526040822054156000146200075957845494680100000000000000008610156200074557600186018082558610156200073157836040949596828552602085200155549382526020522055600190565b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b83526041600452602483fd5b5092505056fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610c3f5750816306fdde0314610b9e578163095ea7b314610b7457816318160ddd14610b5657816323b872dd14610b19578163248a9ca314610aef5781632f2ff15d14610a3b578163313ce56714610a1f57816336568abe1461098d578163395093511461093d5781633f4ba83a1461083357816340c10f191461069e57816342966c68146106805781635c975abb1461065c57816370a082311461062457816379cc6790146105f45781638456cb59146104ee5781639010d07c146104ad57816391d148541461046757816395d89b4114610382578163a217fddf14610367578163a457c2d7146102bf578163a9059cbb14610271578163ca15c87314610249578163d53913931461020e578163d547741f146101cc57508063dd62ed3e146101845763e63ab1e91461015957600080fd5b34610180578160031936011261018057602090516000805160206117548339815191528152f35b5080fd5b5034610180578060031936011261018057806020926101a1610cfb565b6101a9610d16565b6001600160a01b0391821683526003865283832091168252845220549051908152f35b9190503461020a578060031936011261020a57610207913561020260016101f1610d16565b938387528660205286200154610d2c565b61108c565b80f35b8280fd5b505034610180578160031936011261018057602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b90503461020a57602036600319011261020a5760209282913581526001845220549051908152f35b5050346101805780600319360112610180576020906102b8610291610cfb565b600754600880546102ae9290911c6001600160a01b0316836112f6565b6024359033611136565b5160018152f35b905082346103645782600319360112610364576102da610cfb565b918360243592338152600360205281812060018060a01b0386168252602052205490828210610313576020856102b885850387336112f6565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b80fd5b50503461018057816003193601126101805751908152602090f35b9190503461020a578260031936011261020a57805191836006549060019082821c92828116801561045d575b602095868610821461044a575084885290811561042857506001146103ed575b6103e986866103df828b0383611054565b5191829182610ccf565b0390f35b929550600683528583205b82841061041557505050826103e9946103df9282010194386103ce565b80548685018801529286019281016103f8565b60ff191687860152505050151560051b83010192506103df826103e9386103ce565b634e487b7160e01b845260229052602483fd5b93607f16936103ae565b90503461020a578160031936011261020a578160209360ff92610488610d16565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b90503461020a578160031936011261020a576020926104d891358152600184528260243591206115ba565b905491519160018060a01b039160031b1c168152f35b90503461020a578260031936011261020a5760008051602061175483398151915283528260205281832033845260205260ff8284205416156105a4576007549060ff821661056e575060ff1916600117600755513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b6020608492519162461bcd60e51b83528201526037602482015260008051602061173483398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152fd5b5050346101805736600319011261036457610207610610610cfb565b6024359061061f8233836113f8565b611490565b5050346101805760203660031901126101805760209181906001600160a01b0361064c610cfb565b1681526002845220549051908152f35b50503461018057816003193601126101805760209060ff6007541690519015158152f35b83903461018057602036600319011261018057610207903533611490565b9190503461020a578060031936011261020a576106b9610cfb565b90602435907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68552602092858452818620338752845260ff8287205416156107e3576001600160a01b03169384156107a25760ff6007541661074e579185939183610734836000805160206117748339815191529654611113565b90558585526002835280852082815401905551908152a380f35b83608492519162461bcd60e51b8352820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b83606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b815162461bcd60e51b8152808601859052603660248201526000805160206117348339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608490fd5b90503461020a578260031936011261020a5760008051602061175483398151915283528260205281832033845260205260ff8284205416156108eb576007549060ff8216156108b1575060ff1916600755513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b606490602084519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b6020608492519162461bcd60e51b83528201526039602482015260008051602061173483398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152fd5b5050346101805780600319360112610180576102b8602092610986610960610cfb565b338352600386528483206001600160a01b03821684528652918490205460243590611113565b90336112f6565b839150346101805782600319360112610180576109a8610d16565b90336001600160a01b038316036109c45790610207913561108c565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b5050346101805781600319360112610180576020905160128152f35b9190503461020a578060031936011261020a57610aa49135906001610a5e610d16565b92808652602090868252610a76838589200154610d2c565b80875286825283872094838060a01b031694858852825260ff848820541615610aa8575b86525283206115d2565b5080f35b8087528682528387208588528252838720805460ff1916841790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a80a4610a9a565b90503461020a57602036600319011261020a57816020936001923581528085522001549051908152f35b505034610180576060366003190112610180576020906102b8610b3a610cfb565b610b42610d16565b60443591610b518333836113f8565b611136565b90503461020a578260031936011261020a5760209250549051908152f35b5050346101805780600319360112610180576020906102b8610b94610cfb565b60243590336112f6565b9190503461020a578260031936011261020a57805191836005549060019082821c928281168015610c35575b602095868610821461044a57508488529081156104285750600114610bfa576103e986866103df828b0383611054565b929550600583528583205b828410610c2257505050826103e9946103df9282010194386103ce565b8054868501880152928601928101610c05565b93607f1693610bca565b84913461020a57602036600319011261020a573563ffffffff60e01b811680910361020a5760209250635a05180f60e01b8114908115610c81575b5015158152f35b637965db0b60e01b811491508115610c9b575b5083610c7a565b6301ffc9a760e01b14905083610c94565b60005b838110610cbf5750506000910152565b8181015183820152602001610caf565b60409160208252610cef8151809281602086015260208686019101610cac565b601f01601f1916010190565b600435906001600160a01b0382168203610d1157565b600080fd5b602435906001600160a01b0382168203610d1157565b6000818152602090808252604092838220338352835260ff848320541615610d545750505050565b835167ffffffffffffffff9190336060820184811183821017611040578752602a8252858201928736853782511561102c5760308453825191600192831015611018576078602185015360295b838111610fae5750610f6c5790875194608086019086821090821117610f5857885260428552868501956060368837855115610f4457603087538551821015610f445790607860218701536041915b818311610ed657505050610e9457938593610e7a93610e6b604894610e4276020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b99610e909b519a8b978801525180926037880190610cac565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cac565b01036028810185520183611054565b5162461bcd60e51b815291829160048301610ccf565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610f30576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f068589611593565b5360041c928015610f1c57600019019190610df0565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b87526041600452602487fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015611004576f181899199a1a9b1b9c1cb0b131b232b360811b901a610fdc8387611593565b5360041c908015610ff05760001901610da1565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526032600452602489fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90601f8019910116810190811067ffffffffffffffff82111761107657604052565b634e487b7160e01b600052604160045260246000fd5b9060406110c992600090808252816020528282209360018060a01b03169384835260205260ff83832054166110cc575b8152600160205220611657565b50565b8082528160205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46110bc565b9190820180921161112057565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039081169182156112a357169182156112525760ff600754166111fa57600082815260026020526040812054918083106111a6576040828260008051602061177483398151915295876020965260028652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b039081169182156113a757169182156113575760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260038252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0380831660005260036020526040600020908216600052602052604060002054926000198403611430575b50505050565b80841061144b576114429303916112f6565b3880808061142a565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b031680156115445760ff600754166111fa57806000526002602052604060002054918083106114f45760208160008051602061177483398151915292600095858752600284520360408620558060045403600455604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b9081518110156115a4570160200190565b634e487b7160e01b600052603260045260246000fd5b80548210156115a45760005260206000200190600090565b9190600183016000908282528060205260408220541560001461165157845494600160401b86101561163d578361162d611616886001604098999a018555846115ba565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b9060018201906000928184528260205260408420549081151560001461172c576000199180830181811161171857825490848201918211610ff0578082036116e3575b505050805480156116cf578201916116b283836115ba565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6117036116f361161693866115ba565b90549060031b1c928392866115ba565b9055865284602052604086205538808061169a565b634e487b7160e01b87526011600452602487fd5b505050509056fe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ec73c04cf4f0e3e343c75efacb35e3cd998ec74c7392e9a70a70d062b788b23d64736f6c634300081400332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610c3f5750816306fdde0314610b9e578163095ea7b314610b7457816318160ddd14610b5657816323b872dd14610b19578163248a9ca314610aef5781632f2ff15d14610a3b578163313ce56714610a1f57816336568abe1461098d578163395093511461093d5781633f4ba83a1461083357816340c10f191461069e57816342966c68146106805781635c975abb1461065c57816370a082311461062457816379cc6790146105f45781638456cb59146104ee5781639010d07c146104ad57816391d148541461046757816395d89b4114610382578163a217fddf14610367578163a457c2d7146102bf578163a9059cbb14610271578163ca15c87314610249578163d53913931461020e578163d547741f146101cc57508063dd62ed3e146101845763e63ab1e91461015957600080fd5b34610180578160031936011261018057602090516000805160206117548339815191528152f35b5080fd5b5034610180578060031936011261018057806020926101a1610cfb565b6101a9610d16565b6001600160a01b0391821683526003865283832091168252845220549051908152f35b9190503461020a578060031936011261020a57610207913561020260016101f1610d16565b938387528660205286200154610d2c565b61108c565b80f35b8280fd5b505034610180578160031936011261018057602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b90503461020a57602036600319011261020a5760209282913581526001845220549051908152f35b5050346101805780600319360112610180576020906102b8610291610cfb565b600754600880546102ae9290911c6001600160a01b0316836112f6565b6024359033611136565b5160018152f35b905082346103645782600319360112610364576102da610cfb565b918360243592338152600360205281812060018060a01b0386168252602052205490828210610313576020856102b885850387336112f6565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b80fd5b50503461018057816003193601126101805751908152602090f35b9190503461020a578260031936011261020a57805191836006549060019082821c92828116801561045d575b602095868610821461044a575084885290811561042857506001146103ed575b6103e986866103df828b0383611054565b5191829182610ccf565b0390f35b929550600683528583205b82841061041557505050826103e9946103df9282010194386103ce565b80548685018801529286019281016103f8565b60ff191687860152505050151560051b83010192506103df826103e9386103ce565b634e487b7160e01b845260229052602483fd5b93607f16936103ae565b90503461020a578160031936011261020a578160209360ff92610488610d16565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b90503461020a578160031936011261020a576020926104d891358152600184528260243591206115ba565b905491519160018060a01b039160031b1c168152f35b90503461020a578260031936011261020a5760008051602061175483398151915283528260205281832033845260205260ff8284205416156105a4576007549060ff821661056e575060ff1916600117600755513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b606490602084519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b6020608492519162461bcd60e51b83528201526037602482015260008051602061173483398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152fd5b5050346101805736600319011261036457610207610610610cfb565b6024359061061f8233836113f8565b611490565b5050346101805760203660031901126101805760209181906001600160a01b0361064c610cfb565b1681526002845220549051908152f35b50503461018057816003193601126101805760209060ff6007541690519015158152f35b83903461018057602036600319011261018057610207903533611490565b9190503461020a578060031936011261020a576106b9610cfb565b90602435907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68552602092858452818620338752845260ff8287205416156107e3576001600160a01b03169384156107a25760ff6007541661074e579185939183610734836000805160206117748339815191529654611113565b90558585526002835280852082815401905551908152a380f35b83608492519162461bcd60e51b8352820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152fd5b83606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b815162461bcd60e51b8152808601859052603660248201526000805160206117348339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608490fd5b90503461020a578260031936011261020a5760008051602061175483398151915283528260205281832033845260205260ff8284205416156108eb576007549060ff8216156108b1575060ff1916600755513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b606490602084519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b6020608492519162461bcd60e51b83528201526039602482015260008051602061173483398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152fd5b5050346101805780600319360112610180576102b8602092610986610960610cfb565b338352600386528483206001600160a01b03821684528652918490205460243590611113565b90336112f6565b839150346101805782600319360112610180576109a8610d16565b90336001600160a01b038316036109c45790610207913561108c565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b5050346101805781600319360112610180576020905160128152f35b9190503461020a578060031936011261020a57610aa49135906001610a5e610d16565b92808652602090868252610a76838589200154610d2c565b80875286825283872094838060a01b031694858852825260ff848820541615610aa8575b86525283206115d2565b5080f35b8087528682528387208588528252838720805460ff1916841790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a80a4610a9a565b90503461020a57602036600319011261020a57816020936001923581528085522001549051908152f35b505034610180576060366003190112610180576020906102b8610b3a610cfb565b610b42610d16565b60443591610b518333836113f8565b611136565b90503461020a578260031936011261020a5760209250549051908152f35b5050346101805780600319360112610180576020906102b8610b94610cfb565b60243590336112f6565b9190503461020a578260031936011261020a57805191836005549060019082821c928281168015610c35575b602095868610821461044a57508488529081156104285750600114610bfa576103e986866103df828b0383611054565b929550600583528583205b828410610c2257505050826103e9946103df9282010194386103ce565b8054868501880152928601928101610c05565b93607f1693610bca565b84913461020a57602036600319011261020a573563ffffffff60e01b811680910361020a5760209250635a05180f60e01b8114908115610c81575b5015158152f35b637965db0b60e01b811491508115610c9b575b5083610c7a565b6301ffc9a760e01b14905083610c94565b60005b838110610cbf5750506000910152565b8181015183820152602001610caf565b60409160208252610cef8151809281602086015260208686019101610cac565b601f01601f1916010190565b600435906001600160a01b0382168203610d1157565b600080fd5b602435906001600160a01b0382168203610d1157565b6000818152602090808252604092838220338352835260ff848320541615610d545750505050565b835167ffffffffffffffff9190336060820184811183821017611040578752602a8252858201928736853782511561102c5760308453825191600192831015611018576078602185015360295b838111610fae5750610f6c5790875194608086019086821090821117610f5857885260428552868501956060368837855115610f4457603087538551821015610f445790607860218701536041915b818311610ed657505050610e9457938593610e7a93610e6b604894610e4276020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b99610e909b519a8b978801525180926037880190610cac565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cac565b01036028810185520183611054565b5162461bcd60e51b815291829160048301610ccf565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610f30576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f068589611593565b5360041c928015610f1c57600019019190610df0565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b87526041600452602487fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015611004576f181899199a1a9b1b9c1cb0b131b232b360811b901a610fdc8387611593565b5360041c908015610ff05760001901610da1565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526032600452602489fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b86526041600452602486fd5b90601f8019910116810190811067ffffffffffffffff82111761107657604052565b634e487b7160e01b600052604160045260246000fd5b9060406110c992600090808252816020528282209360018060a01b03169384835260205260ff83832054166110cc575b8152600160205220611657565b50565b8082528160205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46110bc565b9190820180921161112057565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039081169182156112a357169182156112525760ff600754166111fa57600082815260026020526040812054918083106111a6576040828260008051602061177483398151915295876020965260028652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6001600160a01b039081169182156113a757169182156113575760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260038252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0380831660005260036020526040600020908216600052602052604060002054926000198403611430575b50505050565b80841061144b576114429303916112f6565b3880808061142a565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b031680156115445760ff600754166111fa57806000526002602052604060002054918083106114f45760208160008051602061177483398151915292600095858752600284520360408620558060045403600455604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b9081518110156115a4570160200190565b634e487b7160e01b600052603260045260246000fd5b80548210156115a45760005260206000200190600090565b9190600183016000908282528060205260408220541560001461165157845494600160401b86101561163d578361162d611616886001604098999a018555846115ba565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b9060018201906000928184528260205260408420549081151560001461172c576000199180830181811161171857825490848201918211610ff0578082036116e3575b505050805480156116cf578201916116b283836115ba565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b6117036116f361161693866115ba565b90549060031b1c928392866115ba565b9055865284602052604086205538808061169a565b634e487b7160e01b87526011600452602487fd5b505050509056fe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ec73c04cf4f0e3e343c75efacb35e3cd998ec74c7392e9a70a70d062b788b23d64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/x/ibc/callbacks/testutil/CounterWithCallbacks.json b/x/ibc/callbacks/testutil/CounterWithCallbacks.json index 39a62c253..9b15d9a50 100644 --- a/x/ibc/callbacks/testutil/CounterWithCallbacks.json +++ b/x/ibc/callbacks/testutil/CounterWithCallbacks.json @@ -282,8 +282,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610e62806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638ada066e1161005b5780638ada066e14610113578063c489744b14610131578063dbdf7fce14610161578063f5d82b6b1461016b57610088565b80631f8ee6031461008d57806339b4073a146100a957806345f2d105146100c557806361bc221a146100f5575b600080fd5b6100a760048036038101906100a291906107f5565b610187565b005b6100c360048036038101906100be91906108b0565b61020b565b005b6100df60048036038101906100da91906109f9565b610292565b6040516100ec9190610a52565b60405180910390f35b6100fd6102b7565b60405161010a9190610a86565b60405180910390f35b61011b6102bd565b6040516101289190610a86565b60405180910390f35b61014b600480360381019061014691906109f9565b6102c6565b6040516101589190610a52565b60405180910390f35b61016961034d565b005b61018560048036038101906101809190610acd565b610356565b005b826040516101959190610b7e565b6040518091039020846040516101ab9190610b7e565b60405180910390207f1e0d6d3f26f1ac738b3c50c77ac3e7931853b73d3c754eba1ec9ea2dfb0442c884846040516101e4929190610bf9565b60405180910390a360016000808282546101fe9190610c58565b9250508190555050505050565b836040516102199190610b7e565b60405180910390208560405161022f9190610b7e565b60405180910390207f42611285d4634f96d3f741584f4f896003f59253c3c7a40472cbf0053e726b5f85858560405161026a93929190610c9b565b60405180910390a360016000808282546102849190610ce0565b925050819055505050505050565b6001602052816000526040600020602052806000526040600020600091509150505481565b60005481565b60008054905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008081905550565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161039393929190610d33565b6020604051808303816000875af11580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610da2565b5060016000808282546103e99190610ce0565b9250508190555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047c9190610dcf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fea6fcea9210b4226b3bb7e55ffa18bf072036d64073f5553336ee9bef303c2f06000546040516104cb9190610a86565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9d572f819ae4f4b4839dda54bcb4cc8d7c2f0a67807db864716b20eafb51535983600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516105ae929190610e03565b60405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610621826105d8565b810181811067ffffffffffffffff821117156106405761063f6105e9565b5b80604052505050565b60006106536105ba565b905061065f8282610618565b919050565b600067ffffffffffffffff82111561067f5761067e6105e9565b5b610688826105d8565b9050602081019050919050565b82818337600083830152505050565b60006106b76106b284610664565b610649565b9050828152602081018484840111156106d3576106d26105d3565b5b6106de848285610695565b509392505050565b600082601f8301126106fb576106fa6105ce565b5b813561070b8482602086016106a4565b91505092915050565b600067ffffffffffffffff82169050919050565b61073181610714565b811461073c57600080fd5b50565b60008135905061074e81610728565b92915050565b600067ffffffffffffffff82111561076f5761076e6105e9565b5b610778826105d8565b9050602081019050919050565b600061079861079384610754565b610649565b9050828152602081018484840111156107b4576107b36105d3565b5b6107bf848285610695565b509392505050565b600082601f8301126107dc576107db6105ce565b5b81356107ec848260208601610785565b91505092915050565b6000806000806080858703121561080f5761080e6105c4565b5b600085013567ffffffffffffffff81111561082d5761082c6105c9565b5b610839878288016106e6565b945050602085013567ffffffffffffffff81111561085a576108596105c9565b5b610866878288016106e6565b93505060406108778782880161073f565b925050606085013567ffffffffffffffff811115610898576108976105c9565b5b6108a4878288016107c7565b91505092959194509250565b600080600080600060a086880312156108cc576108cb6105c4565b5b600086013567ffffffffffffffff8111156108ea576108e96105c9565b5b6108f6888289016106e6565b955050602086013567ffffffffffffffff811115610917576109166105c9565b5b610923888289016106e6565b94505060406109348882890161073f565b935050606086013567ffffffffffffffff811115610955576109546105c9565b5b610961888289016107c7565b925050608086013567ffffffffffffffff811115610982576109816105c9565b5b61098e888289016107c7565b9150509295509295909350565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109c68261099b565b9050919050565b6109d6816109bb565b81146109e157600080fd5b50565b6000813590506109f3816109cd565b92915050565b60008060408385031215610a1057610a0f6105c4565b5b6000610a1e858286016109e4565b9250506020610a2f858286016109e4565b9150509250929050565b6000819050919050565b610a4c81610a39565b82525050565b6000602082019050610a676000830184610a43565b92915050565b6000819050919050565b610a8081610a6d565b82525050565b6000602082019050610a9b6000830184610a77565b92915050565b610aaa81610a39565b8114610ab557600080fd5b50565b600081359050610ac781610aa1565b92915050565b60008060408385031215610ae457610ae36105c4565b5b6000610af2858286016109e4565b9250506020610b0385828601610ab8565b9150509250929050565b600081519050919050565b600081905092915050565b60005b83811015610b41578082015181840152602081019050610b26565b60008484015250505050565b6000610b5882610b0d565b610b628185610b18565b9350610b72818560208601610b23565b80840191505092915050565b6000610b8a8284610b4d565b915081905092915050565b610b9e81610714565b82525050565b600081519050919050565b600082825260208201905092915050565b6000610bcb82610ba4565b610bd58185610baf565b9350610be5818560208601610b23565b610bee816105d8565b840191505092915050565b6000604082019050610c0e6000830185610b95565b8181036020830152610c208184610bc0565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c6382610a6d565b9150610c6e83610a6d565b9250828203905081811260008412168282136000851215161715610c9557610c94610c29565b5b92915050565b6000606082019050610cb06000830186610b95565b8181036020830152610cc28185610bc0565b90508181036040830152610cd68184610bc0565b9050949350505050565b6000610ceb82610a6d565b9150610cf683610a6d565b925082820190508281121560008312168382126000841215161715610d1e57610d1d610c29565b5b92915050565b610d2d816109bb565b82525050565b6000606082019050610d486000830186610d24565b610d556020830185610d24565b610d626040830184610a43565b949350505050565b60008115159050919050565b610d7f81610d6a565b8114610d8a57600080fd5b50565b600081519050610d9c81610d76565b92915050565b600060208284031215610db857610db76105c4565b5b6000610dc684828501610d8d565b91505092915050565b6000610dda82610a39565b9150610de583610a39565b9250828201905080821115610dfd57610dfc610c29565b5b92915050565b6000604082019050610e186000830185610a43565b610e256020830184610a43565b939250505056fea264697066735822122046eac6fd1c183b223536745d72df8346adee69fb5398791906a32f5ff6ff837b64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638ada066e1161005b5780638ada066e14610113578063c489744b14610131578063dbdf7fce14610161578063f5d82b6b1461016b57610088565b80631f8ee6031461008d57806339b4073a146100a957806345f2d105146100c557806361bc221a146100f5575b600080fd5b6100a760048036038101906100a291906107f5565b610187565b005b6100c360048036038101906100be91906108b0565b61020b565b005b6100df60048036038101906100da91906109f9565b610292565b6040516100ec9190610a52565b60405180910390f35b6100fd6102b7565b60405161010a9190610a86565b60405180910390f35b61011b6102bd565b6040516101289190610a86565b60405180910390f35b61014b600480360381019061014691906109f9565b6102c6565b6040516101589190610a52565b60405180910390f35b61016961034d565b005b61018560048036038101906101809190610acd565b610356565b005b826040516101959190610b7e565b6040518091039020846040516101ab9190610b7e565b60405180910390207f1e0d6d3f26f1ac738b3c50c77ac3e7931853b73d3c754eba1ec9ea2dfb0442c884846040516101e4929190610bf9565b60405180910390a360016000808282546101fe9190610c58565b9250508190555050505050565b836040516102199190610b7e565b60405180910390208560405161022f9190610b7e565b60405180910390207f42611285d4634f96d3f741584f4f896003f59253c3c7a40472cbf0053e726b5f85858560405161026a93929190610c9b565b60405180910390a360016000808282546102849190610ce0565b925050819055505050505050565b6001602052816000526040600020602052806000526040600020600091509150505481565b60005481565b60008054905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008081905550565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161039393929190610d33565b6020604051808303816000875af11580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610da2565b5060016000808282546103e99190610ce0565b9250508190555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461047c9190610dcf565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fea6fcea9210b4226b3bb7e55ffa18bf072036d64073f5553336ee9bef303c2f06000546040516104cb9190610a86565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f9d572f819ae4f4b4839dda54bcb4cc8d7c2f0a67807db864716b20eafb51535983600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516105ae929190610e03565b60405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610621826105d8565b810181811067ffffffffffffffff821117156106405761063f6105e9565b5b80604052505050565b60006106536105ba565b905061065f8282610618565b919050565b600067ffffffffffffffff82111561067f5761067e6105e9565b5b610688826105d8565b9050602081019050919050565b82818337600083830152505050565b60006106b76106b284610664565b610649565b9050828152602081018484840111156106d3576106d26105d3565b5b6106de848285610695565b509392505050565b600082601f8301126106fb576106fa6105ce565b5b813561070b8482602086016106a4565b91505092915050565b600067ffffffffffffffff82169050919050565b61073181610714565b811461073c57600080fd5b50565b60008135905061074e81610728565b92915050565b600067ffffffffffffffff82111561076f5761076e6105e9565b5b610778826105d8565b9050602081019050919050565b600061079861079384610754565b610649565b9050828152602081018484840111156107b4576107b36105d3565b5b6107bf848285610695565b509392505050565b600082601f8301126107dc576107db6105ce565b5b81356107ec848260208601610785565b91505092915050565b6000806000806080858703121561080f5761080e6105c4565b5b600085013567ffffffffffffffff81111561082d5761082c6105c9565b5b610839878288016106e6565b945050602085013567ffffffffffffffff81111561085a576108596105c9565b5b610866878288016106e6565b93505060406108778782880161073f565b925050606085013567ffffffffffffffff811115610898576108976105c9565b5b6108a4878288016107c7565b91505092959194509250565b600080600080600060a086880312156108cc576108cb6105c4565b5b600086013567ffffffffffffffff8111156108ea576108e96105c9565b5b6108f6888289016106e6565b955050602086013567ffffffffffffffff811115610917576109166105c9565b5b610923888289016106e6565b94505060406109348882890161073f565b935050606086013567ffffffffffffffff811115610955576109546105c9565b5b610961888289016107c7565b925050608086013567ffffffffffffffff811115610982576109816105c9565b5b61098e888289016107c7565b9150509295509295909350565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006109c68261099b565b9050919050565b6109d6816109bb565b81146109e157600080fd5b50565b6000813590506109f3816109cd565b92915050565b60008060408385031215610a1057610a0f6105c4565b5b6000610a1e858286016109e4565b9250506020610a2f858286016109e4565b9150509250929050565b6000819050919050565b610a4c81610a39565b82525050565b6000602082019050610a676000830184610a43565b92915050565b6000819050919050565b610a8081610a6d565b82525050565b6000602082019050610a9b6000830184610a77565b92915050565b610aaa81610a39565b8114610ab557600080fd5b50565b600081359050610ac781610aa1565b92915050565b60008060408385031215610ae457610ae36105c4565b5b6000610af2858286016109e4565b9250506020610b0385828601610ab8565b9150509250929050565b600081519050919050565b600081905092915050565b60005b83811015610b41578082015181840152602081019050610b26565b60008484015250505050565b6000610b5882610b0d565b610b628185610b18565b9350610b72818560208601610b23565b80840191505092915050565b6000610b8a8284610b4d565b915081905092915050565b610b9e81610714565b82525050565b600081519050919050565b600082825260208201905092915050565b6000610bcb82610ba4565b610bd58185610baf565b9350610be5818560208601610b23565b610bee816105d8565b840191505092915050565b6000604082019050610c0e6000830185610b95565b8181036020830152610c208184610bc0565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c6382610a6d565b9150610c6e83610a6d565b9250828203905081811260008412168282136000851215161715610c9557610c94610c29565b5b92915050565b6000606082019050610cb06000830186610b95565b8181036020830152610cc28185610bc0565b90508181036040830152610cd68184610bc0565b9050949350505050565b6000610ceb82610a6d565b9150610cf683610a6d565b925082820190508281121560008312168382126000841215161715610d1e57610d1d610c29565b5b92915050565b610d2d816109bb565b82525050565b6000606082019050610d486000830186610d24565b610d556020830185610d24565b610d626040830184610a43565b949350505050565b60008115159050919050565b610d7f81610d6a565b8114610d8a57600080fd5b50565b600081519050610d9c81610d76565b92915050565b600060208284031215610db857610db76105c4565b5b6000610dc684828501610d8d565b91505092915050565b6000610dda82610a39565b9150610de583610a39565b9250828201905080821115610dfd57610dfc610c29565b5b92915050565b6000604082019050610e186000830185610a43565b610e256020830184610a43565b939250505056fea264697066735822122046eac6fd1c183b223536745d72df8346adee69fb5398791906a32f5ff6ff837b64736f6c63430008140033", + "bytecode": "0x60808060405234610016576105dd908161001c8239f35b600080fdfe6040608081526004908136101561001557600080fd5b600090813560e01c80631f8ee6031461034f57806339b4073a1461024c57806345f2d105146101e857806361bc221a146102305780638ada066e14610230578063c489744b146101e8578063dbdf7fce146101ce5763f5d82b6b1461007957600080fd5b346101ca57806003193601126101ca576100916104e0565b6024359060018060a01b03169180516323b872dd60e01b81523386820152306024820152826044820152602090818160648189895af180156101c057610185575b506100dd855461050c565b855533855260018152818520848652815281852080549084820180921161017257907f9d572f819ae4f4b4839dda54bcb4cc8d7c2f0a67807db864716b20eafb51535993929155855482519081527fea6fcea9210b4226b3bb7e55ffa18bf072036d64073f5553336ee9bef303c2f0823392a2338652600181528186208587528152818620549082519485528401523392a380f35b634e487b7160e01b875260118852602487fd5b8181813d83116101b9575b61019a8183610435565b810103126101b55751801515036101b157386100d2565b8480fd5b8580fd5b503d610190565b83513d88823e3d90fd5b5080fd5b82346101e557806003193601126101e55780805580f35b80fd5b50346101ca57806003193601126101ca57806020926102056104e0565b61020d6104f6565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b50346101ca57816003193601126101ca57602091549051908152f35b50823461034b5760a036600319011261034b5767ffffffffffffffff9080358281116101b15761027f903690830161046d565b916024358181116101b557610297903690840161046d565b926102a06104c9565b90606435838111610347576102b8903690860161046d565b95608435918483116103435761032461030a6103046102fe7f42611285d4634f96d3f741584f4f896003f59253c3c7a40472cbf0053e726b5f996103319736910161046d565b93610562565b98610562565b988351968796168652606060208701526060860190610582565b9184830390850152610582565b0390a361033e815461050c565b815580f35b8880fd5b8780fd5b8280fd5b5082903461034b57608036600319011261034b5767ffffffffffffffff82358181116101b157610382903690850161046d565b6024358281116101b557610399903690860161046d565b916103a26104c9565b606435828111610347577f1e0d6d3f26f1ac738b3c50c77ac3e7931853b73d3c754eba1ec9ea2dfb0442c8936103f06103ea6103e46104079436908c0161046d565b92610562565b96610562565b968051948594168452806020850152830190610582565b0390a381549060001982019182136001166104225750815580f35b634e487b7160e01b835260119052602482fd5b90601f8019910116810190811067ffffffffffffffff82111761045757604052565b634e487b7160e01b600052604160045260246000fd5b81601f820112156104c45780359067ffffffffffffffff821161045757604051926104a2601f8401601f191660200185610435565b828452602083830101116104c457816000926020809301838601378301015290565b600080fd5b6044359067ffffffffffffffff821682036104c457565b600435906001600160a01b03821682036104c457565b602435906001600160a01b03821682036104c457565b906001820191600060018412911290801582169115161761052957565b634e487b7160e01b600052601160045260246000fd5b60005b8381106105525750506000910152565b8181015183820152602001610542565b61057a9060206040519282848094519384920161053f565b810103902090565b9060209161059b8151809281855285808601910161053f565b601f01601f191601019056fea2646970667358221220dbedd47e18fee307035f3e535245d5c88f15f8b2c71471301779b5234b00d88d64736f6c63430008140033", + "deployedBytecode": "0x6040608081526004908136101561001557600080fd5b600090813560e01c80631f8ee6031461034f57806339b4073a1461024c57806345f2d105146101e857806361bc221a146102305780638ada066e14610230578063c489744b146101e8578063dbdf7fce146101ce5763f5d82b6b1461007957600080fd5b346101ca57806003193601126101ca576100916104e0565b6024359060018060a01b03169180516323b872dd60e01b81523386820152306024820152826044820152602090818160648189895af180156101c057610185575b506100dd855461050c565b855533855260018152818520848652815281852080549084820180921161017257907f9d572f819ae4f4b4839dda54bcb4cc8d7c2f0a67807db864716b20eafb51535993929155855482519081527fea6fcea9210b4226b3bb7e55ffa18bf072036d64073f5553336ee9bef303c2f0823392a2338652600181528186208587528152818620549082519485528401523392a380f35b634e487b7160e01b875260118852602487fd5b8181813d83116101b9575b61019a8183610435565b810103126101b55751801515036101b157386100d2565b8480fd5b8580fd5b503d610190565b83513d88823e3d90fd5b5080fd5b82346101e557806003193601126101e55780805580f35b80fd5b50346101ca57806003193601126101ca57806020926102056104e0565b61020d6104f6565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b50346101ca57816003193601126101ca57602091549051908152f35b50823461034b5760a036600319011261034b5767ffffffffffffffff9080358281116101b15761027f903690830161046d565b916024358181116101b557610297903690840161046d565b926102a06104c9565b90606435838111610347576102b8903690860161046d565b95608435918483116103435761032461030a6103046102fe7f42611285d4634f96d3f741584f4f896003f59253c3c7a40472cbf0053e726b5f996103319736910161046d565b93610562565b98610562565b988351968796168652606060208701526060860190610582565b9184830390850152610582565b0390a361033e815461050c565b815580f35b8880fd5b8780fd5b8280fd5b5082903461034b57608036600319011261034b5767ffffffffffffffff82358181116101b157610382903690850161046d565b6024358281116101b557610399903690860161046d565b916103a26104c9565b606435828111610347577f1e0d6d3f26f1ac738b3c50c77ac3e7931853b73d3c754eba1ec9ea2dfb0442c8936103f06103ea6103e46104079436908c0161046d565b92610562565b96610562565b968051948594168452806020850152830190610582565b0390a381549060001982019182136001166104225750815580f35b634e487b7160e01b835260119052602482fd5b90601f8019910116810190811067ffffffffffffffff82111761045757604052565b634e487b7160e01b600052604160045260246000fd5b81601f820112156104c45780359067ffffffffffffffff821161045757604051926104a2601f8401601f191660200185610435565b828452602083830101116104c457816000926020809301838601378301015290565b600080fd5b6044359067ffffffffffffffff821682036104c457565b600435906001600160a01b03821682036104c457565b602435906001600160a01b03821682036104c457565b906001820191600060018412911290801582169115161761052957565b634e487b7160e01b600052601160045260246000fd5b60005b8381106105525750506000910152565b8181015183820152602001610542565b61057a9060206040519282848094519384920161053f565b810103902090565b9060209161059b8151809281855285808601910161053f565b601f01601f191601019056fea2646970667358221220dbedd47e18fee307035f3e535245d5c88f15f8b2c71471301779b5234b00d88d64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} }