ETH Price: $2,287.66 (-3.35%)

Contract

0x3A3C995eCc24d6605ecC41548eCFeC6467Ad611B
 

Overview

ETH Balance

0.132070613571591342 ETH

Eth Value

$302.13 (@ $2,287.66/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add Contract Add...62090622018-08-25 4:29:482205 days ago1535171388IN
0x3A3C995e...467Ad611B
0 ETH0.0004441110
0x6080604062090392018-08-25 4:23:592205 days ago1535171039IN
 Create: Birdman
0 ETH0.0229498810

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
65983062018-10-28 8:56:302141 days ago1540716990
0x3A3C995e...467Ad611B
0.00005764 ETH
65959662018-10-27 23:45:322141 days ago1540683932
0x3A3C995e...467Ad611B
0.00022308 ETH
65944032018-10-27 17:33:592141 days ago1540661639
0x3A3C995e...467Ad611B
0.00007731 ETH
65932432018-10-27 13:06:012141 days ago1540645561
0x3A3C995e...467Ad611B
0.00016527 ETH
65915882018-10-27 6:31:162142 days ago1540621876
0x3A3C995e...467Ad611B
0.00019113 ETH
65905662018-10-27 2:22:442142 days ago1540606964
0x3A3C995e...467Ad611B
0.00018199 ETH
65886782018-10-26 19:10:112142 days ago1540581011
0x3A3C995e...467Ad611B
0.00019207 ETH
65870862018-10-26 12:57:272142 days ago1540558647
0x3A3C995e...467Ad611B
0.00025005 ETH
65857602018-10-26 7:39:432143 days ago1540539583
0x3A3C995e...467Ad611B
0.0000252 ETH
65847702018-10-26 3:42:352143 days ago1540525355
0x3A3C995e...467Ad611B
0.00022413 ETH
65834832018-10-25 22:39:522143 days ago1540507192
0x3A3C995e...467Ad611B
0.00016094 ETH
65824382018-10-25 18:34:222143 days ago1540492462
0x3A3C995e...467Ad611B
0.00015615 ETH
65811402018-10-25 13:37:292143 days ago1540474649
0x3A3C995e...467Ad611B
0.00015256 ETH
65797792018-10-25 8:16:392144 days ago1540455399
0x3A3C995e...467Ad611B
0.00001927 ETH
65789442018-10-25 4:58:342144 days ago1540443514
0x3A3C995e...467Ad611B
0.00019631 ETH
65775012018-10-24 23:17:462144 days ago1540423066
0x3A3C995e...467Ad611B
0.00009489 ETH
65766442018-10-24 19:52:252144 days ago1540410745
0x3A3C995e...467Ad611B
0.00010169 ETH
65757902018-10-24 16:37:452144 days ago1540399065
0x3A3C995e...467Ad611B
0.00016901 ETH
65753432018-10-24 14:52:212144 days ago1540392741
0x3A3C995e...467Ad611B
0.00026751 ETH
65737622018-10-24 8:40:172145 days ago1540370417
0x3A3C995e...467Ad611B
0.0001099 ETH
65727922018-10-24 4:51:512145 days ago1540356711
0x3A3C995e...467Ad611B
0.00013413 ETH
65718842018-10-24 1:23:102145 days ago1540344190
0x3A3C995e...467Ad611B
0.00009441 ETH
65699782018-10-23 17:54:312145 days ago1540317271
0x3A3C995e...467Ad611B
0.00022581 ETH
65696722018-10-23 16:44:112145 days ago1540313051
0x3A3C995e...467Ad611B
0.0000283 ETH
65687222018-10-23 12:51:562145 days ago1540299116
0x3A3C995e...467Ad611B
0.0000788 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Birdman

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-08-25
*/

/**
 * ▒█▀▀█ ░▀░ █▀▀█ █▀▀▄ █▀▄▀█ █▀▀█ █▀▀▄ 
 * ▒█▀▀▄ ▀█▀ █▄▄▀ █░░█ █░▀░█ █▄▄█ █░░█ 
 * ▒█▄▄█ ▀▀▀ ▀░▀▀ ▀▀▀░ ▀░░░▀ ▀░░▀ ▀░░▀ 
 *
 * Birdman helps grow the Microverse community,
 * which is considered the premature version of Mutual Constructor.
 */

pragma solidity ^0.4.23;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }

}


/**
 * @title AdminUtils
 * @dev customized admin control panel
 * @dev just want to keep everything safe
 */
contract AdminUtils is Ownable {

    mapping (address => uint256) adminContracts;

    address internal root;

    /* modifiers */
    modifier OnlyContract() {
        require(isSuperContract(msg.sender));
        _;
    }

    modifier OwnerOrContract() {
        require(msg.sender == owner || isSuperContract(msg.sender));
        _;
    }

    modifier onlyRoot() {
        require(msg.sender == root);
        _;
    }

    /* constructor */
    constructor() public {
        // This is a safe key stored offline
        root = 0xe07faf5B0e91007183b76F37AC54d38f90111D40;
    }

    /**
     * @dev this is the kickass idea from @dan
     * and well we will see how it works
     */
    function claimOwnership()
        external
        onlyRoot
        returns (bool) {
        owner = root;
        return true;
    }

    /**
     * @dev function to address a super contract address
     * some functions are meant to be called from another contract
     * but not from any contracts
     * @param _address A contract address
     */
    function addContractAddress(address _address)
        public
        onlyOwner
        returns (bool) {

        uint256 codeLength;

        assembly {
            codeLength := extcodesize(_address)
        }

        if (codeLength == 0) {
            return false;
        }

        adminContracts[_address] = 1;
        return true;
    }

    /**
     * @dev remove the contract address as a super user role
     * have it here just in case
     * @param _address A contract address
     */
    function removeContractAddress(address _address)
        public
        onlyOwner
        returns (bool) {

        uint256 codeLength;

        assembly {
            codeLength := extcodesize(_address)
        }

        if (codeLength == 0) {
            return false;
        }

        adminContracts[_address] = 0;
        return true;
    }

    /**
     * @dev check contract eligibility
     * @param _address A contract address
     */
    function isSuperContract(address _address)
        public
        view
        returns (bool) {

        uint256 codeLength;

        assembly {
            codeLength := extcodesize(_address)
        }

        if (codeLength == 0) {
            return false;
        }

        if (adminContracts[_address] == 1) {
            return true;
        } else {
            return false;
        }
    }
}


/**
 * @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 c) {
        // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        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 a / b;
    }

    /**
    * @dev Subtracts 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 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}


/**
 * @title Contract that will work with ERC223 tokens.
 */
contract ERC223ReceivingContract { 
/**
 * @dev Standard ERC223 function that will handle incoming token transfers.
 *
 * @param _from  Token sender address.
 * @param _value Amount of tokens.
 * @param _data  Transaction metadata.
 */
    function tokenFallback(address _from, uint _value, bytes _data) public;
}

/**
 * @title EvilMortyTokenInterface
 */
contract EvilMortyTokenInterface {

    /**
     * @dev Check balance of a given address
     * @param sender address
     */
    function balanceOf(address sender) public view returns (uint256);
}

/**
 * @title Birdman
 */
contract Birdman is AdminUtils, ERC223ReceivingContract {

    using SafeMath for uint256;

    event MCApplied(address sender);
    event MCAdded(address sender);
    event MCRemoved(address sender);
    event ShareSent(address indexed receiver, uint256 value);
    event SystemChangeValidMCAmount(uint256 oldValue, uint256 newValue);
    event SystemChangeMaxNumMC(uint256 oldValue, uint256 newValue);
    event SystemChangeShareTimeGap(uint256 oldValue, uint256 newValue);
    event SystemChangeVettingTime(uint256 oldValue, uint256 newValue);

    EvilMortyTokenInterface internal EvilMortyInstance;

    uint256 public validMCAmount = 5000000e18;
    uint256 public maxNumMC = 20;
    uint256 public vettingTime = 86400; // in block height, roughly 15 days
    uint256 public shareTimeGap = 86400; // in block height, roughly 15 days
    uint256 public numMC;
    uint256 public numMCApplied;
    uint256 public nextShareTime = 6213990; // around UTC 01:00, 8/26/2018
    uint256 public weiAmountShare;

    mapping (uint256 => MC) constructors;
    mapping (address => uint256) addressToIndex;

    struct MC {
      address playerAddress;
      uint256 timeSince;
      uint256 nextSharedSentTime;
      bool passed;
    }
    
    uint256[] emptyIndexes;

    modifier isValidMC() {
        require (EvilMortyInstance.balanceOf(msg.sender) >= validMCAmount);
        _;
    }

    modifier canAddMC() {
      require (numMCApplied < maxNumMC);
      // make sure no one cheats
      require (addressToIndex[msg.sender] == 0);
      
      _; 
    }

    modifier isEvilMortyToken() {
        require(msg.sender == address(EvilMortyInstance));
        _;
    }

    /* constructor */
    constructor(address EvilMortyAddress)
        public {
        EvilMortyInstance = EvilMortyTokenInterface(EvilMortyAddress);
    }

    /**
     * @dev Allow funds to be sent to this contract
     * if the sender is the owner or a super contract
     * then it will do nothing
     */
    function ()
        public
        payable {
        if (msg.sender == owner || isSuperContract(msg.sender)) {
            return;
        }
        applyMC();
    }

    /**
     * @dev Allow morty token to be sent to this contract
     * if the sender is the owner it will do nothing
     */
    function tokenFallback(address _from, uint256 _value, bytes)
        public
        isEvilMortyToken {
        if (_from == owner) {
            return;
        }
        claimShare(addressToIndex[_from]);
    }

    /**
     * @dev Apply for becoming a MC
     */
    function applyMC()
        public
        payable
        canAddMC {

        require (EvilMortyInstance.balanceOf(msg.sender) >= validMCAmount);

        numMCApplied = numMCApplied.add(1);
        uint256 newIndex = numMCApplied;

        if (emptyIndexes.length > 0) {
            newIndex = emptyIndexes[emptyIndexes.length-1];
            delete emptyIndexes[emptyIndexes.length-1];
            emptyIndexes.length--;
        }

        constructors[newIndex] = MC({
            playerAddress: msg.sender,
            timeSince: block.number.add(vettingTime),
            nextSharedSentTime: nextShareTime,
            passed: false
        });

        addressToIndex[msg.sender] = newIndex;

        emit MCApplied(msg.sender);
    }

    /**
     * @dev Get a MC's info given index
     * @param _index the MC's index
     */
    function getMC(uint256 _index)
        public
        view
        returns (address, uint256, uint256, bool) {
        MC storage mc = constructors[_index];
        return (
            mc.playerAddress,
            mc.timeSince,
            mc.nextSharedSentTime,
            mc.passed
        );
    }

    /**
     * @dev Get number of empty indexes
     */
    function numEmptyIndexes()
        public
        view
        returns (uint256) {
        return emptyIndexes.length;
    }

    /**
     * @dev Get the MC index given address
     * @param _address MC's address
     */
    function getIndex(address _address)
        public
        view
        returns (uint256) {
        return addressToIndex[_address];
    }

    /**
     * @dev Update all MC's status
     */
    function updateMCs()
        public {

        if (numMCApplied == 0) {
            return;
        }

        for (uint256 i = 0; i < maxNumMC; i ++) {
            updateMC(i);
        }
    }

    /**
     * @dev Update a MC's status, if
     * - the MC's balance is below min requirement, it will be deleted;
     * - the MC's vetting time is passed, it will be added
     * @param _index the MC's index
     */
    function updateMC(uint256 _index)
        public {
        MC storage mc = constructors[_index];

        // skip empty index
        if (mc.playerAddress == 0) {
            return;
        }

        if (EvilMortyInstance.balanceOf(mc.playerAddress) < validMCAmount) {
            // remove MC
            numMCApplied = numMCApplied.sub(1);
            if (mc.passed == true) {
                numMC = numMC.sub(1);
            }
            emptyIndexes.push(_index);
            emit MCRemoved(mc.playerAddress);
            delete addressToIndex[mc.playerAddress];
            delete constructors[_index];
            return;
        }

        if (mc.passed == false && mc.timeSince < block.number) {
             mc.passed = true;
             numMC = numMC.add(1);
             emit MCAdded(mc.playerAddress);
             return;
        }
    }

    /**
     * @dev Update funds to be sent in this shares period
     */
    function updateWeiAmountShare()
        public {
        if (numMC == 0) {
            return;
        }
        if (nextShareTime < block.number) {
            weiAmountShare = address(this).balance.div(numMC);

            // make height accurate
            uint256 timeGap = block.number.sub(nextShareTime);
            uint256 gap = timeGap.div(shareTimeGap).add(1);
            nextShareTime = nextShareTime.add(shareTimeGap.mul(gap));
        }
    }

    /**
     * @dev Ask for funds for a MC
     * @param _index the Mc's index
     */
    function claimShare(uint256 _index)
        public {

        // need update all MCs first
        updateMCs();

        MC storage mc = constructors[_index];

        // skip empty index
        if (mc.playerAddress == 0) {
            return;
        }

        if (mc.passed == false) {
            return;
        }

        if (mc.nextSharedSentTime < block.number) {
            // update next share time
            updateWeiAmountShare();
            mc.nextSharedSentTime = nextShareTime;
            // every mc gets equal share
            mc.playerAddress.transfer(weiAmountShare);
            emit ShareSent(mc.playerAddress, weiAmountShare);
        }
    }

    /**
     * @dev Upgrade evil morty
     * in case of upgrade needed
     */
    function upgradeEvilMorty(address _address)
        external
        onlyOwner {

        uint256 codeLength;

        assembly {
            codeLength := extcodesize(_address)
        }

        if (codeLength == 0) {
            return;
        }

        EvilMortyInstance = EvilMortyTokenInterface(_address);
    }

    /**
     * @dev Update min requirement for being a MC
     * a system event is emitted to capture the change
     * @param _amount new amount
     */
    function updateValidMCAmount(uint256 _amount)
        external
        onlyOwner {
        emit SystemChangeValidMCAmount(validMCAmount, _amount);
        validMCAmount = _amount;
    }

    /**
     * @dev Update max number of MCs
     * a system event is emitted to capture the change
     */
    function updateMaxNumMC(uint256 _num)
        external
        onlyOwner {
        emit SystemChangeMaxNumMC(maxNumMC, _num);
        maxNumMC = _num;
    }

    /**
     * @dev Update the length of a share period
     * a system event is emitted to capture the change
     * @param _height bloch heights
     */
    function updateShareTimeGap(uint256 _height)
        external
        onlyOwner {
        emit SystemChangeShareTimeGap(shareTimeGap, _height);
        shareTimeGap = _height;
    }

    /**
     * @dev Update the length of vetting time
     * a system event is emitted to capture the change
     * @param _height bloch heights
     */
    function updateVettingTime(uint256 _height)
        external
        onlyOwner {
        emit SystemChangeVettingTime(vettingTime, _height);
        vettingTime = _height;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_height","type":"uint256"}],"name":"updateShareTimeGap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"}],"name":"claimShare","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"applyMC","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"updateMCs","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"updateWeiAmountShare","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getMC","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numMC","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"shareTimeGap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeContractAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint256"}],"name":"updateMC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"validMCAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vettingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addContractAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_num","type":"uint256"}],"name":"updateMaxNumMC","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"upgradeEvilMorty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_height","type":"uint256"}],"name":"updateVettingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"updateValidMCAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numMCApplied","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxNumMC","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextShareTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiAmountShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numEmptyIndexes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isSuperContract","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"EvilMortyAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"MCApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"MCAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"MCRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ShareSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"SystemChangeValidMCAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"SystemChangeMaxNumMC","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"SystemChangeShareTimeGap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldValue","type":"uint256"},{"indexed":false,"name":"newValue","type":"uint256"}],"name":"SystemChangeVettingTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526a0422ca8b0a00a42500000060045560146005556201518060065562015180600755625ed166600a5534801561003957600080fd5b50604051602080611f8e83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e07faf5b0e91007183b76f37ac54d38f90111d40600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611e4c806101426000396000f300608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630bd93738146101ea5780630cc03e7a1461021757806310cbe445146102445780631b998dac1461024e5780631dc9186a146102655780632653ab191461027c57806331b5da2a146103025780634e71e0c81461032d57806352476ceb1461035c5780636c797bfd14610387578063715018a6146103e257806376917b68146103f95780638da5cb5b146104265780639655943e1461047d578063976a0b82146104a8578063b11ce2db146104d3578063b1d0073b1461052e578063b31610db1461055b578063bc414e7b146105b2578063bea8bd27146105f5578063c0ee0b8a14610622578063cb950c37146106b5578063e0f426fa146106e2578063e3688d7a1461070d578063eb52835b14610738578063f2fde38b14610763578063f396cd66146107a6578063f897ae8c146107d1578063fcf3952f146107fc575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806101d557506101d433610857565b5b156101df576101e8565b6101e76108cb565b5b005b3480156101f657600080fd5b5061021560048036038101908080359060200190929190505050610c50565b005b34801561022357600080fd5b5061024260048036038101908080359060200190929190505050610cf6565b005b61024c6108cb565b005b34801561025a57600080fd5b50610263610e86565b005b34801561027157600080fd5b5061027a610ec0565b005b34801561028857600080fd5b506102a760048036038101908080359060200190929190505050610f85565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018215151515815260200194505050505060405180910390f35b34801561030e57600080fd5b50610317610ff3565b6040518082815260200191505060405180910390f35b34801561033957600080fd5b50610342610ff9565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b506103716110c0565b6040518082815260200191505060405180910390f35b34801561039357600080fd5b506103c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c6565b604051808215151515815260200191505060405180910390f35b3480156103ee57600080fd5b506103f761118a565b005b34801561040557600080fd5b506104246004803603810190808035906020019092919050505061128c565b005b34801561043257600080fd5b5061043b6116de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048957600080fd5b50610492611703565b6040518082815260200191505060405180910390f35b3480156104b457600080fd5b506104bd611709565b6040518082815260200191505060405180910390f35b3480156104df57600080fd5b50610514600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170f565b604051808215151515815260200191505060405180910390f35b34801561053a57600080fd5b50610559600480360381019080803590602001909291905050506117d2565b005b34801561056757600080fd5b5061059c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611878565b6040518082815260200191505060405180910390f35b3480156105be57600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c1565b005b34801561060157600080fd5b5061062060048036038101908080359060200190929190505050611976565b005b34801561062e57600080fd5b506106b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a1c565b005b3480156106c157600080fd5b506106e060048036038101908080359060200190929190505050611b20565b005b3480156106ee57600080fd5b506106f7611bc6565b6040518082815260200191505060405180910390f35b34801561071957600080fd5b50610722611bcc565b6040518082815260200191505060405180910390f35b34801561074457600080fd5b5061074d611bd2565b6040518082815260200191505060405180910390f35b34801561076f57600080fd5b506107a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bd8565b005b3480156107b257600080fd5b506107bb611c3f565b6040518082815260200191505060405180910390f35b3480156107dd57600080fd5b506107e6611c45565b6040518082815260200191505060405180910390f35b34801561080857600080fd5b5061083d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610857565b604051808215151515815260200191505060405180910390f35b600080823b9050600081141561087057600091506108c5565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156108c057600191506108c5565b600091505b50919050565b60006005546009541015156108df57600080fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561092d57600080fd5b600454600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109ed57600080fd5b505af1158015610a01573d6000803e3d6000fd5b505050506040513d6020811015610a1757600080fd5b810190808051906020019092919050505010151515610a3557600080fd5b610a4b6001600954611c5290919063ffffffff16565b60098190555060095490506000600e805490501115610ac457600e6001600e8054905003815481101515610a7b57fe5b90600052602060002001549050600e6001600e8054905003815481101515610a9f57fe5b9060005260206000200160009055600e805480919060019003610ac29190611dcf565b505b6080604051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001610b0160065443611c5290919063ffffffff16565b8152602001600a54815260200160001515815250600c600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fc0dc15c3367eece445ec0d753804ecc8d9547976a19a486482366f59f89a425c33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cab57600080fd5b7f1e7ea6ef4f98d2f58c093efbbaca8e1211f580c06440e6c4c8a20bee5f386aac60075482604051808381526020018281526020019250505060405180910390a18060078190555050565b6000610d00610e86565b600c6000838152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d5d57610e82565b600015158160030160009054906101000a900460ff1615151415610d8057610e82565b4381600201541015610e8157610d94610ec0565b600a5481600201819055508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600b549081150290604051600060405180830381858888f19350505050158015610e0b573d6000803e3d6000fd5b508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f57c9bc91ac51699276b9241e0fbab76ea32bec8cec110ec85f611e1d344860d2600b546040518082815260200191505060405180910390a25b5b5050565b6000806009541415610e9757610ebd565b600090505b600554811015610ebc57610eaf8161128c565b8080600101915050610e9c565b5b50565b60008060006008541415610ed357610f81565b43600a541015610f8057610f096008543073ffffffffffffffffffffffffffffffffffffffff1631611c6e90919063ffffffff16565b600b81905550610f24600a5443611c8490919063ffffffff16565b9150610f4e6001610f4060075485611c6e90919063ffffffff16565b611c5290919063ffffffff16565b9050610f79610f6882600754611c9d90919063ffffffff16565b600a54611c5290919063ffffffff16565b600a819055505b5b5050565b6000806000806000600c600087815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001015482600201548360030160009054906101000a900460ff169450945094509450509193509193565b60085481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105757600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905090565b60075481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112457600080fd5b823b9050600081141561113a5760009150611184565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505b50919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c6000838152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112eb576116da565b600454600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113cf57600080fd5b505af11580156113e3573d6000803e3d6000fd5b505050506040513d60208110156113f957600080fd5b810190808051906020019092919050505010156115e7576114266001600954611c8490919063ffffffff16565b600981905550600115158160030160009054906101000a900460ff1615151415611467576114606001600854611c8490919063ffffffff16565b6008819055505b600e8290806001815401808255809150509060018203906000526020600020016000909192909190915055507f6b90eb85c11dd942784ad10b5739b81fa4fa633eb2b987bd1bebe1e644d289008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600d60008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600c6000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160006101000a81549060ff021916905550506116da565b600015158160030160009054906101000a900460ff16151514801561160f5750438160010154105b156116d95760018160030160006101000a81548160ff0219169083151502179055506116476001600854611c5290919063ffffffff16565b6008819055507f9decc1f62ed4c8a3b70dfd51a0504ab7303e6eea3c9e8512af4c38c583a33b5a8160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16116da565b5b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60065481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561176d57600080fd5b823b9050600081141561178357600091506117cc565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505b50919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182d57600080fd5b7f41ca9b8e071cc59e920fd3ff927404b5e80a4a4f9f61613ea7e942803b5849a560055482604051808381526020018281526020019250505060405180910390a18060058190555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561191e57600080fd5b813b9050600081141561193057611972565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119d157600080fd5b7f15918f4289cd396b0fbfbd0012234db52a110c7254eba34cd2c2e9c547e8428660065482604051808381526020018281526020019250505060405180910390a18060068190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ad257611b1b565b611b1a600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf6565b5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b7b57600080fd5b7f4257d2c0636fcb18400c4730377737d11abea84e73b749fed6a083315677295760045482604051808381526020018281526020019250505060405180910390a18060048190555050565b60095481565b60055481565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c3357600080fd5b611c3c81611cd5565b50565b600b5481565b6000600e80549050905090565b60008183019050828110151515611c6557fe5b80905092915050565b60008183811515611c7b57fe5b04905092915050565b6000828211151515611c9257fe5b818303905092915050565b600080831415611cb05760009050611ccf565b8183029050818382811515611cc157fe5b04141515611ccb57fe5b8090505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d1157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b815481835581811115611df657818360005260206000209182019101611df59190611dfb565b5b505050565b611e1d91905b80821115611e19576000816000905550600101611e01565b5090565b905600a165627a7a72305820e29e26b1b82216323e5472967b1012389dbc7eaddfd5ceea14b19d15df41ba1800290000000000000000000000007a2fe37e51930e4f0cf3489f24771f361f2bbfcc

Deployed Bytecode

0x608060405260043610610175576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630bd93738146101ea5780630cc03e7a1461021757806310cbe445146102445780631b998dac1461024e5780631dc9186a146102655780632653ab191461027c57806331b5da2a146103025780634e71e0c81461032d57806352476ceb1461035c5780636c797bfd14610387578063715018a6146103e257806376917b68146103f95780638da5cb5b146104265780639655943e1461047d578063976a0b82146104a8578063b11ce2db146104d3578063b1d0073b1461052e578063b31610db1461055b578063bc414e7b146105b2578063bea8bd27146105f5578063c0ee0b8a14610622578063cb950c37146106b5578063e0f426fa146106e2578063e3688d7a1461070d578063eb52835b14610738578063f2fde38b14610763578063f396cd66146107a6578063f897ae8c146107d1578063fcf3952f146107fc575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806101d557506101d433610857565b5b156101df576101e8565b6101e76108cb565b5b005b3480156101f657600080fd5b5061021560048036038101908080359060200190929190505050610c50565b005b34801561022357600080fd5b5061024260048036038101908080359060200190929190505050610cf6565b005b61024c6108cb565b005b34801561025a57600080fd5b50610263610e86565b005b34801561027157600080fd5b5061027a610ec0565b005b34801561028857600080fd5b506102a760048036038101908080359060200190929190505050610f85565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018215151515815260200194505050505060405180910390f35b34801561030e57600080fd5b50610317610ff3565b6040518082815260200191505060405180910390f35b34801561033957600080fd5b50610342610ff9565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b506103716110c0565b6040518082815260200191505060405180910390f35b34801561039357600080fd5b506103c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c6565b604051808215151515815260200191505060405180910390f35b3480156103ee57600080fd5b506103f761118a565b005b34801561040557600080fd5b506104246004803603810190808035906020019092919050505061128c565b005b34801561043257600080fd5b5061043b6116de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561048957600080fd5b50610492611703565b6040518082815260200191505060405180910390f35b3480156104b457600080fd5b506104bd611709565b6040518082815260200191505060405180910390f35b3480156104df57600080fd5b50610514600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170f565b604051808215151515815260200191505060405180910390f35b34801561053a57600080fd5b50610559600480360381019080803590602001909291905050506117d2565b005b34801561056757600080fd5b5061059c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611878565b6040518082815260200191505060405180910390f35b3480156105be57600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c1565b005b34801561060157600080fd5b5061062060048036038101908080359060200190929190505050611976565b005b34801561062e57600080fd5b506106b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a1c565b005b3480156106c157600080fd5b506106e060048036038101908080359060200190929190505050611b20565b005b3480156106ee57600080fd5b506106f7611bc6565b6040518082815260200191505060405180910390f35b34801561071957600080fd5b50610722611bcc565b6040518082815260200191505060405180910390f35b34801561074457600080fd5b5061074d611bd2565b6040518082815260200191505060405180910390f35b34801561076f57600080fd5b506107a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bd8565b005b3480156107b257600080fd5b506107bb611c3f565b6040518082815260200191505060405180910390f35b3480156107dd57600080fd5b506107e6611c45565b6040518082815260200191505060405180910390f35b34801561080857600080fd5b5061083d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610857565b604051808215151515815260200191505060405180910390f35b600080823b9050600081141561087057600091506108c5565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156108c057600191506108c5565b600091505b50919050565b60006005546009541015156108df57600080fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561092d57600080fd5b600454600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109ed57600080fd5b505af1158015610a01573d6000803e3d6000fd5b505050506040513d6020811015610a1757600080fd5b810190808051906020019092919050505010151515610a3557600080fd5b610a4b6001600954611c5290919063ffffffff16565b60098190555060095490506000600e805490501115610ac457600e6001600e8054905003815481101515610a7b57fe5b90600052602060002001549050600e6001600e8054905003815481101515610a9f57fe5b9060005260206000200160009055600e805480919060019003610ac29190611dcf565b505b6080604051908101604052803373ffffffffffffffffffffffffffffffffffffffff168152602001610b0160065443611c5290919063ffffffff16565b8152602001600a54815260200160001515815250600c600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fc0dc15c3367eece445ec0d753804ecc8d9547976a19a486482366f59f89a425c33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cab57600080fd5b7f1e7ea6ef4f98d2f58c093efbbaca8e1211f580c06440e6c4c8a20bee5f386aac60075482604051808381526020018281526020019250505060405180910390a18060078190555050565b6000610d00610e86565b600c6000838152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d5d57610e82565b600015158160030160009054906101000a900460ff1615151415610d8057610e82565b4381600201541015610e8157610d94610ec0565b600a5481600201819055508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600b549081150290604051600060405180830381858888f19350505050158015610e0b573d6000803e3d6000fd5b508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f57c9bc91ac51699276b9241e0fbab76ea32bec8cec110ec85f611e1d344860d2600b546040518082815260200191505060405180910390a25b5b5050565b6000806009541415610e9757610ebd565b600090505b600554811015610ebc57610eaf8161128c565b8080600101915050610e9c565b5b50565b60008060006008541415610ed357610f81565b43600a541015610f8057610f096008543073ffffffffffffffffffffffffffffffffffffffff1631611c6e90919063ffffffff16565b600b81905550610f24600a5443611c8490919063ffffffff16565b9150610f4e6001610f4060075485611c6e90919063ffffffff16565b611c5290919063ffffffff16565b9050610f79610f6882600754611c9d90919063ffffffff16565b600a54611c5290919063ffffffff16565b600a819055505b5b5050565b6000806000806000600c600087815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001015482600201548360030160009054906101000a900460ff169450945094509450509193509193565b60085481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105757600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905090565b60075481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112457600080fd5b823b9050600081141561113a5760009150611184565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505b50919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c6000838152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156112eb576116da565b600454600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156113cf57600080fd5b505af11580156113e3573d6000803e3d6000fd5b505050506040513d60208110156113f957600080fd5b810190808051906020019092919050505010156115e7576114266001600954611c8490919063ffffffff16565b600981905550600115158160030160009054906101000a900460ff1615151415611467576114606001600854611c8490919063ffffffff16565b6008819055505b600e8290806001815401808255809150509060018203906000526020600020016000909192909190915055507f6b90eb85c11dd942784ad10b5739b81fa4fa633eb2b987bd1bebe1e644d289008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600d60008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600c6000838152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090556003820160006101000a81549060ff021916905550506116da565b600015158160030160009054906101000a900460ff16151514801561160f5750438160010154105b156116d95760018160030160006101000a81548160ff0219169083151502179055506116476001600854611c5290919063ffffffff16565b6008819055507f9decc1f62ed4c8a3b70dfd51a0504ab7303e6eea3c9e8512af4c38c583a33b5a8160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16116da565b5b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60065481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561176d57600080fd5b823b9050600081141561178357600091506117cc565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505b50919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182d57600080fd5b7f41ca9b8e071cc59e920fd3ff927404b5e80a4a4f9f61613ea7e942803b5849a560055482604051808381526020018281526020019250505060405180910390a18060058190555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561191e57600080fd5b813b9050600081141561193057611972565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119d157600080fd5b7f15918f4289cd396b0fbfbd0012234db52a110c7254eba34cd2c2e9c547e8428660065482604051808381526020018281526020019250505060405180910390a18060068190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ad257611b1b565b611b1a600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf6565b5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b7b57600080fd5b7f4257d2c0636fcb18400c4730377737d11abea84e73b749fed6a083315677295760045482604051808381526020018281526020019250505060405180910390a18060048190555050565b60095481565b60055481565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c3357600080fd5b611c3c81611cd5565b50565b600b5481565b6000600e80549050905090565b60008183019050828110151515611c6557fe5b80905092915050565b60008183811515611c7b57fe5b04905092915050565b6000828211151515611c9257fe5b818303905092915050565b600080831415611cb05760009050611ccf565b8183029050818382811515611cc157fe5b04141515611ccb57fe5b8090505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d1157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b815481835581811115611df657818360005260206000209182019101611df59190611dfb565b5b505050565b611e1d91905b80821115611e19576000816000905550600101611e01565b5090565b905600a165627a7a72305820e29e26b1b82216323e5472967b1012389dbc7eaddfd5ceea14b19d15df41ba180029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a2fe37e51930e4f0cf3489f24771f361f2bbfcc

-----Decoded View---------------
Arg [0] : EvilMortyAddress (address): 0x7A2Fe37E51930E4F0Cf3489F24771f361f2BbfCc

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a2fe37e51930e4f0cf3489f24771f361f2bbfcc


Swarm Source

bzzr://e29e26b1b82216323e5472967b1012389dbc7eaddfd5ceea14b19d15df41ba18

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.