ETH Price: $2,105.11 (+2.04%)

Contract

0x4E154Bd4f47d266569944a7bEE0E9B1e03aBa43B
 

Overview

ETH Balance

0.0060648 ETH

Eth Value

$12.77 (@ $2,105.11/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Spend149567952022-06-13 15:51:361369 days ago1655135496IN
0x4E154Bd4...e03aBa43B
0 ETH0.01018308134.98260735
Spend149567652022-06-13 15:45:111369 days ago1655135111IN
0x4E154Bd4...e03aBa43B
0 ETH0.01267128126.17284336
Spend149565892022-06-13 15:01:101369 days ago1655132470IN
0x4E154Bd4...e03aBa43B
0 ETH0.01801649238.8569184
Spend148414232022-05-25 10:42:131388 days ago1653475333IN
0x4E154Bd4...e03aBa43B
0 ETH0.0013934318.4767133
Spend147784382022-05-15 6:44:221398 days ago1652597062IN
0x4E154Bd4...e03aBa43B
0 ETH0.0018509524.53542957
Spend146796672022-04-29 14:13:471414 days ago1651241627IN
0x4E154Bd4...e03aBa43B
0 ETH0.0048981864.95916702
Spend145848192022-04-14 17:13:061429 days ago1649956386IN
0x4E154Bd4...e03aBa43B
0 ETH0.00927563122.99290604
Spend145840932022-04-14 14:32:151429 days ago1649946735IN
0x4E154Bd4...e03aBa43B
0 ETH0.0058562677.62815583
Spend143899782022-03-15 8:04:271459 days ago1647331467IN
0x4E154Bd4...e03aBa43B
0 ETH0.0017382323.04501913
Spend142627222022-02-23 13:53:471479 days ago1645624427IN
0x4E154Bd4...e03aBa43B
0 ETH0.0033526144.44789619
Spend142082892022-02-15 3:28:011487 days ago1644895681IN
0x4E154Bd4...e03aBa43B
0 ETH0.0035332746.85050893
Spend140490882022-01-21 13:09:561512 days ago1642770596IN
0x4E154Bd4...e03aBa43B
0 ETH0.01323052175.37816736
Spend140098382022-01-15 11:49:351518 days ago1642247375IN
0x4E154Bd4...e03aBa43B
0 ETH0.00776331102.95621628
Spend138204382021-12-17 4:19:371547 days ago1639714777IN
0x4E154Bd4...e03aBa43B
0 ETH0.0057330476.03106499
Spend138082242021-12-15 6:56:101549 days ago1639551370IN
0x4E154Bd4...e03aBa43B
0 ETH0.0062749183.2172099
Spend136240242021-11-16 2:31:571578 days ago1637029917IN
0x4E154Bd4...e03aBa43B
0 ETH0.01283337170.11372231
Spend134217192021-10-15 9:00:201610 days ago1634288420IN
0x4E154Bd4...e03aBa43B
0 ETH0.0120407159.65717558
Spend ERC20133837812021-10-09 9:39:161616 days ago1633772356IN
0x4E154Bd4...e03aBa43B
0 ETH0.0087421578.79365038
Spend ERC20133198892021-09-29 9:35:231626 days ago1632908123IN
0x4E154Bd4...e03aBa43B
0 ETH0.0069740462.85754486
Spend ERC20132659832021-09-21 0:51:581634 days ago1632185518IN
0x4E154Bd4...e03aBa43B
0 ETH0.02245834202.46241751
Spend ERC20132306372021-09-15 13:41:181640 days ago1631713278IN
0x4E154Bd4...e03aBa43B
0 ETH0.0074816367.43974402
Spend ERC20131239732021-08-30 1:47:161656 days ago1630288036IN
0x4E154Bd4...e03aBa43B
0 ETH0.0105195494.83389961
Spend130883112021-08-24 13:31:201662 days ago1629811880IN
0x4E154Bd4...e03aBa43B
0 ETH0.0056137674.42544343
Spend130593732021-08-20 2:06:171666 days ago1629425177IN
0x4E154Bd4...e03aBa43B
0 ETH0.0033550944.50193735
Spend130363162021-08-16 12:34:061670 days ago1629117246IN
0x4E154Bd4...e03aBa43B
0 ETH0.0034767546.10102399
View all transactions

Latest 24 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-149567952022-06-13 15:51:361369 days ago1655135496
0x4E154Bd4...e03aBa43B
245.69 ETH
-149567652022-06-13 15:45:111369 days ago1655135111
0x4E154Bd4...e03aBa43B
165 ETH
-149565892022-06-13 15:01:101369 days ago1655132470
0x4E154Bd4...e03aBa43B
1,644 ETH
-148414232022-05-25 10:42:131388 days ago1653475333
0x4E154Bd4...e03aBa43B
7.5 ETH
-147784382022-05-15 6:44:221398 days ago1652597062
0x4E154Bd4...e03aBa43B
30 ETH
-146796672022-04-29 14:13:471414 days ago1651241627
0x4E154Bd4...e03aBa43B
5 ETH
-145848192022-04-14 17:13:061429 days ago1649956386
0x4E154Bd4...e03aBa43B
4 ETH
-145840932022-04-14 14:32:151429 days ago1649946735
0x4E154Bd4...e03aBa43B
38 ETH
-143899782022-03-15 8:04:271459 days ago1647331467
0x4E154Bd4...e03aBa43B
30 ETH
-142627222022-02-23 13:53:471479 days ago1645624427
0x4E154Bd4...e03aBa43B
30 ETH
-142082892022-02-15 3:28:011487 days ago1644895681
0x4E154Bd4...e03aBa43B
35 ETH
-140490882022-01-21 13:09:561512 days ago1642770596
0x4E154Bd4...e03aBa43B
25 ETH
-140098382022-01-15 11:49:351518 days ago1642247375
0x4E154Bd4...e03aBa43B
25 ETH
-138204382021-12-17 4:19:371547 days ago1639714777
0x4E154Bd4...e03aBa43B
15 ETH
-138082242021-12-15 6:56:101549 days ago1639551370
0x4E154Bd4...e03aBa43B
25 ETH
-136240242021-11-16 2:31:571578 days ago1637029917
0x4E154Bd4...e03aBa43B
20 ETH
-134217192021-10-15 9:00:201610 days ago1634288420
0x4E154Bd4...e03aBa43B
20 ETH
-130883112021-08-24 13:31:201662 days ago1629811880
0x4E154Bd4...e03aBa43B
50 ETH
-130593732021-08-20 2:06:171666 days ago1629425177
0x4E154Bd4...e03aBa43B
180 ETH
-130363162021-08-16 12:34:061670 days ago1629117246
0x4E154Bd4...e03aBa43B
180 ETH
-130180432021-08-13 16:56:111673 days ago1628873771
0x4E154Bd4...e03aBa43B
150 ETH
-130139282021-08-13 1:47:291673 days ago1628819249
0x4E154Bd4...e03aBa43B
80 ETH
-126430412021-06-16 3:12:461731 days ago1623813166
0x4E154Bd4...e03aBa43B
50 ETH
-124271472021-05-13 16:36:451765 days ago1620923805
0x4E154Bd4...e03aBa43B
3,023.86 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB6020EBE...bE4B9321e
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
OwnbitMultiSig

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-01
*/

pragma solidity ^0.4.26;

// This is the ETH/ERC20 multisig contract for Ownbit.
//
// For 2-of-3 multisig, to authorize a spend, two signtures must be provided by 2 of the 3 owners.
// To generate the message to be signed, provide the destination address and
// spend amount (in wei) to the generateMessageToSign method.
// The signatures must be provided as the (v, r, s) hex-encoded coordinates.
// The S coordinate must be 0x00 or 0x01 corresponding to 0x1b and 0x1c, respectively.
//
// WARNING: The generated message is only valid until the next spend is executed.
//          after that, a new message will need to be calculated.
//
//
// INFO: This contract is ERC20 compatible.
// This contract can both receive ETH and ERC20 tokens.
// Notice that NFT (ERC721/ERC1155) is not supported. But can be transferred out throught spendAny.
// Last update time: 2020-12-21.
// copyright @ ownbit.io
//
// Accident Protection MultiSig, rules:
//
// Participants must keep themselves active by submitting transactions. 
// Not submitting any transaction within 3,000,000 ETH blocks (roughly 416 days) will be treated as wallet lost (i.e. accident happened), 
// other participants can still spend the assets as along as: valid signing count >= Min(mininual required count, active owners).
//

interface Erc20 {
  function approve(address, uint256) public;

  function transfer(address, uint256) public;
    
  //function balanceOf(address) view public returns (uint256);
}

contract OwnbitMultiSig {
    
  uint constant public MAX_OWNER_COUNT = 9;
  //uint constant public MAX_INACTIVE_BLOCKNUMBER = 300; //300 ETH blocks, roughly 1 hour, for testing.
  uint constant public MAX_INACTIVE_BLOCKNUMBER = 3000000; //3,000,000 ETH blocks, roughly 416 days.

  // The N addresses which control the funds in this contract. The
  // owners of M of these addresses will need to both sign a message
  // allowing the funds in this contract to be spent.
  mapping(address => uint256) private ownerBlockMap; //uint256 is the active blockNumber of this owner
  address[] private owners;
  uint private required;

  // The contract nonce is not accessible to the contract so we
  // implement a nonce-like variable for replay protection.
  uint256 private spendNonce = 0;
  
  // An event sent when funds are received.
  event Funded(address from, uint value);
  
  // An event sent when a spend is triggered to the given address.
  event Spent(address to, uint transfer);
  
  // An event sent when a spendERC20 is triggered to the given address.
  event SpentERC20(address erc20contract, address to, uint transfer);
  
  // An event sent when an spendAny is executed.
  event SpentAny(address to, uint transfer);

  modifier validRequirement(uint ownerCount, uint _required) {
    require (ownerCount <= MAX_OWNER_COUNT
            && _required <= ownerCount
            && _required >= 1);
    _;
  }
  
  /// @dev Contract constructor sets initial owners and required number of confirmations.
  /// @param _owners List of initial owners.
  /// @param _required Number of required confirmations.
  constructor(address[] _owners, uint _required) public validRequirement(_owners.length, _required) {
    for (uint i = 0; i < _owners.length; i++) {
        //onwer should be distinct, and non-zero
        if (ownerBlockMap[_owners[i]] > 0 || _owners[i] == address(0x0)) {
            revert();
        }
        ownerBlockMap[_owners[i]] = block.number;
    }
    owners = _owners;
    required = _required;
  }


  // The fallback function for this contract.
  function() public payable {
    if (msg.value > 0) {
        emit Funded(msg.sender, msg.value);
    }
  }
  
  // @dev Returns list of owners.
  // @return List of owner addresses.
  function getOwners() public view returns (address[]) {
    return owners;
  }
    
  function getSpendNonce() public view returns (uint256) {
    return spendNonce;
  }
    
  function getRequired() public view returns (uint) {
    return required;
  }
  
  //return the active block number of this owner
  function getOwnerBlock(address addr) public view returns (uint) {
    return ownerBlockMap[addr];
  }

  // Generates the message to sign given the output destination address and amount.
  // includes this contract's address and a nonce for replay protection.
  // One option to independently verify: https://leventozturk.com/engineering/sha3/ and select keccak
  function generateMessageToSign(address erc20Contract, address destination, uint256 value) private view returns (bytes32) {
    //the sequence should match generateMultiSigV2 in JS
    bytes32 message = keccak256(abi.encodePacked(address(this), erc20Contract, destination, value, spendNonce));
    return message;
  }
  
  function _messageToRecover(address erc20Contract, address destination, uint256 value) private view returns (bytes32) {
    bytes32 hashedUnsignedMessage = generateMessageToSign(erc20Contract, destination, value);
    bytes memory prefix = "\x19Ethereum Signed Message:\n32";
    return keccak256(abi.encodePacked(prefix, hashedUnsignedMessage));
  }
  
  // @destination: the ether receiver address.
  // @value: the ether value, in wei.
  // @vs, rs, ss: the signatures
  function spend(address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) external {
    require(destination != address(this), "Not allow sending to yourself");
    require(address(this).balance >= value && value > 0, "balance or spend value invalid");
    require(_validSignature(address(0x0), destination, value, vs, rs, ss), "invalid signatures");
    spendNonce = spendNonce + 1;
    //transfer will throw if fails
    destination.transfer(value);
    emit Spent(destination, value);
  }
  
  // @erc20contract: the erc20 contract address.
  // @destination: the token receiver address.
  // @value: the token value, in token minimum unit.
  // @vs, rs, ss: the signatures
  function spendERC20(address destination, address erc20contract, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) external {
    require(destination != address(this), "Not allow sending to yourself");
    //transfer erc20 token
    //uint256 tokenValue = Erc20(erc20contract).balanceOf(address(this));
    require(value > 0, "Erc20 spend value invalid");
    require(_validSignature(erc20contract, destination, value, vs, rs, ss), "invalid signatures");
    spendNonce = spendNonce + 1;
    // transfer tokens from this contract to the destination address
    Erc20(erc20contract).transfer(destination, value);
    emit SpentERC20(erc20contract, destination, value);
  }
  
  //0x9 is used for spendAny
  //be careful with any action, data is not included into signature computation. So any data can be included in spendAny.
  //This is usually for some emergent recovery, for example, recovery of NTFs, etc.
  //Owners should not generate 0x9 based signatures in normal cases.
  function spendAny(address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss, bytes data) external {
    require(destination != address(this), "Not allow sending to yourself");
    require(_validSignature(address(0x9), destination, value, vs, rs, ss), "invalid signatures");
    spendNonce = spendNonce + 1;
    //transfer tokens from this contract to the destination address
    if (destination.call.value(value)(data)) {
        emit SpentAny(destination, value);
    }
  }
  
  //send a tx from the owner address to active the owner
  //Allow the owner to transfer some ETH, although this is not necessary.
  function active() external payable {
    require(ownerBlockMap[msg.sender] > 0, "Not an owner");
    ownerBlockMap[msg.sender] = block.number;
  }
  
  function getRequiredWithoutInactive() public view returns (uint) {
    uint activeOwner = 0;  
    for (uint i = 0; i < owners.length; i++) {
        //if the owner is active
        if (ownerBlockMap[owners[i]] + MAX_INACTIVE_BLOCKNUMBER >= block.number) {
            activeOwner++;
        }
    }
    //active owners still equal or greater then required
    if (activeOwner >= required) {
        return required;
    }
    //active less than required, all active must sign
    if (activeOwner >= 1) {
        return activeOwner;
    }
    //at least needs one signature.
    return 1;
  }

  // Confirm that the signature triplets (v1, r1, s1) (v2, r2, s2) ...
  // authorize a spend of this contract's funds to the given destination address.
  function _validSignature(address erc20Contract, address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) private returns (bool) {
    require(vs.length == rs.length);
    require(rs.length == ss.length);
    require(vs.length <= owners.length);
    require(vs.length >= getRequiredWithoutInactive());
    bytes32 message = _messageToRecover(erc20Contract, destination, value);
    address[] memory addrs = new address[](vs.length);
    for (uint i = 0; i < vs.length; i++) {
        //recover the address associated with the public key from elliptic curve signature or return zero on error 
        addrs[i] = ecrecover(message, vs[i]+27, rs[i], ss[i]);
    }
    require(_distinctOwners(addrs));
    _updateActiveBlockNumber(addrs); //update addrs' active block number
    
    //check again, this is important to prevent inactive owners from stealing the money.
    require(vs.length >= getRequiredWithoutInactive(), "Active owners updated after the call, please call active() before calling spend.");
    
    return true;
  }
  
  // Confirm the addresses as distinct owners of this contract.
  function _distinctOwners(address[] addrs) private view returns (bool) {
    if (addrs.length > owners.length) {
        return false;
    }
    for (uint i = 0; i < addrs.length; i++) {
        //> 0 means one of the owner
        if (ownerBlockMap[addrs[i]] == 0) {
            return false;
        }
        //address should be distinct
        for (uint j = 0; j < i; j++) {
            if (addrs[i] == addrs[j]) {
                return false;
            }
        }
    }
    return true;
  }
  
  //update the active block number for those owners
  function _updateActiveBlockNumber(address[] addrs) private {
    for (uint i = 0; i < addrs.length; i++) {
        //only update block number for owners
        if (ownerBlockMap[addrs[i]] > 0) {
            ownerBlockMap[addrs[i]] = block.number;
        }
    }
  }
  
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"erc20contract","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"}],"name":"spendERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"active","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getRequired","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_INACTIVE_BLOCKNUMBER","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getOwnerBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"}],"name":"spend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"},{"name":"data","type":"bytes"}],"name":"spendAny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSpendNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRequiredWithoutInactive","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Funded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"Spent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"erc20contract","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"SpentERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"SpentAny","type":"event"}]

0x608060405260006003553480156200001657600080fd5b5060405162001b0438038062001b0483398101806040528101908080518201929190602001805190602001909291905050506000825182600982111580156200005f5750818111155b80156200006d575060018110155b15156200007957600080fd5b600092505b8451831015620001a657600080600087868151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180620001325750600073ffffffffffffffffffffffffffffffffffffffff1685848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200013d57600080fd5b4360008087868151811015156200015057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082806001019350506200007e565b8460019080519060200190620001be929190620001d1565b50836002819055505050505050620002a6565b8280548282559060005260206000209081019282156200024d579160200282015b828111156200024c5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620001f2565b5b5090506200025c919062000260565b5090565b620002a391905b808211156200029f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000267565b5090565b90565b61184e80620002b66000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063011736721461012657806302fb0c5e146101db5780631398a5f6146101e55780635f43e63f146102105780636ad688261461023b57806385b2566a14610292578063a0e67e2b14610327578063b7d5e56414610393578063c6a2a9f114610440578063d74f8edd1461046b578063f3acb25814610496575b6000341115610124577f5af8184bef8e4b45eb9f6ed7734d04da38ced226495548f46e0c8ff8d7d9a5243334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b005b34801561013257600080fd5b506101d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506104c1565b005b6101e361085d565b005b3480156101f157600080fd5b506101fa610958565b6040518082815260200191505060405180910390f35b34801561021c57600080fd5b50610225610962565b6040518082815260200191505060405180910390f35b34801561024757600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610969565b6040518082815260200191505060405180910390f35b34801561029e57600080fd5b50610325600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506109b1565b005b34801561033357600080fd5b5061033c610cc8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561037f578082015181840152602081019050610364565b505050509050019250505060405180910390f35b34801561039f57600080fd5b5061043e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050610d56565b005b34801561044c57600080fd5b50610455610fd1565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b50610480610fdb565b6040518082815260200191505060405180910390f35b3480156104a257600080fd5b506104ab610fe0565b6040518082815260200191505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151515610565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b6000871115156105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572633230207370656e642076616c756520696e76616c69640000000000000081525060200191505060405180910390fd5b610678888a898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b15156106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561079b57600080fd5b505af11580156107af573d6000803e3d6000fd5b505050507f3d1915a2cdcecdfffc5eb2a7994c069bad5d4aa96aca85667dedbe60bb80491c888a89604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050505050505050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e206f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b436000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600254905090565b622dc6c081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b863073ffffffffffffffffffffffffffffffffffffffff163110158015610a7c5750600087115b1515610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206f72207370656e642076616c756520696e76616c6964000081525060200191505060405180910390fd5b610b8c600089898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015610c52573d6000803e3d6000fd5b507fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b68888604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050505050565b60606001805480602002602001604051908101604052809291908181526020018280548015610d4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d02575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515610dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b610e9660098b8b8b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508973ffffffffffffffffffffffffffffffffffffffff168983836040518083838082843782019150509250505060006040518083038185875af19250505015610fc5577f62ee6f1a2424e70e5cff9d61a0d928aa101e198f192d726c651f1bdad1cd40d98a8a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050505050505050565b6000600354905090565b600981565b6000806000809150600090505b6001805490508110156110955743622dc6c060008060018581548110151561101157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015156110885781806001019250505b8080600101915050610fed565b600254821015156110aa5760025492506110c1565b6001821015156110bc578192506110c1565b600192505b505090565b60008060606000855187511415156110dd57600080fd5b845186511415156110ed57600080fd5b60018054905087511115151561110257600080fd5b61110a610fe0565b87511015151561111957600080fd5b6111248a8a8a611381565b925086516040519080825280602002602001820160405280156111565781602001602082028038833980820191505090505b509150600090505b865181101561128757600183601b898481518110151561117a57fe5b9060200190602002015101888481518110151561119357fe5b9060200190602002015188858151811015156111ab57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611226573d6000803e3d6000fd5b50505060206040510351828281518110151561123e57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061115e565b611290826114b5565b151561129b57600080fd5b6112a4826115e4565b6112ac610fe0565b875110151515611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260508152602001807f416374697665206f776e6572732075706461746564206166746572207468652081526020017f63616c6c2c20706c656173652063616c6c206163746976652829206265666f7281526020017f652063616c6c696e67207370656e642e0000000000000000000000000000000081525060600191505060405180910390fd5b600193505050509695505050505050565b60008060606113918686866116bd565b91506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905080826040516020018083805190602001908083835b60208310151561140557805182526020820191506020810190506020830392506113e0565b6001836020036101000a0380198251168184511680821785525050505050509050018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561147d5780518252602082019150602081019050602083039250611458565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925050509392505050565b6000806000600180549050845111156114d157600092506115dd565b600091505b83518210156115d857600080600086858151811015156114f257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561154657600092506115dd565b600090505b818110156115cb57838181518110151561156157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16848381518110151561158f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614156115be57600092506115dd565b808060010191505061154b565b81806001019250506114d6565b600192505b5050919050565b60008090505b81518110156116b9576000806000848481518110151561160657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116ac5743600080848481518110151561166357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806001019150506115ea565b5050565b60008030858585600354604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156117e857805182526020820191506020810190506020830392506117c3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090508091505093925050505600a165627a7a72305820b613b06855ae81ee59124d428e10c528ef699dc39b36ec9cc5ca527fc94d9282002900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000097f3bc97d0f27e3e977ecac6ac35f01ff70a96760000000000000000000000007cb8c3f3cbfc2e1deb5552bd5626c8c1b9785bdb

Deployed Bytecode

0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063011736721461012657806302fb0c5e146101db5780631398a5f6146101e55780635f43e63f146102105780636ad688261461023b57806385b2566a14610292578063a0e67e2b14610327578063b7d5e56414610393578063c6a2a9f114610440578063d74f8edd1461046b578063f3acb25814610496575b6000341115610124577f5af8184bef8e4b45eb9f6ed7734d04da38ced226495548f46e0c8ff8d7d9a5243334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b005b34801561013257600080fd5b506101d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506104c1565b005b6101e361085d565b005b3480156101f157600080fd5b506101fa610958565b6040518082815260200191505060405180910390f35b34801561021c57600080fd5b50610225610962565b6040518082815260200191505060405180910390f35b34801561024757600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610969565b6040518082815260200191505060405180910390f35b34801561029e57600080fd5b50610325600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506109b1565b005b34801561033357600080fd5b5061033c610cc8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561037f578082015181840152602081019050610364565b505050509050019250505060405180910390f35b34801561039f57600080fd5b5061043e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050610d56565b005b34801561044c57600080fd5b50610455610fd1565b6040518082815260200191505060405180910390f35b34801561047757600080fd5b50610480610fdb565b6040518082815260200191505060405180910390f35b3480156104a257600080fd5b506104ab610fe0565b6040518082815260200191505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151515610565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b6000871115156105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572633230207370656e642076616c756520696e76616c69640000000000000081525060200191505060405180910390fd5b610678888a898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b15156106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561079b57600080fd5b505af11580156107af573d6000803e3d6000fd5b505050507f3d1915a2cdcecdfffc5eb2a7994c069bad5d4aa96aca85667dedbe60bb80491c888a89604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050505050505050565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420616e206f776e6572000000000000000000000000000000000000000081525060200191505060405180910390fd5b436000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600254905090565b622dc6c081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b863073ffffffffffffffffffffffffffffffffffffffff163110158015610a7c5750600087115b1515610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f62616c616e6365206f72207370656e642076616c756520696e76616c6964000081525060200191505060405180910390fd5b610b8c600089898989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508888808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508787808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508773ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015610c52573d6000803e3d6000fd5b507fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b68888604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050505050565b60606001805480602002602001604051908101604052809291908181526020018280548015610d4c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d02575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614151515610dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f7420616c6c6f772073656e64696e6720746f20796f757273656c6600000081525060200191505060405180910390fd5b610e9660098b8b8b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508989808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050506110c6565b1515610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e76616c6964207369676e617475726573000000000000000000000000000081525060200191505060405180910390fd5b6001600354016003819055508973ffffffffffffffffffffffffffffffffffffffff168983836040518083838082843782019150509250505060006040518083038185875af19250505015610fc5577f62ee6f1a2424e70e5cff9d61a0d928aa101e198f192d726c651f1bdad1cd40d98a8a604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b50505050505050505050565b6000600354905090565b600981565b6000806000809150600090505b6001805490508110156110955743622dc6c060008060018581548110151561101157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015156110885781806001019250505b8080600101915050610fed565b600254821015156110aa5760025492506110c1565b6001821015156110bc578192506110c1565b600192505b505090565b60008060606000855187511415156110dd57600080fd5b845186511415156110ed57600080fd5b60018054905087511115151561110257600080fd5b61110a610fe0565b87511015151561111957600080fd5b6111248a8a8a611381565b925086516040519080825280602002602001820160405280156111565781602001602082028038833980820191505090505b509150600090505b865181101561128757600183601b898481518110151561117a57fe5b9060200190602002015101888481518110151561119357fe5b9060200190602002015188858151811015156111ab57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611226573d6000803e3d6000fd5b50505060206040510351828281518110151561123e57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061115e565b611290826114b5565b151561129b57600080fd5b6112a4826115e4565b6112ac610fe0565b875110151515611370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260508152602001807f416374697665206f776e6572732075706461746564206166746572207468652081526020017f63616c6c2c20706c656173652063616c6c206163746976652829206265666f7281526020017f652063616c6c696e67207370656e642e0000000000000000000000000000000081525060600191505060405180910390fd5b600193505050509695505050505050565b60008060606113918686866116bd565b91506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905080826040516020018083805190602001908083835b60208310151561140557805182526020820191506020810190506020830392506113e0565b6001836020036101000a0380198251168184511680821785525050505050509050018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561147d5780518252602082019150602081019050602083039250611458565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925050509392505050565b6000806000600180549050845111156114d157600092506115dd565b600091505b83518210156115d857600080600086858151811015156114f257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561154657600092506115dd565b600090505b818110156115cb57838181518110151561156157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16848381518110151561158f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614156115be57600092506115dd565b808060010191505061154b565b81806001019250506114d6565b600192505b5050919050565b60008090505b81518110156116b9576000806000848481518110151561160657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116ac5743600080848481518110151561166357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806001019150506115ea565b5050565b60008030858585600354604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156117e857805182526020820191506020810190506020830392506117c3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090508091505093925050505600a165627a7a72305820b613b06855ae81ee59124d428e10c528ef699dc39b36ec9cc5ca527fc94d92820029

Deployed Bytecode Sourcemap

1509:9100:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3688:1;3676:9;:13;3672:72;;;3707:29;3714:10;3726:9;3707:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;3672:72;1509:9100;6042:685;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6042:685:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7683:149;;;;;;4015:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4015:78:0;;;;;;;;;;;;;;;;;;;;;;;1694:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1694:55:0;;;;;;;;;;;;;;;;;;;;;;;4151:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4151:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5332:516;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5332:516:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3831:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3831:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3831:79:0;;;;;;;;;;;;;;;;;7043:499;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7043:499:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3920:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3920:85:0;;;;;;;;;;;;;;;;;;;;;;;1544:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1544:40:0;;;;;;;;;;;;;;;;;;;;;;;7840:611;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7840:611:0;;;;;;;;;;;;;;;;;;;;;;;6042:685;6208:4;6185:28;;:11;:28;;;;6177:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6373:1;6365:5;:9;6357:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:62;6435:13;6450:11;6463:5;6470:2;;6419:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6474:2;;6419:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6478:2;;6419:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:62::i;:::-;6411:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6537:1;6524:10;;:14;6511:10;:27;;;;6621:13;6615:29;;;6645:11;6658:5;6615:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6615:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6615:49:0;;;;6676:45;6687:13;6702:11;6715:5;6676:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6042:685;;;;;;;;;:::o;7683:149::-;7761:1;7733:13;:25;7747:10;7733:25;;;;;;;;;;;;;;;;:29;7725:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7814:12;7786:13;:25;7800:10;7786:25;;;;;;;;;;;;;;;:40;;;;7683:149::o;4015:78::-;4059:4;4079:8;;4072:15;;4015:78;:::o;1694:55::-;1742:7;1694:55;:::o;4151:103::-;4209:4;4229:13;:19;4243:4;4229:19;;;;;;;;;;;;;;;;4222:26;;4151:103;;;:::o;5332:516::-;5470:4;5447:28;;:11;:28;;;;5439:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5549:5;5532:4;5524:21;;;:30;;:43;;;;;5566:1;5558:5;:9;5524:43;5516:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5617:61;5641:3;5647:11;5660:5;5667:2;;5617:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5671:2;;5617:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5675:2;;5617:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:61::i;:::-;5609:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5734:1;5721:10;;:14;5708:10;:27;;;;5778:11;:20;;:27;5799:5;5778:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5778:27:0;5817:25;5823:11;5836:5;5817:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;5332:516;;;;;;;;:::o;3831:79::-;3873:9;3898:6;3891:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3831:79;:::o;7043:499::-;7196:4;7173:28;;:11;:28;;;;7165:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7250:61;7274:3;7280:11;7293:5;7300:2;;7250:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:2;;7250:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7308:2;;7250:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:61::i;:::-;7242:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7367:1;7354:10;;:14;7341:10;:27;;;;7448:11;:16;;7471:5;7478:4;;7448:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:93;;;7501:28;7510:11;7523:5;7501:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:93;7043:499;;;;;;;;;;:::o;3920:85::-;3966:7;3989:10;;3982:17;;3920:85;:::o;1544:40::-;1583:1;1544:40;:::o;7840:611::-;7899:4;7912:16;7946:6;7931:1;7912:20;;7955:1;7946:10;;7941:206;7962:6;:13;;;;7958:1;:17;7941:206;;;8086:12;1742:7;8031:13;:24;8045:6;8052:1;8045:9;;;;;;;;;;;;;;;;;;;;;;;;;;;8031:24;;;;;;;;;;;;;;;;:51;:67;;8027:113;;;8115:13;;;;;;;8027:113;7977:3;;;;;;;7941:206;;;8230:8;;8215:11;:23;;8211:63;;;8258:8;;8251:15;;;;8211:63;8354:1;8339:11;:16;;8335:59;;;8375:11;8368:18;;;;8335:59;8444:1;8437:8;;7840:611;;;;:::o;8612:1066::-;8753:4;8941:15;9018:22;9079:6;8787:2;:9;8774:2;:9;:22;8766:31;;;;;;;;8825:2;:9;8812:2;:9;:22;8804:31;;;;;;;;8863:6;:13;;;;8850:2;:9;:26;;8842:35;;;;;;;;8905:28;:26;:28::i;:::-;8892:2;:9;:41;;8884:50;;;;;;;;8959:52;8977:13;8992:11;9005:5;8959:17;:52::i;:::-;8941:70;;9057:2;:9;9043:24;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9043:24:0;;;;9018:49;;9088:1;9079:10;;9074:226;9095:2;:9;9091:1;:13;9074:226;;;9250:42;9260:7;9275:2;9269;9272:1;9269:5;;;;;;;;;;;;;;;;;;:8;9279:2;9282:1;9279:5;;;;;;;;;;;;;;;;;;9286:2;9289:1;9286:5;;;;;;;;;;;;;;;;;;9250:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9250:42:0;;;;;;;;9239:5;9245:1;9239:8;;;;;;;;;;;;;;;;;:53;;;;;;;;;;;9106:3;;;;;;;9074:226;;;9314:22;9330:5;9314:15;:22::i;:::-;9306:31;;;;;;;;9344;9369:5;9344:24;:31::i;:::-;9535:28;:26;:28::i;:::-;9522:2;:9;:41;;9514:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:4;9661:11;;8612:1066;;;;;;;;;;;:::o;4850:353::-;4958:7;4974:29;5069:19;5006:56;5028:13;5043:11;5056:5;5006:21;:56::i;:::-;4974:88;;5069:56;;;;;;;;;;;;;;;;;;;;5166:6;5174:21;5149:47;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5149:47:0;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5149:47:0;;;5139:58;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5139:58:0;;;;;;;;;;;;;;;;5132:65;;4850:353;;;;;;;:::o;9751:516::-;9815:4;9904:6;10114;9847;:13;;;;9832:5;:12;:28;9828:65;;;9880:5;9873:12;;;;9828:65;9913:1;9904:10;;9899:345;9920:5;:12;9916:1;:16;9899:345;;;10019:1;9992:13;:23;10006:5;10012:1;10006:8;;;;;;;;;;;;;;;;;;9992:23;;;;;;;;;;;;;;;;:28;9988:73;;;10044:5;10037:12;;;;9988:73;10123:1;10114:10;;10109:128;10130:1;10126;:5;10109:128;;;10169:5;10175:1;10169:8;;;;;;;;;;;;;;;;;;10157:20;;:5;10163:1;10157:8;;;;;;;;;;;;;;;;;;:20;;;10153:73;;;10205:5;10198:12;;;;10153:73;10133:3;;;;;;;10109:128;;;9934:3;;;;;;;9899:345;;;10257:4;10250:11;;9751:516;;;;;;:::o;10328:274::-;10399:6;10408:1;10399:10;;10394:203;10415:5;:12;10411:1;:16;10394:203;;;10522:1;10496:13;:23;10510:5;10516:1;10510:8;;;;;;;;;;;;;;;;;;10496:23;;;;;;;;;;;;;;;;:27;10492:98;;;10566:12;10540:13;:23;10554:5;10560:1;10554:8;;;;;;;;;;;;;;;;;;10540:23;;;;;;;;;;;;;;;:38;;;;10492:98;10429:3;;;;;;;10394:203;;;10328:274;;:::o;4522:320::-;4634:7;4708:15;4761:4;4768:13;4783:11;4796:5;4803:10;;4736:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4736:78:0;;;4726:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4726:89:0;;;;;;;;;;;;;;;;4708:107;;4829:7;4822:14;;4522:320;;;;;;:::o

Swarm Source

bzzr://b613b06855ae81ee59124d428e10c528ef699dc39b36ec9cc5ca527fc94d9282

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.