Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Sponsored
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Approve And Call... | 11995797 | 935 days 3 hrs ago | IN | 0 ETH | 0.00264432 | ||||
Transfer Tokens ... | 11794223 | 966 days 3 hrs ago | IN | 0 ETH | 0.00448 | ||||
Transfer Tokens ... | 9315622 | 1348 days 5 hrs ago | IN | 0 ETH | 0.00003399 | ||||
Transfer Tokens ... | 9315211 | 1348 days 7 hrs ago | IN | 0 ETH | 0.00003399 | ||||
Transfer Tokens ... | 9314625 | 1348 days 9 hrs ago | IN | 0 ETH | 0.00006411 | ||||
Transfer Tokens ... | 9314120 | 1348 days 11 hrs ago | IN | 0 ETH | 0.00006411 | ||||
Transfer Tokens ... | 9311005 | 1348 days 22 hrs ago | IN | 0 ETH | 0.00017483 | ||||
Transfer Tokens ... | 9310987 | 1348 days 22 hrs ago | IN | 0 ETH | 0.00017487 | ||||
Transfer Tokens ... | 9309714 | 1349 days 3 hrs ago | IN | 0 ETH | 0.0000877 | ||||
Transfer Tokens ... | 9309714 | 1349 days 3 hrs ago | IN | 0 ETH | 0.00010688 | ||||
Transfer Tokens ... | 9309679 | 1349 days 3 hrs ago | IN | 0 ETH | 0.00010271 | ||||
Transfer Tokens ... | 9309611 | 1349 days 3 hrs ago | IN | 0 ETH | 0.00011638 | ||||
Transfer Tokens ... | 9309611 | 1349 days 3 hrs ago | IN | 0 ETH | 0.00005819 | ||||
Transfer Tokens ... | 9309453 | 1349 days 4 hrs ago | IN | 0 ETH | 0.00023082 | ||||
Transfer Tokens ... | 9309391 | 1349 days 4 hrs ago | IN | 0 ETH | 0.00014964 | ||||
Transfer Tokens ... | 9309325 | 1349 days 4 hrs ago | IN | 0 ETH | 0.00003597 | ||||
Transfer Tokens ... | 9309322 | 1349 days 4 hrs ago | IN | 0 ETH | 0.00010263 | ||||
Transfer Tokens ... | 9309031 | 1349 days 5 hrs ago | IN | 0 ETH | 0.00034134 | ||||
Transfer Tokens ... | 9308899 | 1349 days 6 hrs ago | IN | 0 ETH | 0.00008033 | ||||
0x60806040 | 9308854 | 1349 days 6 hrs ago | IN | Create: LavaWallet | 0 ETH | 0.00165246 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LavaWallet
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-01-19 */ pragma solidity ^0.5.16; /* 0x5c5cA8c79bf69a5449F1F621215E9Cfc91189Cc5 LAVAWALLET is a Meta Transaction Solution using EIP 712 Simply approve your tokens to this contract to give them super powers! */ /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract ECRecovery { /** * @dev Recover signer address from a message by using their signature * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address. * @param sig bytes signature, the signature is generated using web3.eth.sign() */ function recover(bytes32 hash, bytes memory sig) internal pure returns (address) { bytes32 r; bytes32 s; uint8 v; //Check the signature length if (sig.length != 65) { return (address(0)); } // Divide the signature in r, s and v variables assembly { r := mload(add(sig, 32)) s := mload(add(sig, 64)) v := byte(0, mload(add(sig, 96))) } // Version of signature should be 27 or 28, but 0 and 1 are also possible versions if (v < 27) { v += 27; } // If the version is correct return the signer address if (v != 27 && v != 28) { return (address(0)); } else { return ecrecover(hash, v, r, s); } } } contract ERC20Interface { function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } contract RelayAuthorityInterface { function getRelayAuthority() public returns (address); } contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public; } contract LavaWallet is ECRecovery{ using SafeMath for uint; mapping(bytes32 => uint256) burnedSignatures; struct LavaPacket { string methodName; address relayAuthority; //either a contract or an account address from; address to; address wallet; //this contract address address token; uint256 tokens; uint256 relayerRewardTokens; uint256 expires; uint256 nonce; } /* MUST update these if architecture changes !! MAKE SURE there are NO spaces ! */ bytes32 constant EIP712DOMAIN_TYPEHASH = keccak256( "EIP712Domain(string contractName,string version,uint256 chainId,address verifyingContract)" ); function getLavaDomainTypehash() public pure returns (bytes32) { return EIP712DOMAIN_TYPEHASH; } function getEIP712DomainHash(string memory contractName, string memory version, uint256 chainId, address verifyingContract) public pure returns (bytes32) { return keccak256(abi.encode( EIP712DOMAIN_TYPEHASH, keccak256(bytes(contractName)), keccak256(bytes(version)), chainId, verifyingContract )); } bytes32 constant LAVAPACKET_TYPEHASH = keccak256( "LavaPacket(string methodName,address relayAuthority,address from,address to,address wallet,address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce)" ); function getLavaPacketTypehash() public pure returns (bytes32) { return LAVAPACKET_TYPEHASH; } function getLavaPacketHash(string memory methodName, address relayAuthority,address from,address to, address wallet, address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce) public pure returns (bytes32) { return keccak256(abi.encode( LAVAPACKET_TYPEHASH, keccak256(bytes(methodName)), relayAuthority, from, to, wallet, token, tokens, relayerRewardTokens, expires, nonce )); } constructor( ) public { } //do not allow ether to enter function() external payable { revert(); } // Make sure the change the chainID here if deploying to a testnet function getLavaTypedDataHash(string memory methodName, address relayAuthority,address from,address to, address wallet,address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce) public view returns (bytes32) { // Note: we need to use `encodePacked` here instead of `encode`. bytes32 digest = keccak256(abi.encodePacked( "\x19\x01", getEIP712DomainHash('Lava Wallet','1',1,address(this)), getLavaPacketHash(methodName,relayAuthority,from,to,wallet,token,tokens,relayerRewardTokens,expires,nonce) )); return digest; } /* This uses the metaTX signature and the fact that the ERC20 tokens are Approved to this contract to send them out via the relays eth TX. */ function _validatePacketSignature( string memory methodName, address relayAuthority,address from,address to, address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature) internal returns (bool success) { address wallet = address(this); /* Always allow relaying if the specified relayAuthority is 0. If the authority address is not a contract, allow it to relay If the authority address is a contract, allow its defined 'getAuthority()' delegate to relay */ require( relayAuthority == address(0x0) || (!addressContainsContract(relayAuthority) && msg.sender == relayAuthority) || (addressContainsContract(relayAuthority) && msg.sender == RelayAuthorityInterface(relayAuthority).getRelayAuthority()) ); //check to make sure that signature == ecrecover signature bytes32 sigHash = getLavaTypedDataHash(methodName,relayAuthority,from,to,wallet,token,tokens,relayerRewardTokens,expires,nonce); address recoveredSignatureSigner = recover(sigHash,signature); //make sure the signer is the depositor of the tokens require(from == recoveredSignatureSigner); //make sure the signature has not expired require(block.number < expires || expires == 0); uint burnedSignature = burnedSignatures[sigHash]; burnedSignatures[sigHash] = 0x1; //spent require(burnedSignature == 0x0 ); //remember to tip your relayer! require( ERC20Interface(token).transferFrom(from, msg.sender, relayerRewardTokens ) ); return true; } //why wont this work w approve ?? function _transferTokens(address to, address token, uint tokens) internal returns (bool success) { ERC20Interface(token).transfer(to, tokens ); return true; } ///transfer tokens within the lava balances //Requires approval function _transferTokensFrom( address from, address to,address token, uint tokens) internal returns (bool success) { ERC20Interface(token).transferFrom(from, to, tokens ); //?? return true; } /* Approves lava tokens for another smart contract ('TO field') and call the contracts receiveApproval method all in one fell swoop */ function approveAndCallWithSignature( string memory methodName, address relayAuthority,address from,address to, address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature ) public returns (bool success) { require(!bytesEqual('transfer',bytes(methodName))); require(_validatePacketSignature(methodName,relayAuthority,from,to, token,tokens,relayerRewardTokens,expires,nonce, signature)); bytes memory method = bytes(methodName); _sendApproveAndCall(from,to,token,tokens,method); return true; } function _sendApproveAndCall(address from, address to, address token, uint tokens, bytes memory methodName) internal { ApproveAndCallFallBack(to).receiveApproval(from, tokens, token, bytes(methodName)); } function transferTokensWithSignature(string memory methodName, address relayAuthority, address from, address to, address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature) public returns (bool success) { require(bytesEqual('transfer',bytes(methodName))); require(_validatePacketSignature(methodName,relayAuthority,from,to, token,tokens,relayerRewardTokens,expires,nonce, signature)); require( ERC20Interface(token).transferFrom(from, to, tokens ) ); return true; } function burnSignature(string memory methodName, address relayAuthority, address from, address to, address wallet,address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature) public returns (bool success) { bytes32 sigHash = getLavaTypedDataHash(methodName,relayAuthority,from,to,wallet,token, tokens,relayerRewardTokens,expires,nonce); address recoveredSignatureSigner = recover(sigHash,signature); //make sure the invalidator is the signer require(recoveredSignatureSigner == from); //only the original packet owner can burn signature, not a relay require(from == msg.sender); //make sure this signature has never been used uint burnedSignature = burnedSignatures[sigHash]; burnedSignatures[sigHash] = 0x2; //invalidated require(burnedSignature == 0x0); return true; } function signatureBurnStatus(bytes32 digest) public view returns (uint) { return (burnedSignatures[digest]); } function signatureIsValid(string memory methodName, address relayAuthority,address from,address to, address wallet,address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature) public view returns (bool success) { //check to make sure that signature == ecrecover signature bytes32 sigHash = getLavaTypedDataHash(methodName,relayAuthority,from,to,wallet,token, tokens,relayerRewardTokens,expires,nonce); address recoveredSignatureSigner = recover(sigHash,signature); return (from == recoveredSignatureSigner) ; } /* Receive approval to spend tokens and perform any action all in one transaction */ /*function receiveApproval(address from, uint256 tokens, address token, bytes data) public returns (bool success) { // do something ? }*/ function addressContainsContract(address _to) view internal returns (bool) { uint codeLength; assembly { // Retrieve the size of the code on target address, this needs assembly . codeLength := extcodesize(_to) } return (codeLength>0); } function bytesEqual(bytes memory b1,bytes memory b2) pure internal returns (bool) { if(b1.length != b2.length) return false; for (uint i=0; i<b1.length; i++) { if(b1[i] != b2[i]) return false; } return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"approveAndCallWithSignature","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"burnSignature","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"}],"name":"getEIP712DomainHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getLavaDomainTypehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getLavaPacketHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getLavaPacketTypehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getLavaTypedDataHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"name":"signatureBurnStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"signatureIsValid","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"transferTokensWithSignature","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50611cf9806100206000396000f3fe6080604052600436106100915760003560e01c80639c96f59e116100595780639c96f59e14610715578063a4e59a8914610955578063c375ba8a14610afa578063d327c1eb14610b25578063dd975f9614610cc257610091565b8063021b06991461009657806309417110146102d657806359921b7b1461032557806376af0d0e146104ca5780638d11fa54146106ea575b600080fd5b3480156100a257600080fd5b506102bc60048036036101608110156100ba57600080fd5b81019080803590602001906401000000008111156100d757600080fd5b8201836020820111156100e957600080fd5b8035906020019184600183028401116401000000008311171561010b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561023657600080fd5b82018360208201111561024857600080fd5b8035906020019184600183028401116401000000008311171561026a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ee2565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b5061030f600480360360208110156102f957600080fd5b8101908080359060200190929190505050610fc9565b6040518082815260200191505060405180910390f35b34801561033157600080fd5b506104b4600480360361014081101561034957600080fd5b810190808035906020019064010000000081111561036657600080fd5b82018360208201111561037857600080fd5b8035906020019184600183028401116401000000008311171561039a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610fe5565b6040518082815260200191505060405180910390f35b3480156104d657600080fd5b506106d060048036036101408110156104ee57600080fd5b810190808035906020019064010000000081111561050b57600080fd5b82018360208201111561051d57600080fd5b8035906020019184600183028401116401000000008311171561053f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561064a57600080fd5b82018360208201111561065c57600080fd5b8035906020019184600183028401116401000000008311171561067e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611169565b604051808215151515815260200191505060405180910390f35b3480156106f657600080fd5b506106ff6111f4565b6040518082815260200191505060405180910390f35b34801561072157600080fd5b5061093b600480360361016081101561073957600080fd5b810190808035906020019064010000000081111561075657600080fd5b82018360208201111561076857600080fd5b8035906020019184600183028401116401000000008311171561078a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156108b557600080fd5b8201836020820111156108c757600080fd5b803590602001918460018302840111640100000000831117156108e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611214565b604051808215151515815260200191505060405180910390f35b34801561096157600080fd5b50610ae4600480360361014081101561097957600080fd5b810190808035906020019064010000000081111561099657600080fd5b8201836020820111156109a857600080fd5b803590602001918460018302840111640100000000831117156109ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061127b565b6040518082815260200191505060405180910390f35b348015610b0657600080fd5b50610b0f611370565b6040518082815260200191505060405180910390f35b348015610b3157600080fd5b50610cac60048036036080811015610b4857600080fd5b8101908080359060200190640100000000811115610b6557600080fd5b820183602082011115610b7757600080fd5b80359060200191846001830284011164010000000083111715610b9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bfc57600080fd5b820183602082011115610c0e57600080fd5b80359060200191846001830284011164010000000083111715610c3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611390565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610ec86004803603610140811015610ce657600080fd5b8101908080359060200190640100000000811115610d0357600080fd5b820183602082011115610d1557600080fd5b80359060200191846001830284011164010000000083111715610d3757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610e4257600080fd5b820183602082011115610e5457600080fd5b80359060200191846001830284011164010000000083111715610e7657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611435565b604051808215151515815260200191505060405180910390f35b600080610ef78d8d8d8d8d8d8d8d8d8d61127b565b90506000610f0582856115ab565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f3f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614610f7757600080fd5b600080600084815260200190815260200160002054905060026000808581526020019081526020016000208190555060008114610fb357600080fd5b600193505050509b9a5050505050505050505050565b6000806000838152602001908152602001600020549050919050565b60006040518080611c1360b2913960b201905060405180910390208b805190602001208b8b8b8b8b8b8b8b8b604051602001808c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019b5050505050505050505050506040516020818303038152906040528051906020012090509a9950505050505050505050565b60006111aa6040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b156111b457600080fd5b6111c68b8b8b8b8b8b8b8b8b8b61174a565b6111cf57600080fd5b60608b90506111e18a8a8a8a85611a5e565b60019150509a9950505050505050505050565b60006040518080611bb9605a9139605a0190506040518091039020905090565b6000806112298d8d8d8d8d8d8d8d8d8d61127b565b9050600061123782856115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614925050509b9a5050505050505050505050565b6000806112f56040518060400160405280600b81526020017f4c6176612057616c6c65740000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250600130611390565b6113078d8d8d8d8d8d8d8d8d8d610fe5565b60405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050809150509a9950505050505050505050565b60006040518080611c1360b2913960b20190506040518091039020905090565b60006040518080611bb9605a9139605a0190506040518091039020858051906020012085805190602001208585604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050949350505050565b60006114766040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b61147f57600080fd5b6114918b8b8b8b8b8b8b8b8b8b61174a565b61149a57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff166323b872dd8a8a896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506040513d602081101561157f57600080fd5b810190808051906020019092919050505061159957600080fd5b600190509a9950505050505050505050565b60008060008060418551146115c65760009350505050611687565b6020850151925060408501519150606085015160001a9050601b8160ff1610156115f157601b810190505b601b8160ff16141580156116095750601c8160ff1614155b1561161a5760009350505050611687565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611677573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600081518351146116a15760009050611744565b60008090505b835181101561173e578281815181106116bc57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106116f557fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611731576000915050611744565b80806001019150506116a7565b50600190505b92915050565b600080309050600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614806117c8575061178f8b611ba5565b1580156117c757508a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b8061189157506117d78b611ba5565b801561189057508a73ffffffffffffffffffffffffffffffffffffffff16638c0636866040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561182657600080fd5b505af115801561183a573d6000803e3d6000fd5b505050506040513d602081101561185057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b61189a57600080fd5b60006118ae8d8d8d8d868e8e8e8e8e61127b565b905060006118bc82866115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16146118f657600080fd5b864310806119045750600087145b61190d57600080fd5b60008060008481526020019081526020016000205490506001600080858152602001908152602001600020819055506000811461194957600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd8e338c6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b505050506040513d6020811015611a2e57600080fd5b8101908080519060200190929190505050611a4857600080fd5b60019450505050509a9950505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1868486856040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b37578082015181840152602081019050611b1c565b50505050905090810190601f168015611b645780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050505050505050565b600080823b90506000811191505091905056fe454950373132446f6d61696e28737472696e6720636f6e74726163744e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294c6176615061636b657428737472696e67206d6574686f644e616d652c616464726573732072656c6179417574686f726974792c616464726573732066726f6d2c6164647265737320746f2c616464726573732077616c6c65742c6164647265737320746f6b656e2c75696e7432353620746f6b656e732c75696e743235362072656c61796572526577617264546f6b656e732c75696e7432353620657870697265732c75696e74323536206e6f6e636529a265627a7a72315820608421ca71d0c3f32b57dc88735f8f85c46e47c014d4098de6e2c69c64fff35464736f6c63430005100032
Deployed Bytecode
0x6080604052600436106100915760003560e01c80639c96f59e116100595780639c96f59e14610715578063a4e59a8914610955578063c375ba8a14610afa578063d327c1eb14610b25578063dd975f9614610cc257610091565b8063021b06991461009657806309417110146102d657806359921b7b1461032557806376af0d0e146104ca5780638d11fa54146106ea575b600080fd5b3480156100a257600080fd5b506102bc60048036036101608110156100ba57600080fd5b81019080803590602001906401000000008111156100d757600080fd5b8201836020820111156100e957600080fd5b8035906020019184600183028401116401000000008311171561010b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561023657600080fd5b82018360208201111561024857600080fd5b8035906020019184600183028401116401000000008311171561026a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ee2565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b5061030f600480360360208110156102f957600080fd5b8101908080359060200190929190505050610fc9565b6040518082815260200191505060405180910390f35b34801561033157600080fd5b506104b4600480360361014081101561034957600080fd5b810190808035906020019064010000000081111561036657600080fd5b82018360208201111561037857600080fd5b8035906020019184600183028401116401000000008311171561039a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610fe5565b6040518082815260200191505060405180910390f35b3480156104d657600080fd5b506106d060048036036101408110156104ee57600080fd5b810190808035906020019064010000000081111561050b57600080fd5b82018360208201111561051d57600080fd5b8035906020019184600183028401116401000000008311171561053f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561064a57600080fd5b82018360208201111561065c57600080fd5b8035906020019184600183028401116401000000008311171561067e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611169565b604051808215151515815260200191505060405180910390f35b3480156106f657600080fd5b506106ff6111f4565b6040518082815260200191505060405180910390f35b34801561072157600080fd5b5061093b600480360361016081101561073957600080fd5b810190808035906020019064010000000081111561075657600080fd5b82018360208201111561076857600080fd5b8035906020019184600183028401116401000000008311171561078a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156108b557600080fd5b8201836020820111156108c757600080fd5b803590602001918460018302840111640100000000831117156108e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611214565b604051808215151515815260200191505060405180910390f35b34801561096157600080fd5b50610ae4600480360361014081101561097957600080fd5b810190808035906020019064010000000081111561099657600080fd5b8201836020820111156109a857600080fd5b803590602001918460018302840111640100000000831117156109ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061127b565b6040518082815260200191505060405180910390f35b348015610b0657600080fd5b50610b0f611370565b6040518082815260200191505060405180910390f35b348015610b3157600080fd5b50610cac60048036036080811015610b4857600080fd5b8101908080359060200190640100000000811115610b6557600080fd5b820183602082011115610b7757600080fd5b80359060200191846001830284011164010000000083111715610b9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bfc57600080fd5b820183602082011115610c0e57600080fd5b80359060200191846001830284011164010000000083111715610c3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611390565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610ec86004803603610140811015610ce657600080fd5b8101908080359060200190640100000000811115610d0357600080fd5b820183602082011115610d1557600080fd5b80359060200191846001830284011164010000000083111715610d3757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610e4257600080fd5b820183602082011115610e5457600080fd5b80359060200191846001830284011164010000000083111715610e7657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611435565b604051808215151515815260200191505060405180910390f35b600080610ef78d8d8d8d8d8d8d8d8d8d61127b565b90506000610f0582856115ab565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f3f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614610f7757600080fd5b600080600084815260200190815260200160002054905060026000808581526020019081526020016000208190555060008114610fb357600080fd5b600193505050509b9a5050505050505050505050565b6000806000838152602001908152602001600020549050919050565b60006040518080611c1360b2913960b201905060405180910390208b805190602001208b8b8b8b8b8b8b8b8b604051602001808c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019b5050505050505050505050506040516020818303038152906040528051906020012090509a9950505050505050505050565b60006111aa6040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b156111b457600080fd5b6111c68b8b8b8b8b8b8b8b8b8b61174a565b6111cf57600080fd5b60608b90506111e18a8a8a8a85611a5e565b60019150509a9950505050505050505050565b60006040518080611bb9605a9139605a0190506040518091039020905090565b6000806112298d8d8d8d8d8d8d8d8d8d61127b565b9050600061123782856115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614925050509b9a5050505050505050505050565b6000806112f56040518060400160405280600b81526020017f4c6176612057616c6c65740000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250600130611390565b6113078d8d8d8d8d8d8d8d8d8d610fe5565b60405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050809150509a9950505050505050505050565b60006040518080611c1360b2913960b20190506040518091039020905090565b60006040518080611bb9605a9139605a0190506040518091039020858051906020012085805190602001208585604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050949350505050565b60006114766040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b61147f57600080fd5b6114918b8b8b8b8b8b8b8b8b8b61174a565b61149a57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff166323b872dd8a8a896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506040513d602081101561157f57600080fd5b810190808051906020019092919050505061159957600080fd5b600190509a9950505050505050505050565b60008060008060418551146115c65760009350505050611687565b6020850151925060408501519150606085015160001a9050601b8160ff1610156115f157601b810190505b601b8160ff16141580156116095750601c8160ff1614155b1561161a5760009350505050611687565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611677573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600081518351146116a15760009050611744565b60008090505b835181101561173e578281815181106116bc57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106116f557fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611731576000915050611744565b80806001019150506116a7565b50600190505b92915050565b600080309050600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614806117c8575061178f8b611ba5565b1580156117c757508a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b8061189157506117d78b611ba5565b801561189057508a73ffffffffffffffffffffffffffffffffffffffff16638c0636866040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561182657600080fd5b505af115801561183a573d6000803e3d6000fd5b505050506040513d602081101561185057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b61189a57600080fd5b60006118ae8d8d8d8d868e8e8e8e8e61127b565b905060006118bc82866115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16146118f657600080fd5b864310806119045750600087145b61190d57600080fd5b60008060008481526020019081526020016000205490506001600080858152602001908152602001600020819055506000811461194957600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd8e338c6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b505050506040513d6020811015611a2e57600080fd5b8101908080519060200190929190505050611a4857600080fd5b60019450505050509a9950505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1868486856040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b37578082015181840152602081019050611b1c565b50505050905090810190601f168015611b645780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050505050505050565b600080823b90506000811191505091905056fe454950373132446f6d61696e28737472696e6720636f6e74726163744e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294c6176615061636b657428737472696e67206d6574686f644e616d652c616464726573732072656c6179417574686f726974792c616464726573732066726f6d2c6164647265737320746f2c616464726573732077616c6c65742c6164647265737320746f6b656e2c75696e7432353620746f6b656e732c75696e743235362072656c61796572526577617264546f6b656e732c75696e7432353620657870697265732c75696e74323536206e6f6e636529a265627a7a72315820608421ca71d0c3f32b57dc88735f8f85c46e47c014d4098de6e2c69c64fff35464736f6c63430005100032
Deployed Bytecode Sourcemap
3395:9759:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5723:8;;;10502:970;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10502:970:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10502:970:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10502:970:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10502:970:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10502:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10502:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10502:970:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10502:970:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10502:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10502:970:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11485:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11485:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11485:130:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5001:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5001:602:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5001:602:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5001:602:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5001:602:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5001:602:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5001:602:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9087:606;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9087:606:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9087:606:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9087:606:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9087:606:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9087:606:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9087:606:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9087:606:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9087:606:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9087:606:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9087:606:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4116:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4116:107:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11624:616;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11624:616:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11624:616:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11624:616:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11624:616:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11624:616:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11624:616:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11624:616:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11624:616:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11624:616:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11624:616:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5823:676;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5823:676:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5823:676:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5823:676:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5823:676:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5823:676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5823:676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4885:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4885:105:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4231:387;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4231:387:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4231:387:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4231:387:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4231:387:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4231:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4231:387:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4231:387:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4231:387:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4231:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4231:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9935:562;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9935:562:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9935:562:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9935:562:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9935:562:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9935:562:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9935:562:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9935:562:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9935:562:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9935:562:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9935:562:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10502:970;10745:12;10782:15;10800:110;10821:10;10832:14;10847:4;10852:2;10855:6;10862:5;10869:6;10876:19;10896:7;10904:5;10800:20;:110::i;:::-;10782:128;;10925:32;10960:26;10968:7;10976:9;10960:7;:26::i;:::-;10925:61;;11090:4;11062:32;;:24;:32;;;11054:41;;;;;;11202:10;11194:18;;:4;:18;;;11186:27;;;;;;11286:20;11309:16;:25;11326:7;11309:25;;;;;;;;;;;;11286:48;;11375:3;11347:16;:25;11364:7;11347:25;;;;;;;;;;;:31;;;;11432:3;11413:15;:22;11405:31;;;;;;11458:4;11451:11;;;;;10502:970;;;;;;;;;;;;;:::o;11485:130::-;11551:4;11581:16;:24;11598:6;11581:24;;;;;;;;;;;;11573:33;;11485:130;;;:::o;5001:602::-;5228:7;4669:203;;;;;;;;;;;;;;;;;;;5346:10;5330:28;;;;;;5375:14;5406:4;5427:2;5446:6;5469:5;5491:6;5514:19;5550:7;5574:5;5267:325;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5267:325:0;;;5257:336;;;;;;5250:343;;5001:602;;;;;;;;;;;;:::o;9087:606::-;9331:12;9368:40;;;;;;;;;;;;;;;;;;9396:10;9368;:40::i;:::-;9367:41;9359:50;;;;;;9431:118;9456:10;9467:14;9482:4;9487:2;9491:5;9497:6;9504:19;9524:7;9532:5;9539:9;9431:24;:118::i;:::-;9423:127;;;;;;9562:19;9590:10;9562:39;;9613:48;9633:4;9638:2;9641:5;9647:6;9654;9613:19;:48::i;:::-;9681:4;9674:11;;;9087:606;;;;;;;;;;;;:::o;4116:107::-;4170:7;3985:123;;;;;;;;;;;;;;;;;;;4188:28;;4116:107;:::o;11624:616::-;11873:12;11971:15;11989:110;12010:10;12021:14;12036:4;12041:2;12044:6;12051:5;12058:6;12065:19;12085:7;12093:5;11989:20;:110::i;:::-;11971:128;;12113:32;12148:26;12156:7;12164:9;12148:7;:26::i;:::-;12113:61;;12205:24;12197:32;;:4;:32;;;12188:42;;;;11624:616;;;;;;;;;;;;;:::o;5823:676::-;6051:7;6161:14;6256:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6294:1;6304:4;6256:19;:54::i;:::-;6331:106;6349:10;6360:14;6375:4;6380:2;6383:6;6390:5;6396:6;6403:19;6423:7;6431:5;6331:17;:106::i;:::-;6188:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6188:266:0;;;6178:277;;;;;;6161:294;;6479:6;6472:13;;;5823:676;;;;;;;;;;;;:::o;4885:105::-;4940:7;4669:203;;;;;;;;;;;;;;;;;;;4958:26;;4885:105;:::o;4231:387::-;4376:7;3985:123;;;;;;;;;;;;;;;;;;;4490:12;4474:30;;;;;;4535:7;4519:25;;;;;;4559:7;4581:17;4413:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4413:196:0;;;4403:207;;;;;;4396:214;;4231:387;;;;;;:::o;9935:562::-;10177:12;10211:40;;;;;;;;;;;;;;;;;;10239:10;10211;:40::i;:::-;10203:49;;;;;;10272:118;10297:10;10308:14;10323:4;10328:2;10332:5;10338:6;10345:19;10365:7;10373:5;10380:9;10272:24;:118::i;:::-;10264:127;;;;;;10425:5;10410:34;;;10445:4;10452:2;10456:6;10410:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10410:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10410:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10410:54:0;;;;;;;;;;;;;;;;10401:66;;;;;;10486:4;10479:11;;9935:562;;;;;;;;;;;;:::o;1701:731::-;1774:7;1790:9;1806;1822:7;1890:2;1876:3;:10;:16;1872:58;;1919:1;1903:19;;;;;;;1872:58;2029:2;2024:3;2020:12;2014:19;2009:24;;2061:2;2056:3;2052:12;2046:19;2041:24;;2101:2;2096:3;2092:12;2086:19;2083:1;2078:28;2073:33;;2217:2;2213:1;:6;;;2209:36;;;2235:2;2230:7;;;;2209:36;2322:2;2317:1;:7;;;;:18;;;;;2333:2;2328:1;:7;;;;2317:18;2313:114;;;2362:1;2346:19;;;;;;;2313:114;2395:24;2405:4;2411:1;2414;2417;2395:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2395:24:0;;;;;;;;2388:31;;;;;1701:731;;;;;:::o;12859:288::-;12935:4;12979:2;:9;12966:2;:9;:22;12963:39;;12997:5;12990:12;;;;12963:39;13022:6;13029:1;13022:8;;13017:93;13034:2;:9;13032:1;:11;13017:93;;;13077:2;13080:1;13077:5;;;;;;;;;;;;;;;;13068:14;;;:2;13071:1;13068:5;;;;;;;;;;;;;;;;:14;;;;13065:31;;13091:5;13084:12;;;;;13065:31;13045:3;;;;;;;13017:93;;;;13131:4;13124:11;;12859:288;;;;;:::o;6683:1710::-;6924:12;6952:14;6977:4;6952:30;;7299:3;7273:30;;:14;:30;;;:118;;;;7319:39;7343:14;7319:23;:39::i;:::-;7318:40;:72;;;;;7376:14;7362:28;;:10;:28;;;7318:72;7273:118;:250;;;;7406:39;7430:14;7406:23;:39::i;:::-;:116;;;;;7487:14;7463:57;;;:59;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7463:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7463:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7463:59:0;;;;;;;;;;;;;;;;7449:73;;:10;:73;;;7406:116;7273:250;7264:262;;;;;;7611:15;7629:109;7650:10;7661:14;7676:4;7681:2;7684:6;7691:5;7697:6;7704:19;7724:7;7732:5;7629:20;:109::i;:::-;7611:127;;7754:32;7789:26;7797:7;7805:9;7789:7;:26::i;:::-;7754:61;;7913:24;7905:32;;:4;:32;;;7897:41;;;;;;8031:7;8016:12;:22;:38;;;;8053:1;8042:7;:12;8016:38;8008:47;;;;;;8070:20;8093:16;:25;8110:7;8093:25;;;;;;;;;;;;8070:48;;8159:3;8131:16;:25;8148:7;8131:25;;;;;;;;;;;:31;;;;8210:3;8191:15;:22;8183:32;;;;;;8297:5;8282:34;;;8317:4;8323:10;8335:19;8282:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8282:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8282:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8282:74:0;;;;;;;;;;;;;;;;8273:86;;;;;;8382:4;8375:11;;;;;;6683:1710;;;;;;;;;;;;:::o;9701:223::-;9857:2;9834:42;;;9877:4;9883:6;9891:5;9904:10;9834:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9834:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9834:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9834:82:0;;;;9701:223;;;;;:::o;12534:314::-;12603:4;12625:15;12790:3;12778:16;12764:30;;12837:1;12826:10;:12;12818:21;;;12534:314;;;:::o
Swarm Source
bzzr://608421ca71d0c3f32b57dc88735f8f85c46e47c014d4098de6e2c69c64fff354
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.