ETH Price: $3,309.49 (+2.00%)
 

Overview

Max Total Supply

99,999,737.743163500027758984 SWAM

Holders

16 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

SwapMatic is a swap service on Matic Network. It incorporates assets such DAI, USDT, USDC, 0xBTC, and WBTC. Near-zero fees. Immediate token listing option for Matic-native tokens by self-serve. SWAM Token is an interoperable ERC20 token that introduces an innovative EVMBridge.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HomeToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity ^0.4.24;

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @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;
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) internal balances;

  uint256 internal totalSupply_;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev Transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_value <= balances[msg.sender]);
    require(_to != address(0));

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/issues/20
 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    returns (bool)
  {
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);
    require(_to != address(0));

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(
    address _owner,
    address _spender
   )
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(
    address _spender,
    uint256 _addedValue
  )
    public
    returns (bool)
  {
    allowed[msg.sender][_spender] = (
      allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(
    address _spender,
    uint256 _subtractedValue
  )
    public
    returns (bool)
  {
    uint256 oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue >= oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

// File: contracts/SignatureUtils.sol

/// @title A library of utilities for (multi)signatures
/// @author Alexander Kern <[email protected]>
/// @dev This library can be linked to another Solidity contract to expose signature manipulation functions.
contract SignatureUtils {

    /// @notice Converts a bytes32 to an signed message hash.
    /// @param _msg The bytes32 message (i.e. keccak256 result) to encrypt
    function toEthBytes32SignedMessageHash(
        bytes32 _msg
    )
        pure
        public
        returns (bytes32 signHash)
    {
        signHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _msg));
    }

    /// @notice Converts a byte array to a personal signed message hash (result of `web3.personal.sign(...)`) by concatenating its length.
    /// @param _msg The bytes array to encrypt
    function toEthPersonalSignedMessageHash(
        bytes _msg
    )
        pure
        public
        returns (bytes32 signHash)
    {
        signHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", uintToString(_msg.length), _msg));
    }

    /// @notice Converts a uint to its decimal string representation.
    /// @param v The uint to convert
    function uintToString(
        uint v
    )
        pure
        public
        returns (string)
    {
        uint w = v;
        bytes32 x;
        if (v == 0) {
            x = "0";
        } else {
            while (w > 0) {
                x = bytes32(uint(x) / (2 ** 8));
                x |= bytes32(((w % 10) + 48) * 2 ** (8 * 31));
                w /= 10;
            }
        }

        bytes memory bytesString = new bytes(32);
        uint charCount = 0;
        for (uint j = 0; j < 32; j++) {
            byte char = byte(bytes32(uint(x) * 2 ** (8 * j)));
            if (char != 0) {
                bytesString[charCount] = char;
                charCount++;
            }
        }
        bytes memory resultBytes = new bytes(charCount);
        for (j = 0; j < charCount; j++) {
            resultBytes[j] = bytesString[j];
        }

        return string(resultBytes);
    }

    /// @notice Extracts the r, s, and v parameters to `ecrecover(...)` from the signature at position `_pos` in a densely packed signatures bytes array.
    /// @dev Based on [OpenZeppelin's ECRecovery](https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ECRecovery.sol)
    /// @param _signatures The signatures bytes array
    /// @param _pos The position of the signature in the bytes array (0 indexed)
    function parseSignature(
        bytes _signatures,
        uint _pos
    )
        pure
        public
        returns (uint8 v, bytes32 r, bytes32 s)
    {
        uint offset = _pos * 65;
        // The signature format is a compact form of:
        //   {bytes32 r}{bytes32 s}{uint8 v}
        // Compact means, uint8 is not padded to 32 bytes.
        assembly { // solium-disable-line security/no-inline-assembly
            r := mload(add(_signatures, add(32, offset)))
            s := mload(add(_signatures, add(64, offset)))
            // Here we are loading the last 32 bytes, including 31 bytes
            // of 's'. There is no 'mload8' to do this.
            //
            // 'byte' is not working due to the Solidity parser, so lets
            // use the second best option, 'and'
            v := and(mload(add(_signatures, add(65, offset))), 0xff)
        }

        if (v < 27) v += 27;

        require(v == 27 || v == 28);
    }

    /// @notice Counts the number of signatures in a signatures bytes array. Returns 0 if the length is invalid.
    /// @param _signatures The signatures bytes array
    /// @dev Signatures are 65 bytes long and are densely packed.
    function countSignatures(
        bytes _signatures
    )
        pure
        public
        returns (uint)
    {
        return _signatures.length % 65 == 0 ? _signatures.length / 65 : 0;
    }

    /// @notice Recovers an address using a message hash and a signature in a bytes array.
    /// @param _hash The signed message hash
    /// @param _signatures The signatures bytes array
    /// @param _pos The signature's position in the bytes array (0 indexed)
    function recoverAddress(
        bytes32 _hash,
        bytes _signatures,
        uint _pos
    )
        pure
        public
        returns (address)
    {
        uint8 v;
        bytes32 r;
        bytes32 s;
        (v, r, s) = parseSignature(_signatures, _pos);
        return ecrecover(_hash, v, r, s);
    }

    /// @notice Recovers an array of addresses using a message hash and a signatures bytes array.
    /// @param _hash The signed message hash
    /// @param _signatures The signatures bytes array
    function recoverAddresses(
        bytes32 _hash,
        bytes _signatures
    )
        pure
        public
        returns (address[] addresses)
    {
        uint8 v;
        bytes32 r;
        bytes32 s;
        uint count = countSignatures(_signatures);
        addresses = new address[](count);
        for (uint i = 0; i < count; i++) {
            (v, r, s) = parseSignature(_signatures, i);
            addresses[i] = ecrecover(_hash, v, r, s);
        }
    }

}

// File: contracts/Ownable.sol

/**
 * @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 private _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;
  }

  /**
   * @return the address of the owner.
   */
  function owner() public view returns(address) {
    return _owner;
  }

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

  /**
   * @return true if `msg.sender` is the owner of the contract.
   */
  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  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;
  }
}

// File: contracts/Bridgeable.sol

contract Bridgeable is StandardToken, SignatureUtils, Ownable {
	address[] public validators;
	address public foreignContract;
	mapping (bytes32 => bool) foreignTransactions;

	event EnterBridgeEvent(address from, uint256 amount);
    event ExitBridgeEvent(address sender, uint256 amount);
    event Mint(address indexed to, uint256 amount);
	event Burn(address indexed burner, uint256 value);

    function addValidator(address _validator) public onlyOwner {
        validators.push(_validator);
    }

    function pair(address _foreignContract) public onlyOwner {
    	foreignContract = _foreignContract;
    }
        
    function enter(uint256 _amount) public {
        emit EnterBridgeEvent(msg.sender, _amount);
        burn(_amount);
    }
    
    function exit(bytes32 _txnHash, address _foreignContract, uint256 _amount, bytes _signatures) public {
    	require(contains(_txnHash) == false, 'Foreign transaction has already been processed');
        bytes32 hash = toEthBytes32SignedMessageHash(entranceHash(_txnHash,_foreignContract, _amount));
        address[] memory recovered = recoverAddresses(hash, _signatures);
        require(verifyValidators(recovered), "Validator verification failed.");
        require(_foreignContract == foreignContract, "Invalid contract target.");
        mint(msg.sender, _amount);
        foreignTransactions[_txnHash] = true;
        emit ExitBridgeEvent(msg.sender, _amount);      
    }

    function contains(bytes32 _txnHash) internal view returns (bool){
        return foreignTransactions[_txnHash];
    }

    function verifyValidators(address[] recovered) internal view returns (bool) {
        require(recovered.length == validators.length, "Invalid number of signatures");
        for(uint i = 0 ; i < validators.length; i++) {
            if(validators[i] != recovered[i]) {
                return false;
            }
        }
        return true;
    }

    function mint( address _to, uint256 _amount )
	    internal returns (bool) {
	    totalSupply_ = totalSupply_.add(_amount);
	    balances[_to] = balances[_to].add(_amount);
	    emit Mint(_to, _amount);
	    emit Transfer(address(0), _to, _amount);
	    return true;
	}

	/**
	* @dev Burns a specific amount of tokens.
	* @param _value The amount of token to be burned.
	*/
	function burn(uint256 _value) internal {
		_burn(msg.sender, _value);
	}

	function _burn(address _who, uint256 _value) internal {
		require(_value <= balances[_who]);
		// no need to require value <= totalSupply, since that would imply the
		// sender's balance is greater than the totalSupply, which *should* be an assertion failure

		balances[_who] = balances[_who].sub(_value);
		totalSupply_ = totalSupply_.sub(_value);
		emit Burn(_who, _value);
		emit Transfer(_who, address(0), _value);
	}
	    
    /**
     * @notice Hash (keccak256) of the payload used by deposit
     * @param _contractAddress the target ERC20 address
     * @param _amount the original minter
     */
    function entranceHash(bytes32 txnHash, address _contractAddress, uint256 _amount) public view returns (bytes32) {
        // "0x8177cf3c": entranceHash(bytes32, address,uint256)
        return keccak256(abi.encode( bytes4(0x8177cf3c), msg.sender, txnHash, _contractAddress, _amount));
    }

}

// File: contracts/HomeToken.sol

contract HomeToken is Bridgeable {
    string public name = "SwapMatic Token"; 
    string public symbol = "SWAM";
    uint public decimals = 18;
    uint public INITIAL_SUPPLY = 0;

    constructor() public {
        totalSupply_ = 0;
        balances[msg.sender] = 0;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_signatures","type":"bytes"},{"name":"_pos","type":"uint256"}],"name":"recoverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signatures","type":"bytes"}],"name":"countSignatures","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"validators","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_validator","type":"address"}],"name":"addValidator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_foreignContract","type":"address"}],"name":"pair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"txnHash","type":"bytes32"},{"name":"_contractAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"entranceHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"enter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foreignContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signatures","type":"bytes"},{"name":"_pos","type":"uint256"}],"name":"parseSignature","outputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_msg","type":"bytes"}],"name":"toEthPersonalSignedMessageHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_msg","type":"bytes32"}],"name":"toEthBytes32SignedMessageHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_txnHash","type":"bytes32"},{"name":"_foreignContract","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_signatures","type":"bytes"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"v","type":"uint256"}],"name":"uintToString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_signatures","type":"bytes"}],"name":"recoverAddresses","outputs":[{"name":"addresses","type":"address[]"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EnterBridgeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ExitBridgeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60c0604052600f60808190527f537761704d6174696320546f6b656e000000000000000000000000000000000060a0908152620000409160079190620000cf565b506040805180820190915260048082527f5357414d0000000000000000000000000000000000000000000000000000000060209092019182526200008791600891620000cf565b5060126009556000600a553480156200009f57600080fd5b5060038054600160a060020a03191633908117909155600060018190559081526020819052604081205562000174565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011257805160ff191683800117855562000142565b8280016001018555821562000142579182015b828111156200014257825182559160200191906001019062000125565b506200015092915062000154565b5090565b6200017191905b808211156200015057600081556001016200015b565b90565b611a8d80620001846000396000f30060806040526004361061017f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610184578063095ea7b31461020e57806318160ddd146102465780631c2a15b81461026d57806323b872dd146102e95780632ff2e9dc14610313578063313ce5671461032857806333ae3ad01461033d57806335aa2e44146103965780634d238c8e146103ae57806366188463146103d157806370a08231146103f5578063715018a6146104165780637fb992f71461042b5780638177cf3c1461044c5780638da5cb5b146104735780638f32d59b1461048857806395d89b411461049d578063a59f3e0c146104b2578063a9059cbb146104ca578063abd4d716146104ee578063b31d63cc14610503578063d73dd62314610580578063d8a40f6b146105a4578063dd62ed3e146105fd578063e5990d2014610624578063e6bce1ae1461063c578063e9395679146106ab578063f0c8e969146106c3578063f2fde38b14610771575b600080fd5b34801561019057600080fd5b50610199610792565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d35781810151838201526020016101bb565b50505050905090810190601f1680156102005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021a57600080fd5b50610232600160a060020a0360043516602435610820565b604080519115158252519081900360200190f35b34801561025257600080fd5b5061025b610886565b60408051918252519081900360200190f35b34801561027957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102cd958335953695604494919390910191908190840183828082843750949750509335945061088c9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156102f557600080fd5b50610232600160a060020a0360043581169060243516604435610915565b34801561031f57600080fd5b5061025b610a78565b34801561033457600080fd5b5061025b610a7e565b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b943694929360249392840191908190840183828082843750949750610a849650505050505050565b3480156103a257600080fd5b506102cd600435610aa6565b3480156103ba57600080fd5b506103cf600160a060020a0360043516610ace565b005b3480156103dd57600080fd5b50610232600160a060020a0360043516602435610b40565b34801561040157600080fd5b5061025b600160a060020a0360043516610c2f565b34801561042257600080fd5b506103cf610c4a565b34801561043757600080fd5b506103cf600160a060020a0360043516610cb4565b34801561045857600080fd5b5061025b600435600160a060020a0360243516604435610cf6565b34801561047f57600080fd5b506102cd610dbd565b34801561049457600080fd5b50610232610dcc565b3480156104a957600080fd5b50610199610ddd565b3480156104be57600080fd5b506103cf600435610e38565b3480156104d657600080fd5b50610232600160a060020a0360043516602435610e7f565b3480156104fa57600080fd5b506102cd610f4c565b34801561050f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261055e9436949293602493928401919081908401838280828437509497505093359450610f5b9350505050565b6040805160ff9094168452602084019290925282820152519081900360600190f35b34801561058c57600080fd5b50610232600160a060020a0360043516602435610faf565b3480156105b057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b9436949293602493928401919081908401838280828437509497506110489650505050505050565b34801561060957600080fd5b5061025b600160a060020a036004358116906024351661118d565b34801561063057600080fd5b5061025b6004356111b8565b34801561064857600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526103cf94803594600160a060020a03602480359190911695604435953695608494930191819084018382808284375094975061122f9650505050505050565b3480156106b757600080fd5b50610199600435611404565b3480156106cf57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526107219583359536956044949193909101919081908401838280828437509497506115df9650505050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561075d578181015183820152602001610745565b505050509050019250505060405180910390f35b34801561077d57600080fd5b506103cf600160a060020a03600435166116dd565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b820191906000526020600020905b8154815290600101906020018083116107fb57829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b60008060008061089c8686610f5b565b60408051600080825260208083018085528e905260ff8716838501526060830186905260808301859052925195985093965091945060019360a0808401949293601f19830193908390039091019190865af11580156108ff573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b600160a060020a03831660009081526020819052604081205482111561093a57600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561096a57600080fd5b600160a060020a038316151561097f57600080fd5b600160a060020a0384166000908152602081905260409020546109a8908363ffffffff6116f916565b600160a060020a0380861660009081526020819052604080822093909355908516815220546109dd908363ffffffff61170b16565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610a1f908363ffffffff6116f916565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611a42833981519152929181900390910190a35060019392505050565b600a5481565b60095481565b80516000906041900615610a99576000610aa0565b8151604190045b92915050565b6004805482908110610ab457fe5b600091825260209091200154600160a060020a0316905081565b610ad6610dcc565b1515610ae157600080fd5b600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610b9457336000908152600260209081526040808320600160a060020a0388168452909152812055610bc9565b610ba4818463ffffffff6116f916565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b610c52610dcc565b1515610c5d57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b610cbc610dcc565b1515610cc757600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f8177cf3c00000000000000000000000000000000000000000000000000000000602080830191909152338284015260608201869052600160a060020a038516608083015260a08083018590528351808403909101815260c0909201928390528151600093918291908401908083835b60208310610d895780518252601f199092019160209182019101610d6a565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b600354600160a060020a031690565b600354600160a060020a0316331490565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b604080513381526020810183905281517fc6b9e46d1489b207d3057f60c8ac6b283467391239ee8e388c1583c20418f36d929181900390910190a1610e7c81611718565b50565b33600090815260208190526040812054821115610e9b57600080fd5b600160a060020a0383161515610eb057600080fd5b33600090815260208190526040902054610ed0908363ffffffff6116f916565b3360009081526020819052604080822092909255600160a060020a03851681522054610f02908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611a428339815191529281900390910190a350600192915050565b600554600160a060020a031681565b604180820283810160208101516040820151919093015160ff169291601b841015610f8757601b840193505b8360ff16601b1480610f9c57508360ff16601c145b1515610fa757600080fd5b509250925092565b336000908152600260209081526040808320600160a060020a0386168452909152812054610fe3908363ffffffff61170b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006110548251611404565b8260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a000000000000815250601a0183805190602001908083835b602083106110af5780518252601f199092019160209182019101611090565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106110f75780518252601f1990920191602091820191016110d8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061115b5780518252601f19909201916020918201910161113c565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083836020831061115b5780518252601f19909201916020918201910161113c565b6000606061123c86611722565b156112b7576040805160e560020a62461bcd02815260206004820152602e60248201527f466f726569676e207472616e73616374696f6e2068617320616c72656164792060448201527f6265656e2070726f636573736564000000000000000000000000000000000000606482015290519081900360840190fd5b6112ca6112c5878787610cf6565b6111b8565b91506112d682846115df565b90506112e181611737565b1515611337576040805160e560020a62461bcd02815260206004820152601e60248201527f56616c696461746f7220766572696669636174696f6e206661696c65642e0000604482015290519081900360640190fd5b600554600160a060020a0386811691161461139c576040805160e560020a62461bcd02815260206004820152601860248201527f496e76616c696420636f6e7472616374207461726765742e0000000000000000604482015290519081900360640190fd5b6113a6338561180a565b50600086815260066020908152604091829020805460ff19166001179055815133815290810186905281517f8fc406a425362a34b826c493c710d249c4006ec0fde54cebe73112447567b1a1929181900390910190a1505050505050565b6060816000828180808386151561143d577f30000000000000000000000000000000000000000000000000000000000000009550611475565b60008711156114755761010086049550600a870660300160f860020a0260010286179550600a8781151561146d57fe5b04965061143d565b604080516020808252818301909252908082016104008038833901905050945060009350600092505b602083101561152b576008830260020a860291507fff00000000000000000000000000000000000000000000000000000000000000821615611520578185858151811015156114e957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909301925b60019092019161149e565b836040519080825280601f01601f191660200182016040528015611559578160200160208202803883390190505b509050600092505b838310156115d357848381518110151561157757fe5b90602001015160f860020a900460f860020a02818481518110151561159857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190920191611561565b98975050505050505050565b606060008060008060006115f287610a84565b91508160405190808252806020026020018201604052801561161e578160200160208202803883390190505b509550600090505b818110156116d2576116388782610f5b565b60408051600080825260208083018085528f905260ff87168385015260608301869052608083018590529251959a5093985091965060019360a0808401949293601f19830193908390039091019190865af115801561169b573d6000803e3d6000fd5b5050506020604051035186828151811015156116b357fe5b600160a060020a03909216602092830290910190910152600101611626565b505050505092915050565b6116e5610dcc565b15156116f057600080fd5b610e7c816118d4565b60008282111561170557fe5b50900390565b81810182811015610aa057fe5b610e7c3382611952565b60009081526006602052604090205460ff1690565b6004548151600091829114611796576040805160e560020a62461bcd02815260206004820152601c60248201527f496e76616c6964206e756d626572206f66207369676e61747572657300000000604482015290519081900360640190fd5b5060005b6004548110156117ff5782818151811015156117b257fe5b90602001906020020151600160a060020a03166004828154811015156117d457fe5b600091825260209091200154600160a060020a0316146117f75760009150611804565b60010161179a565b600191505b50919050565b600154600090611820908363ffffffff61170b16565b600155600160a060020a03831660009081526020819052604090205461184c908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03851691600091600080516020611a428339815191529181900360200190a350600192915050565b600160a060020a03811615156118e957600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821660009081526020819052604090205481111561197757600080fd5b600160a060020a0382166000908152602081905260409020546119a0908263ffffffff6116f916565b600160a060020a0383166000908152602081905260409020556001546119cc908263ffffffff6116f916565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611a428339815191529181900360200190a350505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058200652eea09cc2aeb1d35416f98d06623fb57e82aaef43400863d2dc16b370be6d0029

Deployed Bytecode

0x60806040526004361061017f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610184578063095ea7b31461020e57806318160ddd146102465780631c2a15b81461026d57806323b872dd146102e95780632ff2e9dc14610313578063313ce5671461032857806333ae3ad01461033d57806335aa2e44146103965780634d238c8e146103ae57806366188463146103d157806370a08231146103f5578063715018a6146104165780637fb992f71461042b5780638177cf3c1461044c5780638da5cb5b146104735780638f32d59b1461048857806395d89b411461049d578063a59f3e0c146104b2578063a9059cbb146104ca578063abd4d716146104ee578063b31d63cc14610503578063d73dd62314610580578063d8a40f6b146105a4578063dd62ed3e146105fd578063e5990d2014610624578063e6bce1ae1461063c578063e9395679146106ab578063f0c8e969146106c3578063f2fde38b14610771575b600080fd5b34801561019057600080fd5b50610199610792565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d35781810151838201526020016101bb565b50505050905090810190601f1680156102005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021a57600080fd5b50610232600160a060020a0360043516602435610820565b604080519115158252519081900360200190f35b34801561025257600080fd5b5061025b610886565b60408051918252519081900360200190f35b34801561027957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102cd958335953695604494919390910191908190840183828082843750949750509335945061088c9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156102f557600080fd5b50610232600160a060020a0360043581169060243516604435610915565b34801561031f57600080fd5b5061025b610a78565b34801561033457600080fd5b5061025b610a7e565b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b943694929360249392840191908190840183828082843750949750610a849650505050505050565b3480156103a257600080fd5b506102cd600435610aa6565b3480156103ba57600080fd5b506103cf600160a060020a0360043516610ace565b005b3480156103dd57600080fd5b50610232600160a060020a0360043516602435610b40565b34801561040157600080fd5b5061025b600160a060020a0360043516610c2f565b34801561042257600080fd5b506103cf610c4a565b34801561043757600080fd5b506103cf600160a060020a0360043516610cb4565b34801561045857600080fd5b5061025b600435600160a060020a0360243516604435610cf6565b34801561047f57600080fd5b506102cd610dbd565b34801561049457600080fd5b50610232610dcc565b3480156104a957600080fd5b50610199610ddd565b3480156104be57600080fd5b506103cf600435610e38565b3480156104d657600080fd5b50610232600160a060020a0360043516602435610e7f565b3480156104fa57600080fd5b506102cd610f4c565b34801561050f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261055e9436949293602493928401919081908401838280828437509497505093359450610f5b9350505050565b6040805160ff9094168452602084019290925282820152519081900360600190f35b34801561058c57600080fd5b50610232600160a060020a0360043516602435610faf565b3480156105b057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261025b9436949293602493928401919081908401838280828437509497506110489650505050505050565b34801561060957600080fd5b5061025b600160a060020a036004358116906024351661118d565b34801561063057600080fd5b5061025b6004356111b8565b34801561064857600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526103cf94803594600160a060020a03602480359190911695604435953695608494930191819084018382808284375094975061122f9650505050505050565b3480156106b757600080fd5b50610199600435611404565b3480156106cf57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526107219583359536956044949193909101919081908401838280828437509497506115df9650505050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561075d578181015183820152602001610745565b505050509050019250505060405180910390f35b34801561077d57600080fd5b506103cf600160a060020a03600435166116dd565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b820191906000526020600020905b8154815290600101906020018083116107fb57829003601f168201915b505050505081565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b60008060008061089c8686610f5b565b60408051600080825260208083018085528e905260ff8716838501526060830186905260808301859052925195985093965091945060019360a0808401949293601f19830193908390039091019190865af11580156108ff573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b600160a060020a03831660009081526020819052604081205482111561093a57600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561096a57600080fd5b600160a060020a038316151561097f57600080fd5b600160a060020a0384166000908152602081905260409020546109a8908363ffffffff6116f916565b600160a060020a0380861660009081526020819052604080822093909355908516815220546109dd908363ffffffff61170b16565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610a1f908363ffffffff6116f916565b600160a060020a0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020611a42833981519152929181900390910190a35060019392505050565b600a5481565b60095481565b80516000906041900615610a99576000610aa0565b8151604190045b92915050565b6004805482908110610ab457fe5b600091825260209091200154600160a060020a0316905081565b610ad6610dcc565b1515610ae157600080fd5b600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000908152600260209081526040808320600160a060020a0386168452909152812054808310610b9457336000908152600260209081526040808320600160a060020a0388168452909152812055610bc9565b610ba4818463ffffffff6116f916565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b610c52610dcc565b1515610c5d57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b610cbc610dcc565b1515610cc757600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f8177cf3c00000000000000000000000000000000000000000000000000000000602080830191909152338284015260608201869052600160a060020a038516608083015260a08083018590528351808403909101815260c0909201928390528151600093918291908401908083835b60208310610d895780518252601f199092019160209182019101610d6a565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b600354600160a060020a031690565b600354600160a060020a0316331490565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108185780601f106107ed57610100808354040283529160200191610818565b604080513381526020810183905281517fc6b9e46d1489b207d3057f60c8ac6b283467391239ee8e388c1583c20418f36d929181900390910190a1610e7c81611718565b50565b33600090815260208190526040812054821115610e9b57600080fd5b600160a060020a0383161515610eb057600080fd5b33600090815260208190526040902054610ed0908363ffffffff6116f916565b3360009081526020819052604080822092909255600160a060020a03851681522054610f02908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191923392600080516020611a428339815191529281900390910190a350600192915050565b600554600160a060020a031681565b604180820283810160208101516040820151919093015160ff169291601b841015610f8757601b840193505b8360ff16601b1480610f9c57508360ff16601c145b1515610fa757600080fd5b509250925092565b336000908152600260209081526040808320600160a060020a0386168452909152812054610fe3908363ffffffff61170b16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006110548251611404565b8260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a000000000000815250601a0183805190602001908083835b602083106110af5780518252601f199092019160209182019101611090565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106110f75780518252601f1990920191602091820191016110d8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061115b5780518252601f19909201916020918201910161113c565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151600093918291908401908083836020831061115b5780518252601f19909201916020918201910161113c565b6000606061123c86611722565b156112b7576040805160e560020a62461bcd02815260206004820152602e60248201527f466f726569676e207472616e73616374696f6e2068617320616c72656164792060448201527f6265656e2070726f636573736564000000000000000000000000000000000000606482015290519081900360840190fd5b6112ca6112c5878787610cf6565b6111b8565b91506112d682846115df565b90506112e181611737565b1515611337576040805160e560020a62461bcd02815260206004820152601e60248201527f56616c696461746f7220766572696669636174696f6e206661696c65642e0000604482015290519081900360640190fd5b600554600160a060020a0386811691161461139c576040805160e560020a62461bcd02815260206004820152601860248201527f496e76616c696420636f6e7472616374207461726765742e0000000000000000604482015290519081900360640190fd5b6113a6338561180a565b50600086815260066020908152604091829020805460ff19166001179055815133815290810186905281517f8fc406a425362a34b826c493c710d249c4006ec0fde54cebe73112447567b1a1929181900390910190a1505050505050565b6060816000828180808386151561143d577f30000000000000000000000000000000000000000000000000000000000000009550611475565b60008711156114755761010086049550600a870660300160f860020a0260010286179550600a8781151561146d57fe5b04965061143d565b604080516020808252818301909252908082016104008038833901905050945060009350600092505b602083101561152b576008830260020a860291507fff00000000000000000000000000000000000000000000000000000000000000821615611520578185858151811015156114e957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909301925b60019092019161149e565b836040519080825280601f01601f191660200182016040528015611559578160200160208202803883390190505b509050600092505b838310156115d357848381518110151561157757fe5b90602001015160f860020a900460f860020a02818481518110151561159857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190920191611561565b98975050505050505050565b606060008060008060006115f287610a84565b91508160405190808252806020026020018201604052801561161e578160200160208202803883390190505b509550600090505b818110156116d2576116388782610f5b565b60408051600080825260208083018085528f905260ff87168385015260608301869052608083018590529251959a5093985091965060019360a0808401949293601f19830193908390039091019190865af115801561169b573d6000803e3d6000fd5b5050506020604051035186828151811015156116b357fe5b600160a060020a03909216602092830290910190910152600101611626565b505050505092915050565b6116e5610dcc565b15156116f057600080fd5b610e7c816118d4565b60008282111561170557fe5b50900390565b81810182811015610aa057fe5b610e7c3382611952565b60009081526006602052604090205460ff1690565b6004548151600091829114611796576040805160e560020a62461bcd02815260206004820152601c60248201527f496e76616c6964206e756d626572206f66207369676e61747572657300000000604482015290519081900360640190fd5b5060005b6004548110156117ff5782818151811015156117b257fe5b90602001906020020151600160a060020a03166004828154811015156117d457fe5b600091825260209091200154600160a060020a0316146117f75760009150611804565b60010161179a565b600191505b50919050565b600154600090611820908363ffffffff61170b16565b600155600160a060020a03831660009081526020819052604090205461184c908363ffffffff61170b16565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03851691600091600080516020611a428339815191529181900360200190a350600192915050565b600160a060020a03811615156118e957600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03821660009081526020819052604090205481111561197757600080fd5b600160a060020a0382166000908152602081905260409020546119a0908263ffffffff6116f916565b600160a060020a0383166000908152602081905260409020556001546119cc908263ffffffff6116f916565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611a428339815191529181900360200190a350505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058200652eea09cc2aeb1d35416f98d06623fb57e82aaef43400863d2dc16b370be6d0029

Deployed Bytecode Sourcemap

18900:287:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18940:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18940:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18940:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5686:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5686:192:0;-1:-1:-1;;;;;5686:192:0;;;;;;;;;;;;;;;;;;;;;;;;;2367:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2367:85:0;;;;;;;;;;;;;;;;;;;;12385:330;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12385:330:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12385:330:0;;-1:-1:-1;;12385:330:0;;;-1:-1:-1;12385:330:0;;-1:-1:-1;;;;12385:330:0;;;;;-1:-1:-1;;;;;12385:330:0;;;;;;;;;;;;;;4570:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4570:487:0;-1:-1:-1;;;;;4570:487:0;;;;;;;;;;;;19054:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19054:30:0;;;;19022:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19022:25:0;;;;11904:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11904:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11904:203:0;;-1:-1:-1;11904:203:0;;-1:-1:-1;;;;;;;11904:203:0;15565:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15565:27:0;;;;;15908:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15908:105:0;-1:-1:-1;;;;;15908:105:0;;;;;;;7605:447;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7605:447:0;-1:-1:-1;;;;;7605:447:0;;;;;;;3151:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3151:101:0;-1:-1:-1;;;;;3151:101:0;;;;;14756:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14756:116:0;;;;16021:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16021:107:0;-1:-1:-1;;;;;16021:107:0;;;;;18562:293;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18562:293:0;;;-1:-1:-1;;;;;18562:293:0;;;;;;;14097:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14097:72:0;;;;14399:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14399:85:0;;;;18986:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18986:29:0;;;;16144:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16144:124:0;;;;;2613:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2613:329:0;-1:-1:-1;;;;;2613:329:0;;;;;;;15596:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15596:30:0;;;;10681:979;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10681:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10681:979:0;;-1:-1:-1;;10681:979:0;;;-1:-1:-1;10681:979:0;;-1:-1:-1;;;;10681:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6830:307;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6830:307:0;-1:-1:-1;;;;;6830:307:0;;;;;;;8926:263;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8926:263:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8926:263:0;;-1:-1:-1;8926:263:0;;-1:-1:-1;;;;;;;8926:263:0;6205:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6205:162:0;-1:-1:-1;;;;;6205:162:0;;;;;;;;;;8491:239;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8491:239:0;;;;;16280:688;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16280:688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16280:688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16280:688:0;;-1:-1:-1;16280:688:0;;-1:-1:-1;;;;;;;16280:688:0;9306:932;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9306:932:0;;;;;12923:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12923:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12923:487:0;;-1:-1:-1;12923:487:0;;-1:-1:-1;;;;;;;12923:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12923:487:0;;;;;;;;;;;;;;;;;15039:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15039:103:0;-1:-1:-1;;;;;15039:103:0;;;;;18940:38;;;;;;;;;;;;;;;-1:-1:-1;;18940:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5686:192::-;5774:10;5753:4;5766:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;5766:29:0;;;;;;;;;;;:38;;;5816;;;;;;;5753:4;;5766:29;;5774:10;;5816:38;;;;;;;;-1:-1:-1;5868:4:0;5686:192;;;;:::o;2367:85::-;2434:12;;2367:85;:::o;12385:330::-;12536:7;12561;12579:9;12599;12631:33;12646:11;12659:4;12631:14;:33::i;:::-;12682:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:45;;-1:-1:-1;12619:45:0;;-1:-1:-1;12619:45:0;;-1:-1:-1;12682:25:0;;;;;;;;;-1:-1:-1;;12682:25:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12682:25:0;;-1:-1:-1;;12682:25:0;;;12385:330;-1:-1:-1;;;;;;;;12385:330:0:o;4570:487::-;-1:-1:-1;;;;;4716:15:0;;4682:4;4716:15;;;;;;;;;;;4706:25;;;4698:34;;;;;;-1:-1:-1;;;;;4757:14:0;;;;;;:7;:14;;;;;;;;4772:10;4757:26;;;;;;;;4747:36;;;4739:45;;;;;;-1:-1:-1;;;;;4799:17:0;;;;4791:26;;;;;;-1:-1:-1;;;;;4844:15:0;;:8;:15;;;;;;;;;;;:27;;4864:6;4844:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;4826:15:0;;;:8;:15;;;;;;;;;;;:45;;;;4894:13;;;;;;;:25;;4912:6;4894:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;4878:13:0;;;:8;:13;;;;;;;;;;;:41;;;;4955:14;;;;;:7;:14;;;;;4970:10;4955:26;;;;;;;:38;;4986:6;4955:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;4926:14:0;;;;;;;:7;:14;;;;;;;;4941:10;4926:26;;;;;;;;:67;;;;5005:28;;;;;;;;;;;4926:14;;-1:-1:-1;;;;;;;;;;;5005:28:0;;;;;;;;;;-1:-1:-1;5047:4:0;4570:487;;;;;:::o;19054:30::-;;;;:::o;19022:25::-;;;;:::o;11904:203::-;12041:18;;12012:4;;12062:2;;12041:23;:28;:58;;12098:1;12041:58;;;12072:18;;12093:2;;12072:23;12041:58;12034:65;11904:203;-1:-1:-1;;11904:203:0:o;15565:27::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15565:27:0;;-1:-1:-1;15565:27:0;:::o;15908:105::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;15978:10;27::-1;;39:1;23:18;;45:23;;-1:-1;15978:27:0;;;;;;;;-1:-1:-1;;15978:27:0;-1:-1:-1;;;;;15978:27:0;;;;;;;;;;15908:105::o;7605:447::-;7759:10;7716:4;7751:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7751:29:0;;;;;;;;;;7791:28;;;7787:169;;7838:10;7862:1;7830:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7830:29:0;;;;;;;;;:33;7787:169;;;7918:30;:8;7931:16;7918:30;:12;:30;:::i;:::-;7894:10;7886:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7886:29:0;;;;;;;;;:62;7787:169;7976:10;7998:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7967:61:0;;7998:29;;;;;;;;;;;7967:61;;;;;;;;;7976:10;7967:61;;;;;;;;;;;-1:-1:-1;8042:4:0;;7605:447;-1:-1:-1;;;7605:447:0:o;3151:101::-;-1:-1:-1;;;;;3230:16:0;3207:7;3230:16;;;;;;;;;;;;3151:101::o;14756:116::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;14833:6;;14814:26;;-1:-1:-1;;;;;14833:6:0;;;;14814:26;;14833:6;;14814:26;14847:6;:19;;-1:-1:-1;;14847:19:0;;;14756:116::o;16021:107::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;16086:15;:34;;-1:-1:-1;;16086:34:0;-1:-1:-1;;;;;16086:34:0;;;;;;;;;;16021:107::o;18562:293::-;18767:79;;;18779:18;18767:79;;;;;;;;18799:10;18767:79;;;;;;;;;;-1:-1:-1;;;;;18767:79:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18767:79:0;;;;;;;;18757:90;;18665:7;;18767:79;;;18757:90;;;;;18767:79;18757:90;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;18757:90:0;;;;;;;;;;;;-1:-1:-1;;;;;;;18562:293:0:o;14097:72::-;14157:6;;-1:-1:-1;;;;;14157:6:0;14097:72;:::o;14399:85::-;14472:6;;-1:-1:-1;;;;;14472:6:0;14458:10;:20;;14399:85::o;18986:29::-;;;;;;;;;;;;;;;-1:-1:-1;;18986:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16144:124;16199:37;;;16216:10;16199:37;;;;;;;;;;;;;;;;;;;;;16247:13;16252:7;16247:4;:13::i;:::-;16144:124;:::o;2613:329::-;2716:10;2676:4;2707:20;;;;;;;;;;;2697:30;;;2689:39;;;;;;-1:-1:-1;;;;;2743:17:0;;;;2735:26;;;;;;2802:10;2793:8;:20;;;;;;;;;;;:32;;2818:6;2793:32;:24;:32;:::i;:::-;2779:10;2770:8;:20;;;;;;;;;;;:55;;;;-1:-1:-1;;;;;2848:13:0;;;;;;:25;;2866:6;2848:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;2832:13:0;;:8;:13;;;;;;;;;;;;:41;;;;2885:33;;;;;;;2832:13;;2894:10;;-1:-1:-1;;;;;;;;;;;2885:33:0;;;;;;;;;-1:-1:-1;2932:4:0;2613:329;;;;:::o;15596:30::-;;;-1:-1:-1;;;;;15596:30:0;;:::o;10681:979::-;10876:2;10869:9;;;11136:33;;;11157:2;11136:33;;11130:40;11216:2;11195:33;;11189:40;11529:33;;;;11523:40;11565:4;11519:51;;11130:40;11601:2;11597:6;;11593:19;;;11610:2;11605:7;;;;11593:19;11633:1;:7;;11638:2;11633:7;:18;;;;11644:1;:7;;11649:2;11644:7;11633:18;11625:27;;;;;;;;10681:979;;;;;;:::o;6830:307::-;7001:10;6936:4;6993:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;6993:29:0;;;;;;;;;;:46;;7027:11;6993:46;:33;:46;:::i;:::-;6960:10;6952:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;6952:29:0;;;;;;;;;;;;:88;;;7052:61;;;;;;6952:29;;7052:61;;;;;;;;;;;-1:-1:-1;7127:4:0;6830:307;;;;:::o;8926:263::-;9042:16;9148:25;9161:4;:11;9148:12;:25::i;:::-;9175:4;9097:83;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;9097:83:0;;;;;;;;;;-1:-1:-1;9097:83:0;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;9097:83:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9097:83:0;;;9087:94;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;9087:94:0;;;;;;;;;;;;-1:-1:-1;;;;;8926:263:0:o;6205:162::-;-1:-1:-1;;;;;6336:15:0;;;6310:7;6336:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;6205:162::o;8491:239::-;8663:58;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8663:58:0;;;;;;;;8653:69;;8608:16;;8663:58;;;8653:69;;;;;8663:58;8653:69;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;16280:688:0;16486:12;16591:26;16397:18;16406:8;16397;:18::i;:::-;:27;16389:86;;;;;-1:-1:-1;;;;;16389:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16501:79;16531:48;16544:8;16553:16;16571:7;16531:12;:48::i;:::-;16501:29;:79::i;:::-;16486:94;;16620:35;16637:4;16643:11;16620:16;:35::i;:::-;16591:64;;16674:27;16691:9;16674:16;:27::i;:::-;16666:70;;;;;;;-1:-1:-1;;;;;16666:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16775:15;;-1:-1:-1;;;;;16755:35:0;;;16775:15;;16755:35;16747:72;;;;;-1:-1:-1;;;;;16747:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16830:25;16835:10;16847:7;16830:4;:25::i;:::-;-1:-1:-1;16866:29:0;;;;:19;:29;;;;;;;;;:36;;-1:-1:-1;;16866:36:0;16898:4;16866:36;;;16918;;16934:10;16918:36;;;;;;;;;;;;;;;;;;;;;16280:688;;;;;;:::o;9306:932::-;9400:6;9433:1;9424:6;9400;9424;;;9400;9469;;9465:248;;;9492:7;;;9465:248;;;9543:1;9539;:5;9532:170;;;9588:6;9582:1;9577:18;;-1:-1:-1;9634:2:0;9630:1;:6;9640:2;9629:13;-1:-1:-1;;;9628:31:0;9620:40;;9615:45;;;;9684:2;9679:7;;;;;;;;;;;9532:170;;;9752:13;;;9762:2;9752:13;;;;;;;;;;;;;17:15:-1;;105:10;9752:13:0;88:34:-1;136:17;;-1:-1;9752:13:0;9725:40;;9793:1;9776:18;;9819:1;9810:10;;9805:229;9826:2;9822:1;:6;9805:229;;;9891:1;:5;;9885:1;:12;9875:22;;;-1:-1:-1;9918:9:0;;;;9914:109;;9973:4;9948:11;9960:9;9948:22;;;;;;;;;;;;;;:29;;;;;;;;;;-1:-1:-1;9996:11:0;;;;;9914:109;9830:3;;;;;9805:229;;;10081:9;10071:20;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;10071:20:0;;10044:47;;10111:1;10107:5;;10102:90;10118:9;10114:1;:13;10102:90;;;10166:11;10178:1;10166:14;;;;;;;;;;;;;;;-1:-1:-1;;;10166:14:0;;-1:-1:-1;;;10166:14:0;10149:11;10161:1;10149:14;;;;;;;;;;;;;;:31;;;;;;;;;;-1:-1:-1;10129:3:0;;;;;10102:90;;;10218:11;9306:932;-1:-1:-1;;;;;;;;9306:932:0:o;12923:487::-;13056:19;13093:7;13111:9;13131;13151:10;13251:6;13164:28;13180:11;13164:15;:28::i;:::-;13151:41;;13229:5;13215:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;13215:20:0;;13203:32;;13260:1;13251:10;;13246:157;13267:5;13263:1;:9;13246:157;;;13306:30;13321:11;13334:1;13306:14;:30::i;:::-;13366:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13294:42;;-1:-1:-1;13294:42:0;;-1:-1:-1;13294:42:0;;-1:-1:-1;13366:25:0;;;;;;;;;-1:-1:-1;;13366:25:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13366:25:0;;;;;;;;13351:9;13361:1;13351:12;;;;;;;;;;-1:-1:-1;;;;;13351:40:0;;;:12;;;;;;;;;;:40;13274:3;;13246:157;;;12923:487;;;;;;;;;:::o;15039:103::-;14290:9;:7;:9::i;:::-;14282:18;;;;;;;;15108:28;15127:8;15108:18;:28::i;1658:119::-;1718:7;1741:8;;;;1734:16;;;;-1:-1:-1;1764:7:0;;;1658:119::o;1844:132::-;1926:7;;;1947;;;;1940:15;;;17856:74;17900:25;17906:10;17918:6;17900:5;:25::i;16976:119::-;17035:4;17058:29;;;:19;:29;;;;;;;;;16976:119::o;17103:357::-;17218:10;:17;17198:16;;17173:4;;;;17198:37;17190:78;;;;;-1:-1:-1;;;;;17190:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17292:1:0;17279:152;17300:10;:17;17296:21;;17279:152;;;17359:9;17369:1;17359:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17342:29:0;:10;17353:1;17342:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17342:13:0;:29;17339:81;;17399:5;17392:12;;;;17339:81;17319:3;;17279:152;;;17448:4;17441:11;;17103:357;;;;;:::o;17468:276::-;17567:12;;17538:4;;17567:25;;17584:7;17567:25;:16;:25;:::i;:::-;17552:12;:40;-1:-1:-1;;;;;17616:13:0;;:8;:13;;;;;;;;;;;:26;;17634:7;17616:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;17600:13:0;;:8;:13;;;;;;;;;;;;:42;;;;17655:18;;;;;;;17600:13;;17655:18;;;;;;;;;17686:34;;;;;;;;-1:-1:-1;;;;;17686:34:0;;;17703:1;;-1:-1:-1;;;;;;;;;;;17686:34:0;;;;;;;;-1:-1:-1;17735:4:0;17468:276;;;;:::o;15282:173::-;-1:-1:-1;;;;;15352:22:0;;;;15344:31;;;;;;15408:6;;15387:38;;-1:-1:-1;;;;;15387:38:0;;;;15408:6;;15387:38;;15408:6;;15387:38;15432:6;:17;;-1:-1:-1;;15432:17:0;-1:-1:-1;;;;;15432:17:0;;;;;;;;;;15282:173::o;17935:432::-;-1:-1:-1;;;;;18012:14:0;;:8;:14;;;;;;;;;;;18002:24;;;17994:33;;;;;;-1:-1:-1;;;;;18220:14:0;;:8;:14;;;;;;;;;;;:26;;18239:6;18220:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;18203:14:0;;:8;:14;;;;;;;;;;:43;18266:12;;:24;;18283:6;18266:24;:16;:24;:::i;:::-;18251:12;:39;18300:18;;;;;;;;-1:-1:-1;;;;;18300:18:0;;;;;;;;;;;;;18328:34;;;;;;;;18351:1;;-1:-1:-1;;;;;18328:34:0;;;-1:-1:-1;;;;;;;;;;;18328:34:0;;;;;;;;17935:432;;:::o

Swarm Source

bzzr://0652eea09cc2aeb1d35416f98d06623fb57e82aaef43400863d2dc16b370be6d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.