logo

StakeShare

json
{ "_format": "hh-sol-artifact-1", "contractName": "StakeShare", "sourceName": "contracts/StakeShare.sol", "abi": [ { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "blacklisted", "type": "address" } ], "name": "CannotTransferWhenBlacklisted", "type": "error" }, { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "DoesNotHaveBlacklisterRole", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "DoesNotHaveMinterRole", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "increasedSupply", "type": "uint256" }, { "internalType": "uint256", "name": "cap", "type": "uint256" } ], "name": "ERC20ExceededSafeSupply", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" }, { "internalType": "uint48", "name": "clock", "type": "uint48" } ], "name": "ERC5805FutureLookup", "type": "error" }, { "inputs": [], "name": "ERC6372InconsistentClock", "type": "error" }, { "inputs": [], "name": "ExceedsSupplyCap", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "VotesExpiredSignature", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousVotes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newVotes", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "BLACKLISTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint48", "name": "_key", "type": "uint48" }, { "internalType": "uint208", "name": "_value", "type": "uint208" } ], "internalType": "struct Checkpoints.Checkpoint208", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "_supplyCap", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50612b5f806100206000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806384b0196e11610130578063a9059cbb116100b8578063d547741f1161007c578063d547741f14610507578063dd62ed3e1461051a578063e63ab1e91461052d578063f1127ed814610554578063f515e6f21461059357600080fd5b8063a9059cbb14610494578063b119490e146104a7578063c3cda520146104ba578063ca15c873146104cd578063d5391393146104e057600080fd5b806391d14854116100ff57806391d148541461043f57806391ddadf41461045257806395d89b41146104715780639ab24eb014610479578063a217fddf1461048c57600080fd5b806384b0196e146103f55780638e539e8c146104105780638f770ad0146104235780639010d07c1461042c57600080fd5b80633a46b1a8116101be5780635c19a95c116101825780635c19a95c146103815780636fcfff451461039457806370a08231146103bc57806379cc6790146103cf5780637ecebe00146103e257600080fd5b80633a46b1a81461031557806340c10f191461032857806342966c681461033b5780634bf5d7e91461034e578063587cde1e1461035657600080fd5b806323b872dd1161020557806323b872dd146102b8578063248a9ca3146102cb5780632f2ff15d146102de578063313ce567146102f357806336568abe1461030257600080fd5b806301ffc9a71461023757806306fdde031461025f578063095ea7b31461027457806318160ddd14610287575b600080fd5b61024a610245366004612454565b6105ba565b60405190151581526020015b60405180910390f35b6102676105e5565b60405161025691906124c4565b61024a6102823660046124f3565b61068e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610256565b61024a6102c636600461251d565b6106a6565b6102aa6102d9366004612559565b6106ca565b6102f16102ec366004612572565b6106ec565b005b60405160128152602001610256565b6102f1610310366004612572565b61070e565b6102aa6103233660046124f3565b610746565b6102f16103363660046124f3565b6107de565b6102f1610349366004612559565b6108aa565b6102676108b7565b61036961036436600461259e565b61092f565b6040516001600160a01b039091168152602001610256565b6102f161038f36600461259e565b61095a565b6103a76103a236600461259e565b610965565b60405163ffffffff9091168152602001610256565b6102aa6103ca36600461259e565b610970565b6102f16103dd3660046124f3565b6109a3565b6102aa6103f036600461259e565b6109b8565b6103fd6109e1565b60405161025697969594939291906125b9565b6102aa61041e366004612559565b610a8d565b6102aa60005481565b61036961043a36600461264f565b610b09565b61024a61044d366004612572565b610b38565b61045a610b70565b60405165ffffffffffff9091168152602001610256565b610267610b7f565b6102aa61048736600461259e565b610bbe565b6102aa600081565b61024a6104a23660046124f3565b610c1e565b6102f16104b5366004612714565b610c2c565b6102f16104c8366004612781565b610d83565b6102aa6104db366004612559565b610e40565b6102aa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102f1610515366004612572565b610e6d565b6102aa6105283660046127e1565b610e89565b6102aa7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61056761056236600461280b565b610ed3565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925201610256565b6102aa7f98db8a220cd0f09badce9f22d0ba7e93edb3d404448cc3560d391ab096ad16e981565b60006001600160e01b03198216635a05180f60e01b14806105df57506105df82610ef1565b92915050565b60606000600080516020612aca8339815191525b905080600301805461060a9061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546106369061284b565b80156106835780601f1061065857610100808354040283529160200191610683565b820191906000526020600020905b81548152906001019060200180831161066657829003601f168201915b505050505091505090565b60003361069c818585610f26565b5060019392505050565b6000336106b4858285610f33565b6106bf858585610f93565b506001949350505050565b6000908152600080516020612b0a833981519152602052604090206001015490565b6106f5826106ca565b6106fe81610ff2565b6107088383610ffc565b50505050565b6001600160a01b03811633146107375760405163334bd91960e11b815260040160405180910390fd5b6107418282611041565b505050565b6000600080516020612aaa83398151915281610760610b70565b90508065ffffffffffff1684106107a057604051637669fc0f60e11b81526004810185905265ffffffffffff821660248201526044015b60405180910390fd5b6107cc6107ac8561107d565b6001600160a01b03871660009081526001850160205260409020906110b4565b6001600160d01b031695945050505050565b6108087f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610b38565b6108275760405163cdf0ed1f60e01b8152336004820152602401610797565b6001600160a01b03821661084e5760405163d92e233d60e01b815260040160405180910390fd5b6000547f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461087d908361289b565b111561089c5760405163062aef3160e41b815260040160405180910390fd5b6108a6828261116a565b5050565b6108b433826111a0565b50565b60606108c16111d6565b65ffffffffffff166108d1610b70565b65ffffffffffff16146108f7576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6001600160a01b039081166000908152600080516020612aaa83398151915260205260409020541690565b336108a681836111e1565b60006105df8261126b565b600080600080516020612aca8339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b6109ae823383610f33565b6108a682826111a0565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610983565b60006060808280808381600080516020612aea8339815191528054909150158015610a0e57506001810154155b610a525760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610797565b610a5a6112bc565b610a626112fb565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000600080516020612aaa83398151915281610aa7610b70565b90508065ffffffffffff168410610ae257604051637669fc0f60e11b81526004810185905265ffffffffffff82166024820152604401610797565b610af8610aee8561107d565b60028401906110b4565b6001600160d01b0316949350505050565b6000828152600080516020612a8a833981519152602081905260408220610b309084611313565b949350505050565b6000918252600080516020612b0a833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610b7a6111d6565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020612aca8339815191529161060a9061284b565b6001600160a01b03811660009081527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0160205260408120600080516020612aaa83398151915290610c0e9061131f565b6001600160d01b03169392505050565b60003361069c818585610f93565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610c725750825b905060008267ffffffffffffffff166001148015610c8f5750303b155b905081158015610c9d575080155b15610cbb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ce557845460ff60401b1916600160401b1785555b610cef8888611358565b610cf761136a565b610d02600033610ffc565b50610d2d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610ffc565b5060008690558315610d7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b83421115610da757604051632341d78760e11b815260048101859052602401610797565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e2190610e199060a00160405160208183030381529060405280519060200120611374565b8585856113a1565b9050610e2d81876113cf565b610e3781886111e1565b50505050505050565b6000818152600080516020612a8a833981519152602081905260408220610e6690611441565b9392505050565b610e76826106ca565b610e7f81610ff2565b6107088383611041565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6040805180820190915260008082526020820152610e66838361144b565b60006001600160e01b03198216637965db0b60e01b14806105df57506301ffc9a760e01b6001600160e01b03198316146105df565b61074183838360016114ae565b6000610f3f8484610e89565b905060001981146107085781811015610f8457604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610797565b610708848484840360006114ae565b6001600160a01b038316610fbd57604051634b637e8f60e11b815260006004820152602401610797565b6001600160a01b038216610fe75760405163ec442f0560e01b815260006004820152602401610797565b610741838383611596565b6108b481336115a1565b6000600080516020612a8a8339815191528161101885856115da565b90508015610b305760008581526020839052604090206110389085611686565b50949350505050565b6000600080516020612a8a8339815191528161105d858561169b565b90508015610b305760008581526020839052604090206110389085611717565b600065ffffffffffff8211156110b0576040516306dfcc6560e41b81526030600482015260248101839052604401610797565b5090565b8154600090818160058111156111135760006110cf8461172c565b6110d990856128ae565b60008881526020902090915081015465ffffffffffff908116908716101561110357809150611111565b61110e81600161289b565b92505b505b600061112187878585611814565b9050801561115c57611146876111386001846128ae565b600091825260209091200190565b54600160301b90046001600160d01b031661115f565b60005b979650505050505050565b6001600160a01b0382166111945760405163ec442f0560e01b815260006004820152602401610797565b6108a660008383611596565b6001600160a01b0382166111ca57604051634b637e8f60e11b815260006004820152602401610797565b6108a682600083611596565b6000610b7a4361107d565b600080516020612aaa83398151915260006111fb8461092f565b6001600160a01b0385811660008181526020869052604080822080546001600160a01b031916898616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610708818461126687611876565b611881565b6001600160a01b03811660009081527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d016020526040812054600080516020612aaa83398151915290610e66906119fb565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020612aea8339815191529161060a9061284b565b60606000600080516020612aea8339815191526105f9565b6000610e668383611a2c565b8054600090801561134f57611339836111386001846128ae565b54600160301b90046001600160d01b0316610e66565b60009392505050565b611360611a56565b6108a68282611a9f565b611372611a56565b565b60006105df611381611af0565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000806113b388888888611afa565b9250925092506113c38282611bc9565b50909695505050505050565b6001600160a01b03821660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260409020805460018101909155818114610741576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610797565b60006105df825490565b604080518082018252600080825260208083018290526001600160a01b03861682527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d01905291909120600080516020612aaa83398151915290610b309084611c82565b600080516020612aca8339815191526001600160a01b0385166114e75760405163e602df0560e01b815260006004820152602401610797565b6001600160a01b03841661151157604051634a1406b160e11b815260006004820152602401610797565b6001600160a01b0380861660009081526001830160209081526040808320938816835292905220839055811561158f57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161158691815260200190565b60405180910390a35b5050505050565b610741838383611cf2565b6115ab8282610b38565b6108a65760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610797565b6000600080516020612b0a8339815191526115f58484610b38565b611675576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561162b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506105df565b60009150506105df565b5092915050565b6000610e66836001600160a01b038416611d78565b6000600080516020612b0a8339815191526116b68484610b38565b15611675576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506105df565b6000610e66836001600160a01b038416611dc7565b60008160000361173e57506000919050565b6000600161174b84611eb0565b901c6001901b90506001818481611764576117646128c1565b048201901c9050600181848161177c5761177c6128c1565b048201901c90506001818481611794576117946128c1565b048201901c905060018184816117ac576117ac6128c1565b048201901c905060018184816117c4576117c46128c1565b048201901c905060018184816117dc576117dc6128c1565b048201901c905060018184816117f4576117f46128c1565b048201901c9050610e668182858161180e5761180e6128c1565b04611f44565b60005b8183101561186e57600061182b8484611f5a565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561185a57809250611868565b61186581600161289b565b93505b50611817565b509392505050565b60006105df82610970565b600080516020612aaa8339815191526001600160a01b03848116908416148015906118ac5750600082115b15610708576001600160a01b03841615611956576001600160a01b0384166000908152600182016020526040812081906118f190611f756118ec87611f81565b611fb5565b6001600160d01b031691506001600160d01b03169150856001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161194b929190918252602082015260400190565b60405180910390a250505b6001600160a01b03831615610708576001600160a01b03831660009081526001820160205260408120819061199190611fee6118ec87611f81565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516119eb929190918252602082015260400190565b60405180910390a2505050505050565b600063ffffffff8211156110b0576040516306dfcc6560e41b81526020600482015260248101839052604401610797565b6000826000018281548110611a4357611a436128d7565b9060005260206000200154905092915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661137257604051631afcd79f60e31b815260040160405180910390fd5b611aa7611a56565b600080516020612aca8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611ae1848261293b565b5060048101610708838261293b565b6000610b7a611ffa565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611b355750600091506003905082611bbf565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b89573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611bb557506000925060019150829050611bbf565b9250600091508190505b9450945094915050565b6000826003811115611bdd57611bdd6129fb565b03611be6575050565b6001826003811115611bfa57611bfa6129fb565b03611c185760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611c2c57611c2c6129fb565b03611c4d5760405163fce698f760e01b815260048101829052602401610797565b6003826003811115611c6157611c616129fb565b036108a6576040516335e2f38360e21b815260048101829052602401610797565b6040805180820190915260008082526020820152826000018263ffffffff1681548110611cb157611cb16128d7565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b611cfd83838361206e565b6001600160a01b038316611d6d576000611d357f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b90506001600160d01b0380821115611d6a57604051630e58ae9360e11b81526004810183905260248101829052604401610797565b50505b6107418383836121ac565b6000818152600183016020526040812054611dbf575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105df565b5060006105df565b60008181526001830160205260408120548015611675576000611deb6001836128ae565b8554909150600090611dff906001906128ae565b9050808214611e64576000866000018281548110611e1f57611e1f6128d7565b9060005260206000200154905080876000018481548110611e4257611e426128d7565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611e7557611e75612a11565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105df565b600080608083901c15611ec557608092831c92015b604083901c15611ed757604092831c92015b602083901c15611ee957602092831c92015b601083901c15611efb57601092831c92015b600883901c15611f0d57600892831c92015b600483901c15611f1f57600492831c92015b600283901c15611f3157600292831c92015b600183901c156105df5760010192915050565b6000818310611f535781610e66565b5090919050565b6000611f696002848418612a27565b610e669084841661289b565b6000610e668284612a49565b60006001600160d01b038211156110b0576040516306dfcc6560e41b815260d0600482015260248101839052604401610797565b600080611fe1611fc3610b70565b611fd9611fcf8861131f565b868863ffffffff16565b87919061221e565b915091505b935093915050565b6000610e668284612a69565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61202561222c565b61202d612296565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600080516020612aca8339815191526001600160a01b0384166120aa578181600201600082825461209f919061289b565b9091555061211c9050565b6001600160a01b038416600090815260208290526040902054828110156120fd5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610797565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b03831661213a576002810180548390039055612159565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161219e91815260200190565b60405180910390a350505050565b600080516020612aaa8339815191526001600160a01b0384166121df576121dc81600201611fee6118ec85611f81565b50505b6001600160a01b0383166122035761220081600201611f756118ec85611f81565b50505b61070861220f8561092f565b6122188561092f565b84611881565b600080611fe18585856122da565b6000600080516020612aea833981519152816122466112bc565b80519091501561225e57805160209091012092915050565b8154801561226d579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020612aea833981519152816122b06112fb565b8051909150156122c857805160209091012092915050565b6001820154801561226d579392505050565b8254600090819080156123f95760006122f8876111386001856128ae565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b03166020840152919250908716101561234c57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603612398578461236f886111386001866128ae565b80546001600160d01b0392909216600160301b0265ffffffffffff9092169190911790556123e9565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150611fe69050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081611fe6565b60006020828403121561246657600080fd5b81356001600160e01b031981168114610e6657600080fd5b6000815180845260005b818110156124a457602081850181015186830182015201612488565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e66602083018461247e565b80356001600160a01b03811681146124ee57600080fd5b919050565b6000806040838503121561250657600080fd5b61250f836124d7565b946020939093013593505050565b60008060006060848603121561253257600080fd5b61253b846124d7565b9250612549602085016124d7565b9150604084013590509250925092565b60006020828403121561256b57600080fd5b5035919050565b6000806040838503121561258557600080fd5b82359150612595602084016124d7565b90509250929050565b6000602082840312156125b057600080fd5b610e66826124d7565b60ff60f81b881681526000602060e0818401526125d960e084018a61247e565b83810360408501526125eb818a61247e565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561263d57835183529284019291840191600101612621565b50909c9b505050505050505050505050565b6000806040838503121561266257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261269857600080fd5b813567ffffffffffffffff808211156126b3576126b3612671565b604051601f8301601f19908116603f011681019082821181831017156126db576126db612671565b816040528381528660208588010111156126f457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561272957600080fd5b833567ffffffffffffffff8082111561274157600080fd5b61274d87838801612687565b9450602086013591508082111561276357600080fd5b5061277086828701612687565b925050604084013590509250925092565b60008060008060008060c0878903121561279a57600080fd5b6127a3876124d7565b95506020870135945060408701359350606087013560ff811681146127c757600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156127f457600080fd5b6127fd836124d7565b9150612595602084016124d7565b6000806040838503121561281e57600080fd5b612827836124d7565b9150602083013563ffffffff8116811461284057600080fd5b809150509250929050565b600181811c9082168061285f57607f821691505b60208210810361287f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105df576105df612885565b818103818111156105df576105df612885565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b601f82111561074157600081815260208120601f850160051c810160208610156129145750805b601f850160051c820191505b8181101561293357828155600101612920565b505050505050565b815167ffffffffffffffff81111561295557612955612671565b61296981612963845461284b565b846128ed565b602080601f83116001811461299e57600084156129865750858301515b600019600386901b1c1916600185901b178555612933565b600085815260208120601f198616915b828110156129cd578886015182559484019460019091019084016129ae565b50858210156129eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600082612a4457634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561167f5761167f612885565b6001600160d01b0381811683821601908082111561167f5761167f61288556fec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000e8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212202a70a70b2ccc78fa049ea7e2f8aead61ae14d6aa03356756b947fd1f93006d9064736f6c63430008140033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102325760003560e01c806384b0196e11610130578063a9059cbb116100b8578063d547741f1161007c578063d547741f14610507578063dd62ed3e1461051a578063e63ab1e91461052d578063f1127ed814610554578063f515e6f21461059357600080fd5b8063a9059cbb14610494578063b119490e146104a7578063c3cda520146104ba578063ca15c873146104cd578063d5391393146104e057600080fd5b806391d14854116100ff57806391d148541461043f57806391ddadf41461045257806395d89b41146104715780639ab24eb014610479578063a217fddf1461048c57600080fd5b806384b0196e146103f55780638e539e8c146104105780638f770ad0146104235780639010d07c1461042c57600080fd5b80633a46b1a8116101be5780635c19a95c116101825780635c19a95c146103815780636fcfff451461039457806370a08231146103bc57806379cc6790146103cf5780637ecebe00146103e257600080fd5b80633a46b1a81461031557806340c10f191461032857806342966c681461033b5780634bf5d7e91461034e578063587cde1e1461035657600080fd5b806323b872dd1161020557806323b872dd146102b8578063248a9ca3146102cb5780632f2ff15d146102de578063313ce567146102f357806336568abe1461030257600080fd5b806301ffc9a71461023757806306fdde031461025f578063095ea7b31461027457806318160ddd14610287575b600080fd5b61024a610245366004612454565b6105ba565b60405190151581526020015b60405180910390f35b6102676105e5565b60405161025691906124c4565b61024a6102823660046124f3565b61068e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610256565b61024a6102c636600461251d565b6106a6565b6102aa6102d9366004612559565b6106ca565b6102f16102ec366004612572565b6106ec565b005b60405160128152602001610256565b6102f1610310366004612572565b61070e565b6102aa6103233660046124f3565b610746565b6102f16103363660046124f3565b6107de565b6102f1610349366004612559565b6108aa565b6102676108b7565b61036961036436600461259e565b61092f565b6040516001600160a01b039091168152602001610256565b6102f161038f36600461259e565b61095a565b6103a76103a236600461259e565b610965565b60405163ffffffff9091168152602001610256565b6102aa6103ca36600461259e565b610970565b6102f16103dd3660046124f3565b6109a3565b6102aa6103f036600461259e565b6109b8565b6103fd6109e1565b60405161025697969594939291906125b9565b6102aa61041e366004612559565b610a8d565b6102aa60005481565b61036961043a36600461264f565b610b09565b61024a61044d366004612572565b610b38565b61045a610b70565b60405165ffffffffffff9091168152602001610256565b610267610b7f565b6102aa61048736600461259e565b610bbe565b6102aa600081565b61024a6104a23660046124f3565b610c1e565b6102f16104b5366004612714565b610c2c565b6102f16104c8366004612781565b610d83565b6102aa6104db366004612559565b610e40565b6102aa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102f1610515366004612572565b610e6d565b6102aa6105283660046127e1565b610e89565b6102aa7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61056761056236600461280b565b610ed3565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925201610256565b6102aa7f98db8a220cd0f09badce9f22d0ba7e93edb3d404448cc3560d391ab096ad16e981565b60006001600160e01b03198216635a05180f60e01b14806105df57506105df82610ef1565b92915050565b60606000600080516020612aca8339815191525b905080600301805461060a9061284b565b80601f01602080910402602001604051908101604052809291908181526020018280546106369061284b565b80156106835780601f1061065857610100808354040283529160200191610683565b820191906000526020600020905b81548152906001019060200180831161066657829003601f168201915b505050505091505090565b60003361069c818585610f26565b5060019392505050565b6000336106b4858285610f33565b6106bf858585610f93565b506001949350505050565b6000908152600080516020612b0a833981519152602052604090206001015490565b6106f5826106ca565b6106fe81610ff2565b6107088383610ffc565b50505050565b6001600160a01b03811633146107375760405163334bd91960e11b815260040160405180910390fd5b6107418282611041565b505050565b6000600080516020612aaa83398151915281610760610b70565b90508065ffffffffffff1684106107a057604051637669fc0f60e11b81526004810185905265ffffffffffff821660248201526044015b60405180910390fd5b6107cc6107ac8561107d565b6001600160a01b03871660009081526001850160205260409020906110b4565b6001600160d01b031695945050505050565b6108087f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610b38565b6108275760405163cdf0ed1f60e01b8152336004820152602401610797565b6001600160a01b03821661084e5760405163d92e233d60e01b815260040160405180910390fd5b6000547f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461087d908361289b565b111561089c5760405163062aef3160e41b815260040160405180910390fd5b6108a6828261116a565b5050565b6108b433826111a0565b50565b60606108c16111d6565b65ffffffffffff166108d1610b70565b65ffffffffffff16146108f7576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6001600160a01b039081166000908152600080516020612aaa83398151915260205260409020541690565b336108a681836111e1565b60006105df8261126b565b600080600080516020612aca8339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b6109ae823383610f33565b6108a682826111a0565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610983565b60006060808280808381600080516020612aea8339815191528054909150158015610a0e57506001810154155b610a525760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610797565b610a5a6112bc565b610a626112fb565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000600080516020612aaa83398151915281610aa7610b70565b90508065ffffffffffff168410610ae257604051637669fc0f60e11b81526004810185905265ffffffffffff82166024820152604401610797565b610af8610aee8561107d565b60028401906110b4565b6001600160d01b0316949350505050565b6000828152600080516020612a8a833981519152602081905260408220610b309084611313565b949350505050565b6000918252600080516020612b0a833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610b7a6111d6565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020612aca8339815191529161060a9061284b565b6001600160a01b03811660009081527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0160205260408120600080516020612aaa83398151915290610c0e9061131f565b6001600160d01b03169392505050565b60003361069c818585610f93565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610c725750825b905060008267ffffffffffffffff166001148015610c8f5750303b155b905081158015610c9d575080155b15610cbb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ce557845460ff60401b1916600160401b1785555b610cef8888611358565b610cf761136a565b610d02600033610ffc565b50610d2d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610ffc565b5060008690558315610d7957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b83421115610da757604051632341d78760e11b815260048101859052602401610797565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e2190610e199060a00160405160208183030381529060405280519060200120611374565b8585856113a1565b9050610e2d81876113cf565b610e3781886111e1565b50505050505050565b6000818152600080516020612a8a833981519152602081905260408220610e6690611441565b9392505050565b610e76826106ca565b610e7f81610ff2565b6107088383611041565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6040805180820190915260008082526020820152610e66838361144b565b60006001600160e01b03198216637965db0b60e01b14806105df57506301ffc9a760e01b6001600160e01b03198316146105df565b61074183838360016114ae565b6000610f3f8484610e89565b905060001981146107085781811015610f8457604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610797565b610708848484840360006114ae565b6001600160a01b038316610fbd57604051634b637e8f60e11b815260006004820152602401610797565b6001600160a01b038216610fe75760405163ec442f0560e01b815260006004820152602401610797565b610741838383611596565b6108b481336115a1565b6000600080516020612a8a8339815191528161101885856115da565b90508015610b305760008581526020839052604090206110389085611686565b50949350505050565b6000600080516020612a8a8339815191528161105d858561169b565b90508015610b305760008581526020839052604090206110389085611717565b600065ffffffffffff8211156110b0576040516306dfcc6560e41b81526030600482015260248101839052604401610797565b5090565b8154600090818160058111156111135760006110cf8461172c565b6110d990856128ae565b60008881526020902090915081015465ffffffffffff908116908716101561110357809150611111565b61110e81600161289b565b92505b505b600061112187878585611814565b9050801561115c57611146876111386001846128ae565b600091825260209091200190565b54600160301b90046001600160d01b031661115f565b60005b979650505050505050565b6001600160a01b0382166111945760405163ec442f0560e01b815260006004820152602401610797565b6108a660008383611596565b6001600160a01b0382166111ca57604051634b637e8f60e11b815260006004820152602401610797565b6108a682600083611596565b6000610b7a4361107d565b600080516020612aaa83398151915260006111fb8461092f565b6001600160a01b0385811660008181526020869052604080822080546001600160a01b031916898616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610708818461126687611876565b611881565b6001600160a01b03811660009081527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d016020526040812054600080516020612aaa83398151915290610e66906119fb565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020612aea8339815191529161060a9061284b565b60606000600080516020612aea8339815191526105f9565b6000610e668383611a2c565b8054600090801561134f57611339836111386001846128ae565b54600160301b90046001600160d01b0316610e66565b60009392505050565b611360611a56565b6108a68282611a9f565b611372611a56565b565b60006105df611381611af0565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000806113b388888888611afa565b9250925092506113c38282611bc9565b50909695505050505050565b6001600160a01b03821660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260409020805460018101909155818114610741576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610797565b60006105df825490565b604080518082018252600080825260208083018290526001600160a01b03861682527fe8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d01905291909120600080516020612aaa83398151915290610b309084611c82565b600080516020612aca8339815191526001600160a01b0385166114e75760405163e602df0560e01b815260006004820152602401610797565b6001600160a01b03841661151157604051634a1406b160e11b815260006004820152602401610797565b6001600160a01b0380861660009081526001830160209081526040808320938816835292905220839055811561158f57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161158691815260200190565b60405180910390a35b5050505050565b610741838383611cf2565b6115ab8282610b38565b6108a65760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610797565b6000600080516020612b0a8339815191526115f58484610b38565b611675576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561162b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506105df565b60009150506105df565b5092915050565b6000610e66836001600160a01b038416611d78565b6000600080516020612b0a8339815191526116b68484610b38565b15611675576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506105df565b6000610e66836001600160a01b038416611dc7565b60008160000361173e57506000919050565b6000600161174b84611eb0565b901c6001901b90506001818481611764576117646128c1565b048201901c9050600181848161177c5761177c6128c1565b048201901c90506001818481611794576117946128c1565b048201901c905060018184816117ac576117ac6128c1565b048201901c905060018184816117c4576117c46128c1565b048201901c905060018184816117dc576117dc6128c1565b048201901c905060018184816117f4576117f46128c1565b048201901c9050610e668182858161180e5761180e6128c1565b04611f44565b60005b8183101561186e57600061182b8484611f5a565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561185a57809250611868565b61186581600161289b565b93505b50611817565b509392505050565b60006105df82610970565b600080516020612aaa8339815191526001600160a01b03848116908416148015906118ac5750600082115b15610708576001600160a01b03841615611956576001600160a01b0384166000908152600182016020526040812081906118f190611f756118ec87611f81565b611fb5565b6001600160d01b031691506001600160d01b03169150856001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161194b929190918252602082015260400190565b60405180910390a250505b6001600160a01b03831615610708576001600160a01b03831660009081526001820160205260408120819061199190611fee6118ec87611f81565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516119eb929190918252602082015260400190565b60405180910390a2505050505050565b600063ffffffff8211156110b0576040516306dfcc6560e41b81526020600482015260248101839052604401610797565b6000826000018281548110611a4357611a436128d7565b9060005260206000200154905092915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661137257604051631afcd79f60e31b815260040160405180910390fd5b611aa7611a56565b600080516020612aca8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03611ae1848261293b565b5060048101610708838261293b565b6000610b7a611ffa565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611b355750600091506003905082611bbf565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b89573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611bb557506000925060019150829050611bbf565b9250600091508190505b9450945094915050565b6000826003811115611bdd57611bdd6129fb565b03611be6575050565b6001826003811115611bfa57611bfa6129fb565b03611c185760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611c2c57611c2c6129fb565b03611c4d5760405163fce698f760e01b815260048101829052602401610797565b6003826003811115611c6157611c616129fb565b036108a6576040516335e2f38360e21b815260048101829052602401610797565b6040805180820190915260008082526020820152826000018263ffffffff1681548110611cb157611cb16128d7565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b611cfd83838361206e565b6001600160a01b038316611d6d576000611d357f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b90506001600160d01b0380821115611d6a57604051630e58ae9360e11b81526004810183905260248101829052604401610797565b50505b6107418383836121ac565b6000818152600183016020526040812054611dbf575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105df565b5060006105df565b60008181526001830160205260408120548015611675576000611deb6001836128ae565b8554909150600090611dff906001906128ae565b9050808214611e64576000866000018281548110611e1f57611e1f6128d7565b9060005260206000200154905080876000018481548110611e4257611e426128d7565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611e7557611e75612a11565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105df565b600080608083901c15611ec557608092831c92015b604083901c15611ed757604092831c92015b602083901c15611ee957602092831c92015b601083901c15611efb57601092831c92015b600883901c15611f0d57600892831c92015b600483901c15611f1f57600492831c92015b600283901c15611f3157600292831c92015b600183901c156105df5760010192915050565b6000818310611f535781610e66565b5090919050565b6000611f696002848418612a27565b610e669084841661289b565b6000610e668284612a49565b60006001600160d01b038211156110b0576040516306dfcc6560e41b815260d0600482015260248101839052604401610797565b600080611fe1611fc3610b70565b611fd9611fcf8861131f565b868863ffffffff16565b87919061221e565b915091505b935093915050565b6000610e668284612a69565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61202561222c565b61202d612296565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600080516020612aca8339815191526001600160a01b0384166120aa578181600201600082825461209f919061289b565b9091555061211c9050565b6001600160a01b038416600090815260208290526040902054828110156120fd5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610797565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b03831661213a576002810180548390039055612159565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161219e91815260200190565b60405180910390a350505050565b600080516020612aaa8339815191526001600160a01b0384166121df576121dc81600201611fee6118ec85611f81565b50505b6001600160a01b0383166122035761220081600201611f756118ec85611f81565b50505b61070861220f8561092f565b6122188561092f565b84611881565b600080611fe18585856122da565b6000600080516020612aea833981519152816122466112bc565b80519091501561225e57805160209091012092915050565b8154801561226d579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020612aea833981519152816122b06112fb565b8051909150156122c857805160209091012092915050565b6001820154801561226d579392505050565b8254600090819080156123f95760006122f8876111386001856128ae565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b03166020840152919250908716101561234c57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603612398578461236f886111386001866128ae565b80546001600160d01b0392909216600160301b0265ffffffffffff9092169190911790556123e9565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150611fe69050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081611fe6565b60006020828403121561246657600080fd5b81356001600160e01b031981168114610e6657600080fd5b6000815180845260005b818110156124a457602081850181015186830182015201612488565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e66602083018461247e565b80356001600160a01b03811681146124ee57600080fd5b919050565b6000806040838503121561250657600080fd5b61250f836124d7565b946020939093013593505050565b60008060006060848603121561253257600080fd5b61253b846124d7565b9250612549602085016124d7565b9150604084013590509250925092565b60006020828403121561256b57600080fd5b5035919050565b6000806040838503121561258557600080fd5b82359150612595602084016124d7565b90509250929050565b6000602082840312156125b057600080fd5b610e66826124d7565b60ff60f81b881681526000602060e0818401526125d960e084018a61247e565b83810360408501526125eb818a61247e565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561263d57835183529284019291840191600101612621565b50909c9b505050505050505050505050565b6000806040838503121561266257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261269857600080fd5b813567ffffffffffffffff808211156126b3576126b3612671565b604051601f8301601f19908116603f011681019082821181831017156126db576126db612671565b816040528381528660208588010111156126f457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561272957600080fd5b833567ffffffffffffffff8082111561274157600080fd5b61274d87838801612687565b9450602086013591508082111561276357600080fd5b5061277086828701612687565b925050604084013590509250925092565b60008060008060008060c0878903121561279a57600080fd5b6127a3876124d7565b95506020870135945060408701359350606087013560ff811681146127c757600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156127f457600080fd5b6127fd836124d7565b9150612595602084016124d7565b6000806040838503121561281e57600080fd5b612827836124d7565b9150602083013563ffffffff8116811461284057600080fd5b809150509250929050565b600181811c9082168061285f57607f821691505b60208210810361287f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105df576105df612885565b818103818111156105df576105df612885565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b601f82111561074157600081815260208120601f850160051c810160208610156129145750805b601f850160051c820191505b8181101561293357828155600101612920565b505050505050565b815167ffffffffffffffff81111561295557612955612671565b61296981612963845461284b565b846128ed565b602080601f83116001811461299e57600084156129865750858301515b600019600386901b1c1916600185901b178555612933565b600085815260208120601f198616915b828110156129cd578886015182559484019460019091019084016129ae565b50858210156129eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600082612a4457634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561167f5761167f612885565b6001600160d01b0381811683821601908082111561167f5761167f61288556fec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000e8b26c30fad74198956032a3533d903385d56dd795af560196f9c78d4af40d0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212202a70a70b2ccc78fa049ea7e2f8aead61ae14d6aa03356756b947fd1f93006d9064736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} }
Share
Content