ETH Price: $2,699.98 (+2.55%)
Gas: 8.25 Gwei

Token

exbase.finance (EXBASE)
 

Overview

Max Total Supply

650,454.268554063 EXBASE

Holders

172

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
118.889647757 EXBASE

Value
$0.00
0x5b57b83C142e3ADa7e7affB9DfC4904838EA43a7
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EXBASE

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-12
*/

pragma solidity 0.4.24;

// SOURCE https://github.com/ampleforth/uFragments/blob/master/contracts/UFragments.sol
// Major portions of this contract are based on AMPL and OpenZepplin contracts
 
contract Initializable {

  bool private initialized;
  bool private initializing;

  modifier initializer() {
    require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");

    bool wasInitializing = initializing;
    initializing = true;
    initialized = true;

    _;

    initializing = wasInitializing;
  }

  function isConstructor() private view returns (bool) {
    uint256 cs;
    assembly { cs := extcodesize(address) }
    return cs == 0;
  }

  uint256[50] private ______gap;
}

contract Ownable is Initializable {

  address private _owner;
  uint256 private _ownershipLocked;

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


  function initialize(address sender) internal initializer {
    _owner = sender;
	_ownershipLocked = 0;
  }

  function owner() public view returns(address) {
    return _owner;
  }

  modifier onlyOwner() {
    require(isOwner());
    _;
  }

  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  function _transferOwnership(address newOwner) internal {
    require(_ownershipLocked == 0);
    require(newOwner != address(0));
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
  
  // Set _ownershipLocked flag to lock contract owner forever
  function lockOwnership() public onlyOwner {
	require(_ownershipLocked == 0);
	emit OwnershipLocked(_owner);
    _ownershipLocked = 1;
  }

  uint256[50] private ______gap;
}

interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address who) external view returns (uint256);

  function allowance(address owner, address spender)
    external view returns (uint256);

  function transfer(address to, uint256 value) external returns (bool);

  function approve(address spender, uint256 value)
    external returns (bool);

  function transferFrom(address from, address to, uint256 value)
    external returns (bool);

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

contract ERC20Detailed is Initializable, IERC20 {
  string private _name;
  string private _symbol;
  uint8 private _decimals;

  function initialize(string name, string symbol, uint8 decimals) internal initializer {
    _name = name;
    _symbol = symbol;
    _decimals = decimals;
  }

  function name() public view returns(string) {
    return _name;
  }

  function symbol() public view returns(string) {
    return _symbol;
  }

  function decimals() public view returns(uint8) {
    return _decimals;
  }

  uint256[50] private ______gap;
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract EXBASE is ERC20Detailed, Ownable {
    // PLEASE READ BEFORE CHANGING ANY ACCOUNTING OR MATH
    // Anytime there is division, there is a risk of numerical instability from rounding errors. In
    // order to minimize this risk, we adhere to the following guidelines:
    // 1) The conversion rate adopted is the number of gons that equals 1 fragment.
    //    The inverse rate must not be used--TOTAL_GONS is always the numerator and _totalSupply is
    //    always the denominator. (i.e. If you want to convert gons to fragments instead of
    //    multiplying by the inverse rate, you should divide by the normal rate)
    // 2) Gon balances converted into Fragments are always rounded down (truncated).
    //
    // We make the following guarantees:
    // - If address 'A' transfers x Fragments to address 'B'. A's resulting external balance will
    //   be decreased by precisely x Fragments, and B's external balance will be precisely
    //   increased by x Fragments.
    //
    // We do not guarantee that the sum of all balances equals the result of calling totalSupply().
    // This is because, for any conversion function 'f()' that has non-zero rounding error,
    // f(x0) + f(x1) + ... + f(xn) is not always equal to f(x0 + x1 + ... xn).
    using SafeMath for uint256;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        require(to != address(this));
        _;
    }

    uint256 private constant DECIMALS = 9;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 20000 * 10**DECIMALS;

    // TOTAL_GONS is a multiple of INITIAL_FRAGMENTS_SUPPLY so that _gonsPerFragment is an integer.
    // Use the highest value that fits in a uint256 for max granularity.
    uint256 private constant TOTAL_GONS = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

    // MAX_SUPPLY = maximum integer < (sqrt(4*TOTAL_GONS + 1) - 1) / 2
    uint256 private constant MAX_SUPPLY = ~uint128(0);  // (2^128) - 1

    uint256 private _totalSupply;
    uint256 private _gonsPerFragment;
    mapping(address => uint256) private _gonBalances;
    
    IERC20 BASETOKEN;
    uint256 public lastTrackedBaseSupply;
    bool public baseSupplyHasBeenInitilized = false;

    // This is denominated in Fragments, because the gons-fragments conversion might change before
    // it's fully paid.
    mapping (address => mapping (address => uint256)) private _allowedFragments;
    
    event LogRebase(uint256 indexed epoch, uint256 totalSupply);
    
    function setBASEAddress (IERC20 _basetoken) onlyOwner public {
        BASETOKEN = _basetoken;
    }
    
    // only callable once
    function initBaseTotalSupply (uint256 _ts) onlyOwner public {
        require(!baseSupplyHasBeenInitilized, 'SUPPLY ALREADY SET');
        lastTrackedBaseSupply = _ts;
        baseSupplyHasBeenInitilized = true;
    }
    
    function nextRebaseInfo()
        external view
        returns (uint256, bool)
    {
        uint256 baseTotalSupply = BASETOKEN.totalSupply();
        uint256 multiplier;
        bool rebaseIsPositive = true;
        if (baseTotalSupply > lastTrackedBaseSupply) {
            multiplier = (baseTotalSupply.sub(lastTrackedBaseSupply)).mul(10000).div(lastTrackedBaseSupply).mul(2);
        } else if (lastTrackedBaseSupply > baseTotalSupply) {
            multiplier = (lastTrackedBaseSupply.sub(baseTotalSupply)).mul(10000).div(lastTrackedBaseSupply).div(2);
            rebaseIsPositive = false;
        }

        return (multiplier, rebaseIsPositive);
    }

    /**
     * @dev Notifies Fragments contract about a new rebase cycle.
     * @return The total number of fragments after the supply adjustment.
     */
    function rebase()
        external
        returns (uint256)
    {
        
        uint256 baseTotalSupply = BASETOKEN.totalSupply();
        uint256 multiplier;
        require(baseTotalSupply != lastTrackedBaseSupply, 'NOT YET');
        if (baseTotalSupply > lastTrackedBaseSupply) {
            multiplier = (baseTotalSupply.sub(lastTrackedBaseSupply)).mul(10000).div(lastTrackedBaseSupply).mul(2);
        } else if (lastTrackedBaseSupply > baseTotalSupply) {
            multiplier = (lastTrackedBaseSupply.sub(baseTotalSupply)).mul(10000).div(lastTrackedBaseSupply).div(2);
        }
        
        uint256 modification;
        modification = _totalSupply.mul(multiplier).div(10000);
        if (baseTotalSupply > lastTrackedBaseSupply) {
            _totalSupply = _totalSupply.add(modification);
            // _totalSupply = _totalSupply.add(modification.mul(2));
        } else {
            _totalSupply = _totalSupply.sub(modification);
        }

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
        
        lastTrackedBaseSupply = baseTotalSupply;

        // From this point forward, _gonsPerFragment is taken as the source of truth.
        // We recalculate a new _totalSupply to be in agreement with the _gonsPerFragment
        // conversion rate.
        // This means our applied supplyDelta can deviate from the requested supplyDelta,
        // but this deviation is guaranteed to be < (_totalSupply^2)/(TOTAL_GONS - _totalSupply).
        //
        // In the case of _totalSupply <= MAX_UINT128 (our current supply cap), this
        // deviation is guaranteed to be < 1, so we can omit this step. If the supply cap is
        // ever increased, it must be re-included.
        // _totalSupply = TOTAL_GONS.div(_gonsPerFragment)

        emit LogRebase(block.timestamp, _totalSupply);
        return _totalSupply;
    }
    
    constructor() public {
		Ownable.initialize(msg.sender);
		ERC20Detailed.initialize("exbase.finance", "EXBASE", uint8(DECIMALS));
        
        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        _gonBalances[msg.sender] = TOTAL_GONS;
        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

        emit Transfer(address(0x0), msg.sender, _totalSupply);
    }

    /**
     * @return The total number of fragments.
     */
    function totalSupply()
        public
        view
        returns (uint256)
    {
        return _totalSupply;
    }

    /**
     * @param who The address to query.
     * @return The balance of the specified address.
     */
    function balanceOf(address who)
        public
        view
        returns (uint256)
    {
        return _gonBalances[who].div(_gonsPerFragment);
    }

    /**
     * @dev Transfer tokens to a specified address.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     * @return True on success, false otherwise.
     */
    function transfer(address to, uint256 value)
        public
        validRecipient(to)
        returns (bool)
    {
        uint256 gonValue = value.mul(_gonsPerFragment);
        _gonBalances[msg.sender] = _gonBalances[msg.sender].sub(gonValue);
        _gonBalances[to] = _gonBalances[to].add(gonValue);
        emit Transfer(msg.sender, to, value);
        return true;
    }

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

    /**
     * @dev Transfer tokens from one address to another.
     * @param from The address you want to send tokens from.
     * @param to The address you want to transfer to.
     * @param value The amount of tokens to be transferred.
     */
    function transferFrom(address from, address to, uint256 value)
        public
        validRecipient(to)
        returns (bool)
    {
        _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender].sub(value);

        uint256 gonValue = value.mul(_gonsPerFragment);
        _gonBalances[from] = _gonBalances[from].sub(gonValue);
        _gonBalances[to] = _gonBalances[to].add(gonValue);
        emit Transfer(from, to, value);

        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of
     * msg.sender. This method is included for ERC20 compatibility.
     * increaseAllowance and decreaseAllowance should be used instead.
     * Changing an allowance with this method brings the risk that someone may transfer both
     * the old and the new allowance - if they are both greater than zero - if a transfer
     * transaction is mined before the later approve() call is mined.
     *
     * @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)
    {
        _allowedFragments[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner has allowed to a spender.
     * This method should be used instead of approve() to avoid the double approval vulnerability
     * described above.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] =
            _allowedFragments[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner has allowed to a spender.
     *
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"lockOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"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":false,"inputs":[{"name":"_basetoken","type":"address"}],"name":"setBASEAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_ts","type":"uint256"}],"name":"initBaseTotalSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextRebaseInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"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":"lastTrackedBaseSupply","outputs":[{"name":"","type":"uint256"}],"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":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"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":false,"inputs":[],"name":"rebase","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"baseSupplyHasBeenInitilized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":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":true,"name":"epoch","type":"uint256"},{"indexed":false,"name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"lockedOwner","type":"address"}],"name":"OwnershipLocked","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":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","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"}]

6080604052600060a160006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506200004c33620001f86401000000000262002093176401000000009004565b620000d86040805190810160405280600e81526020017f6578626173652e66696e616e63650000000000000000000000000000000000008152506040805190810160405280600681526020017f455842415345000000000000000000000000000000000000000000000000000081525060096200038b6401000000000262002212176401000000009004565b6009600a0a614e2002609c819055506009600a0a614e2002600019811515620000fd57fe5b0660001903609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000184609c546009600a0a614e20026000198115156200016257fe5b0660001903620005246401000000000262001db1179091906401000000009004565b609d819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef609c546040518082815260200191505060405180910390a36200070e565b60008060019054906101000a900460ff16806200022a5750620002296200057f640100000000026401000000009004565b5b806200024257506000809054906101000a900460ff16155b1515620002dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060698190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff1680620003bd5750620003bc6200057f640100000000026401000000009004565b5b80620003d557506000809054906101000a900460ff16155b151562000470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055508360339080519060200190620004cf9291906200065f565b508260349080519060200190620004e89291906200065f565b5081603560006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b60006200057783836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000590640100000000026401000000009004565b905092915050565b600080303b90506000811491505090565b600080600084118390151562000644576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000608578082015181840152602081019050620005eb565b50505050905090810190601f168015620006365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083858115156200065157fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006a257805160ff1916838001178555620006d3565b82800160010185558215620006d3579182015b82811115620006d2578251825591602001919060010190620006b5565b5b509050620006e29190620006e6565b5090565b6200070b91905b8082111562000707576000816000905550600101620006ed565b5090565b90565b612475806200071e6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630577c02b1461012257806306fdde0314610139578063095ea7b3146101c957806311726f431461022e57806318160ddd1461027157806323b872dd1461029c57806328559e4a14610321578063313ce5671461034e5780633167f78b1461037f57806339509351146103b557806370a082311461041a5780638da5cb5b146104715780638f32d59b146104c857806394a3e7be146104f757806395d89b4114610522578063a457c2d7146105b2578063a9059cbb14610617578063af14052c1461067c578063ce554f6d146106a7578063dd62ed3e146106d6578063f2fde38b1461074d575b600080fd5b34801561012e57600080fd5b50610137610790565b005b34801561014557600080fd5b5061014e610843565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b50610214600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e5565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b5061026f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d7565b005b34801561027d57600080fd5b50610286610a2e565b6040518082815260200191505060405180910390f35b3480156102a857600080fd5b50610307600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a38565b604051808215151515815260200191505060405180910390f35b34801561032d57600080fd5b5061034c60048036038101908080359060200190929190505050610d75565b005b34801561035a57600080fd5b50610363610e32565b604051808260ff1660ff16815260200191505060405180910390f35b34801561038b57600080fd5b50610394610e49565b60405180838152602001821515151581526020019250505060405180910390f35b3480156103c157600080fd5b50610400600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe8565b604051808215151515815260200191505060405180910390f35b34801561042657600080fd5b5061045b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e4565b6040518082815260200191505060405180910390f35b34801561047d57600080fd5b50610486611241565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104d457600080fd5b506104dd61126b565b604051808215151515815260200191505060405180910390f35b34801561050357600080fd5b5061050c6112c3565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b506105376112c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057757808201518184015260208101905061055c565b50505050905090810190601f1680156105a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105be57600080fd5b506105fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136b565b604051808215151515815260200191505060405180910390f35b34801561062357600080fd5b50610662600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115fd565b604051808215151515815260200191505060405180910390f35b34801561068857600080fd5b5061069161182a565b6040518082815260200191505060405180910390f35b3480156106b357600080fd5b506106bc611b57565b604051808215151515815260200191505060405180910390f35b3480156106e257600080fd5b50610737600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b6a565b6040518082815260200191505060405180910390f35b34801561075957600080fd5b5061078e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf1565b005b61079861126b565b15156107a357600080fd5b60006069541415156107b457600080fd5b7f88edfb4ea96673000ad101b18d1c7dbd727c5d92217c8d0b9966f2aaf77e93f4606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001606981905550565b606060338054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60008160a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6109df61126b565b15156109ea57600080fd5b80609f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000609c54905090565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a7857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ab357600080fd5b610b428460a260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c1090919063ffffffff16565b60a260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bd7609d5485611c5a90919063ffffffff16565b9150610c2b82609e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c1090919063ffffffff16565b609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cc082609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2790919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b610d7d61126b565b1515610d8857600080fd5b60a160009054906101000a900460ff16151515610e0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f535550504c5920414c524541445920534554000000000000000000000000000081525060200191505060405180910390fd5b8060a081905550600160a160006101000a81548160ff02191690831515021790555050565b6000603560009054906101000a900460ff16905090565b6000806000806000609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050506040513d6020811015610f0157600080fd5b810190808051906020019092919050505092506001905060a054831115610f7957610f726002610f6460a054610f56612710610f4860a0548a611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611c5a90919063ffffffff16565b9150610fdb565b8260a0541115610fda57610fd36002610fc560a054610fb7612710610fa98960a054611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611db190919063ffffffff16565b9150600090505b5b8181945094505050509091565b60006110798260a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2790919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600061123a609d54609e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b9050919050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60a05481565b606060348054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113615780601f1061133657610100808354040283529160200191611361565b820191906000526020600020905b81548152906001019060200180831161134457829003601f168201915b5050505050905090565b60008060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310151561147d57600060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611511565b6114908382611c1090919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561163d57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561167857600080fd5b61168d609d5485611c5a90919063ffffffff16565b91506116e182609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c1090919063ffffffff16565b609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061177682609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2790919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b600080600080609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156118b657600080fd5b505af11580156118ca573d6000803e3d6000fd5b505050506040513d60208110156118e057600080fd5b8101908080519060200190929190505050925060a054831415151561196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f4e4f54205945540000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60a0548311156119ce576119c760026119b960a0546119ab61271061199d60a0548a611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611c5a90919063ffffffff16565b9150611a2c565b8260a0541115611a2b57611a286002611a1a60a054611a0c6127106119fe8960a054611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611db190919063ffffffff16565b91505b5b611a55612710611a4784609c54611c5a90919063ffffffff16565b611db190919063ffffffff16565b905060a054831115611a8157611a7681609c54611d2790919063ffffffff16565b609c81905550611a9d565b611a9681609c54611c1090919063ffffffff16565b609c819055505b6000196fffffffffffffffffffffffffffffffff16609c541115611ad7576000196fffffffffffffffffffffffffffffffff16609c819055505b611b05609c546009600a0a614e2002600019811515611af257fe5b0660001903611db190919063ffffffff16565b609d819055508260a081905550427f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609c546040518082815260200191505060405180910390a2609c54935050505090565b60a160009054906101000a900460ff1681565b600060a260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bf961126b565b1515611c0457600080fd5b611c0d81611dfb565b50565b6000611c5283836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f08565b905092915050565b6000806000841415611c6f5760009150611d20565b8284029050828482811515611c8057fe5b04141515611d1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8091505b5092915050565b6000808284019050838110151515611da7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611df383836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fc9565b905092915050565b6000606954141515611e0c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e4857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808484111583901515611fb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f7d578082015181840152602081019050611f62565b50505050905090810190601f168015611faa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385039050809150509392505050565b6000806000841183901515612079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561203e578082015181840152602081019050612023565b50505050905090810190601f16801561206b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50838581151561208557fe5b049050809150509392505050565b60008060019054906101000a900460ff16806120b357506120b2612393565b5b806120ca57506000809054906101000a900460ff16155b1515612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060698190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff16806122325750612231612393565b5b8061224957506000809054906101000a900460ff16155b15156122e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555083603390805190602001906123409291906123a4565b5082603490805190602001906123579291906123a4565b5081603560006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b600080303b90506000811491505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123e557805160ff1916838001178555612413565b82800160010185558215612413579182015b828111156124125782518255916020019190600101906123f7565b5b5090506124209190612424565b5090565b61244691905b8082111561244257600081600090555060010161242a565b5090565b905600a165627a7a72305820d3683fafaf168d0f50fdede44a062d115ec2872211ca557a276826011cf5260b0029

Deployed Bytecode

0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630577c02b1461012257806306fdde0314610139578063095ea7b3146101c957806311726f431461022e57806318160ddd1461027157806323b872dd1461029c57806328559e4a14610321578063313ce5671461034e5780633167f78b1461037f57806339509351146103b557806370a082311461041a5780638da5cb5b146104715780638f32d59b146104c857806394a3e7be146104f757806395d89b4114610522578063a457c2d7146105b2578063a9059cbb14610617578063af14052c1461067c578063ce554f6d146106a7578063dd62ed3e146106d6578063f2fde38b1461074d575b600080fd5b34801561012e57600080fd5b50610137610790565b005b34801561014557600080fd5b5061014e610843565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b50610214600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e5565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b5061026f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d7565b005b34801561027d57600080fd5b50610286610a2e565b6040518082815260200191505060405180910390f35b3480156102a857600080fd5b50610307600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a38565b604051808215151515815260200191505060405180910390f35b34801561032d57600080fd5b5061034c60048036038101908080359060200190929190505050610d75565b005b34801561035a57600080fd5b50610363610e32565b604051808260ff1660ff16815260200191505060405180910390f35b34801561038b57600080fd5b50610394610e49565b60405180838152602001821515151581526020019250505060405180910390f35b3480156103c157600080fd5b50610400600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe8565b604051808215151515815260200191505060405180910390f35b34801561042657600080fd5b5061045b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111e4565b6040518082815260200191505060405180910390f35b34801561047d57600080fd5b50610486611241565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104d457600080fd5b506104dd61126b565b604051808215151515815260200191505060405180910390f35b34801561050357600080fd5b5061050c6112c3565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b506105376112c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057757808201518184015260208101905061055c565b50505050905090810190601f1680156105a45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105be57600080fd5b506105fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136b565b604051808215151515815260200191505060405180910390f35b34801561062357600080fd5b50610662600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115fd565b604051808215151515815260200191505060405180910390f35b34801561068857600080fd5b5061069161182a565b6040518082815260200191505060405180910390f35b3480156106b357600080fd5b506106bc611b57565b604051808215151515815260200191505060405180910390f35b3480156106e257600080fd5b50610737600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b6a565b6040518082815260200191505060405180910390f35b34801561075957600080fd5b5061078e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf1565b005b61079861126b565b15156107a357600080fd5b60006069541415156107b457600080fd5b7f88edfb4ea96673000ad101b18d1c7dbd727c5d92217c8d0b9966f2aaf77e93f4606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001606981905550565b606060338054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108db5780601f106108b0576101008083540402835291602001916108db565b820191906000526020600020905b8154815290600101906020018083116108be57829003601f168201915b5050505050905090565b60008160a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6109df61126b565b15156109ea57600080fd5b80609f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000609c54905090565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a7857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ab357600080fd5b610b428460a260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c1090919063ffffffff16565b60a260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bd7609d5485611c5a90919063ffffffff16565b9150610c2b82609e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c1090919063ffffffff16565b609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cc082609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2790919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b610d7d61126b565b1515610d8857600080fd5b60a160009054906101000a900460ff16151515610e0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f535550504c5920414c524541445920534554000000000000000000000000000081525060200191505060405180910390fd5b8060a081905550600160a160006101000a81548160ff02191690831515021790555050565b6000603560009054906101000a900460ff16905090565b6000806000806000609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050506040513d6020811015610f0157600080fd5b810190808051906020019092919050505092506001905060a054831115610f7957610f726002610f6460a054610f56612710610f4860a0548a611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611c5a90919063ffffffff16565b9150610fdb565b8260a0541115610fda57610fd36002610fc560a054610fb7612710610fa98960a054611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611db190919063ffffffff16565b9150600090505b5b8181945094505050509091565b60006110798260a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2790919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600061123a609d54609e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db190919063ffffffff16565b9050919050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60a05481565b606060348054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113615780601f1061133657610100808354040283529160200191611361565b820191906000526020600020905b81548152906001019060200180831161134457829003601f168201915b5050505050905090565b60008060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310151561147d57600060a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611511565b6114908382611c1090919063ffffffff16565b60a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561163d57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561167857600080fd5b61168d609d5485611c5a90919063ffffffff16565b91506116e182609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c1090919063ffffffff16565b609e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061177682609e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2790919063ffffffff16565b609e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b600080600080609f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156118b657600080fd5b505af11580156118ca573d6000803e3d6000fd5b505050506040513d60208110156118e057600080fd5b8101908080519060200190929190505050925060a054831415151561196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f4e4f54205945540000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60a0548311156119ce576119c760026119b960a0546119ab61271061199d60a0548a611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611c5a90919063ffffffff16565b9150611a2c565b8260a0541115611a2b57611a286002611a1a60a054611a0c6127106119fe8960a054611c1090919063ffffffff16565b611c5a90919063ffffffff16565b611db190919063ffffffff16565b611db190919063ffffffff16565b91505b5b611a55612710611a4784609c54611c5a90919063ffffffff16565b611db190919063ffffffff16565b905060a054831115611a8157611a7681609c54611d2790919063ffffffff16565b609c81905550611a9d565b611a9681609c54611c1090919063ffffffff16565b609c819055505b6000196fffffffffffffffffffffffffffffffff16609c541115611ad7576000196fffffffffffffffffffffffffffffffff16609c819055505b611b05609c546009600a0a614e2002600019811515611af257fe5b0660001903611db190919063ffffffff16565b609d819055508260a081905550427f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609c546040518082815260200191505060405180910390a2609c54935050505090565b60a160009054906101000a900460ff1681565b600060a260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bf961126b565b1515611c0457600080fd5b611c0d81611dfb565b50565b6000611c5283836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f08565b905092915050565b6000806000841415611c6f5760009150611d20565b8284029050828482811515611c8057fe5b04141515611d1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8091505b5092915050565b6000808284019050838110151515611da7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611df383836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fc9565b905092915050565b6000606954141515611e0c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e4857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808484111583901515611fb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f7d578082015181840152602081019050611f62565b50505050905090810190601f168015611faa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385039050809150509392505050565b6000806000841183901515612079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561203e578082015181840152602081019050612023565b50505050905090810190601f16801561206b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50838581151561208557fe5b049050809150509392505050565b60008060019054906101000a900460ff16806120b357506120b2612393565b5b806120ca57506000809054906101000a900460ff16155b1515612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060698190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff16806122325750612231612393565b5b8061224957506000809054906101000a900460ff16155b15156122e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555083603390805190602001906123409291906123a4565b5082603490805190602001906123579291906123a4565b5081603560006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b600080303b90506000811491505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123e557805160ff1916838001178555612413565b82800160010185558215612413579182015b828111156124125782518255916020019190600101906123f7565b5b5090506124209190612424565b5090565b61244691905b8082111561244257600081600090555060010161242a565b5090565b905600a165627a7a72305820d3683fafaf168d0f50fdede44a062d115ec2872211ca557a276826011cf5260b0029

Deployed Bytecode Sourcemap

4760:10898:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1828:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1828:141:0;;;;;;3020:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3020:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3020:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13932:233;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13932:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7373:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7373:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11043:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11043:123:0;;;;;;;;;;;;;;;;;;;;;;;12803:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12803:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7514:221;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7514:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;3174:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3174:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:676;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7747:676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14538:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14538:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11287:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11287:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1203:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1203:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6989:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6989:36:0;;;;;;;;;;;;;;;;;;;;;;;3095:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3095:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3095:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15143:512;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15143:512:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11672:388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11672:388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8591:1997;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8591:1997:0;;;;;;;;;;;;;;;;;;;;;;;7032:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7032:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12367:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12367:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1828:141;1317:9;:7;:9::i;:::-;1309:18;;;;;;;;1902:1;1882:16;;:21;1874:30;;;;;;;;1913:23;1929:6;;;;;;;;;;;1913:23;;;;;;;;;;;;;;;;;;;;;;1962:1;1943:16;:20;;;;1828:141::o;3020:69::-;3056:6;3078:5;3071:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3020:69;:::o;13932:233::-;14015:4;14078:5;14037:17;:29;14055:10;14037:29;;;;;;;;;;;;;;;:38;14067:7;14037:38;;;;;;;;;;;;;;;:46;;;;14120:7;14099:36;;14108:10;14099:36;;;14129:5;14099:36;;;;;;;;;;;;;;;;;;14153:4;14146:11;;13932:233;;;;:::o;7373:102::-;1317:9;:7;:9::i;:::-;1309:18;;;;;;;;7457:10;7445:9;;:22;;;;;;;;;;;;;;;;;;7373:102;:::o;11043:123::-;11114:7;11146:12;;11139:19;;11043:123;:::o;12803:487::-;12928:4;13047:16;12906:2;6155:3;6141:18;;:2;:18;;;;6133:27;;;;;;;;6193:4;6179:19;;:2;:19;;;;6171:28;;;;;;;;12988:46;13028:5;12988:17;:23;13006:4;12988:23;;;;;;;;;;;;;;;:35;13012:10;12988:35;;;;;;;;;;;;;;;;:39;;:46;;;;:::i;:::-;12950:17;:23;12968:4;12950:23;;;;;;;;;;;;;;;:35;12974:10;12950:35;;;;;;;;;;;;;;;:84;;;;13066:27;13076:16;;13066:5;:9;;:27;;;;:::i;:::-;13047:46;;13125:32;13148:8;13125:12;:18;13138:4;13125:18;;;;;;;;;;;;;;;;:22;;:32;;;;:::i;:::-;13104:12;:18;13117:4;13104:18;;;;;;;;;;;;;;;:53;;;;13187:30;13208:8;13187:12;:16;13200:2;13187:16;;;;;;;;;;;;;;;;:20;;:30;;;;:::i;:::-;13168:12;:16;13181:2;13168:16;;;;;;;;;;;;;;;:49;;;;13248:2;13233:25;;13242:4;13233:25;;;13252:5;13233:25;;;;;;;;;;;;;;;;;;13278:4;13271:11;;12803:487;;;;;;;:::o;7514:221::-;1317:9;:7;:9::i;:::-;1309:18;;;;;;;;7594:27;;;;;;;;;;;7593:28;7585:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7679:3;7655:21;:27;;;;7723:4;7693:27;;:34;;;;;;;;;;;;;;;;;;7514:221;:::o;3174:76::-;3214:5;3235:9;;;;;;;;;;;3228:16;;3174:76;:::o;7747:676::-;7814:7;7823:4;7845:23;7905:18;7934:21;7871:9;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7871:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7871:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7871:23:0;;;;;;;;;;;;;;;;7845:49;;7958:4;7934:28;;7995:21;;7977:15;:39;7973:393;;;8046:89;8133:1;8046:82;8106:21;;8046:55;8095:5;8047:42;8067:21;;8047:15;:19;;:42;;;;:::i;:::-;8046:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;:86;;:89;;;;:::i;:::-;8033:102;;7973:393;;;8181:15;8157:21;;:39;8153:213;;;8226:89;8313:1;8226:82;8286:21;;8226:55;8275:5;8227:42;8253:15;8227:21;;:25;;:42;;;;:::i;:::-;8226:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;:86;;:89;;;;:::i;:::-;8213:102;;8349:5;8330:24;;8153:213;7973:393;8386:10;8398:16;8378:37;;;;7747:676;;;;;:::o;14538:343::-;14636:4;14712:54;14755:10;14712:17;:29;14730:10;14712:29;;;;;;;;;;;;;;;:38;14742:7;14712:38;;;;;;;;;;;;;;;;:42;;:54;;;;:::i;:::-;14658:17;:29;14676:10;14658:29;;;;;;;;;;;;;;;:38;14688:7;14658:38;;;;;;;;;;;;;;;:108;;;;14803:7;14782:69;;14791:10;14782:69;;;14812:17;:29;14830:10;14812:29;;;;;;;;;;;;;;;:38;14842:7;14812:38;;;;;;;;;;;;;;;;14782:69;;;;;;;;;;;;;;;;;;14869:4;14862:11;;14538:343;;;;:::o;11287:159::-;11367:7;11399:39;11421:16;;11399:12;:17;11412:3;11399:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;11392:46;;11287:159;;;:::o;1203:72::-;1240:7;1263:6;;;;;;;;;;;1256:13;;1203:72;:::o;1347:85::-;1386:4;1420:6;;;;;;;;;;;1406:20;;:10;:20;;;1399:27;;1347:85;:::o;6989:36::-;;;;:::o;3095:73::-;3133:6;3155:7;3148:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:73;:::o;15143:512::-;15246:4;15268:16;15287:17;:29;15305:10;15287:29;;;;;;;;;;;;;;;:38;15317:7;15287:38;;;;;;;;;;;;;;;;15268:57;;15359:8;15340:15;:27;;15336:205;;;15425:1;15384:17;:29;15402:10;15384:29;;;;;;;;;;;;;;;:38;15414:7;15384:38;;;;;;;;;;;;;;;:42;;;;15336:205;;;15500:29;15513:15;15500:8;:12;;:29;;;;:::i;:::-;15459:17;:29;15477:10;15459:29;;;;;;;;;;;;;;;:38;15489:7;15459:38;;;;;;;;;;;;;;;:70;;;;15336:205;15577:7;15556:69;;15565:10;15556:69;;;15586:17;:29;15604:10;15586:29;;;;;;;;;;;;;;;:38;15616:7;15586:38;;;;;;;;;;;;;;;;15556:69;;;;;;;;;;;;;;;;;;15643:4;15636:11;;15143:512;;;;;:::o;11672:388::-;11779:4;11801:16;11757:2;6155:3;6141:18;;:2;:18;;;;6133:27;;;;;;;;6193:4;6179:19;;:2;:19;;;;6171:28;;;;;;;;11820:27;11830:16;;11820:5;:9;;:27;;;;:::i;:::-;11801:46;;11885:38;11914:8;11885:12;:24;11898:10;11885:24;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;:::-;11858:12;:24;11871:10;11858:24;;;;;;;;;;;;;;;:65;;;;11953:30;11974:8;11953:12;:16;11966:2;11953:16;;;;;;;;;;;;;;;;:20;;:30;;;;:::i;:::-;11934:12;:16;11947:2;11934:16;;;;;;;;;;;;;;;:49;;;;12020:2;11999:31;;12008:10;11999:31;;;12024:5;11999:31;;;;;;;;;;;;;;;;;;12048:4;12041:11;;11672:388;;;;;;:::o;8591:1997::-;8645:7;8680:23;8740:18;9214:20;8706:9;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8706:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8706:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8706:23:0;;;;;;;;;;;;;;;;8680:49;;8796:21;;8777:15;:40;;8769:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8862:21;;8844:15;:39;8840:354;;;8913:89;9000:1;8913:82;8973:21;;8913:55;8962:5;8914:42;8934:21;;8914:15;:19;;:42;;;;:::i;:::-;8913:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;:86;;:89;;;;:::i;:::-;8900:102;;8840:354;;;9048:15;9024:21;;:39;9020:174;;;9093:89;9180:1;9093:82;9153:21;;9093:55;9142:5;9094:42;9120:15;9094:21;;:25;;:42;;;;:::i;:::-;9093:48;;:55;;;;:::i;:::-;:59;;:82;;;;:::i;:::-;:86;;:89;;;;:::i;:::-;9080:102;;9020:174;8840:354;9260:39;9293:5;9260:28;9277:10;9260:12;;:16;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;9245:54;;9332:21;;9314:15;:39;9310:265;;;9385:30;9402:12;9385;;:16;;:30;;;;:::i;:::-;9370:12;:45;;;;9310:265;;;9533:30;9550:12;9533;;:16;;:30;;;;:::i;:::-;9518:12;:45;;;;9310:265;6804:1;6795:11;9606:10;;9591:12;;:25;9587:83;;;6804:1;6795:11;9648:10;;9633:12;:25;;;;9587:83;9701:28;9716:12;;6263:1;6388:2;:12;6380:5;:20;6319:1;6310:11;6637:38;;;;;;;;6319:1;6310:11;6622:54;9701:14;;:28;;;;:::i;:::-;9682:16;:47;;;;9774:15;9750:21;:39;;;;10520:15;10510:40;10537:12;;10510:40;;;;;;;;;;;;;;;;;;10568:12;;10561:19;;8591:1997;;;;:::o;7032:47::-;;;;;;;;;;;;;:::o;12367:174::-;12467:7;12499:17;:25;12517:6;12499:25;;;;;;;;;;;;;;;:34;12525:7;12499:34;;;;;;;;;;;;;;;;12492:41;;12367:174;;;;:::o;1438:103::-;1317:9;:7;:9::i;:::-;1309:18;;;;;;;;1507:28;1526:8;1507:18;:28::i;:::-;1438:103;:::o;3508:136::-;3566:7;3593:43;3597:1;3600;3593:43;;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3586:50;;3508:136;;;;:::o;3852:250::-;3910:7;3989:9;3939:1;3934;:6;3930:47;;;3964:1;3957:8;;;;3930:47;4005:1;4001;:5;3989:17;;4034:1;4029;4025;:5;;;;;;;;:10;4017:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4093:1;4086:8;;3852:250;;;;;;:::o;3319:181::-;3377:7;3397:9;3413:1;3409;:5;3397:17;;3438:1;3433;:6;;3425:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3491:1;3484:8;;3319:181;;;;;:::o;4110:132::-;4168:7;4195:39;4199:1;4202;4195:39;;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4188:46;;4110:132;;;;:::o;1547:210::-;1637:1;1617:16;;:21;1609:30;;;;;;;;1674:1;1654:22;;:8;:22;;;;1646:31;;;;;;;;1718:8;1689:38;;1710:6;;;;;;;;;;;1689:38;;;;;;;;;;;;1743:8;1734:6;;:17;;;;;;;;;;;;;;;;;;1547:210;:::o;3652:192::-;3738:7;3798:9;3771:1;3766;:6;;3774:12;3758:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3758:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3814:1;3810;:5;3798:17;;3835:1;3828:8;;3652:192;;;;;;:::o;4250:191::-;4336:7;4395:9;4368:1;4364;:5;4371:12;4356:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4356:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4411:1;4407;:5;;;;;;;;4395:17;;4432:1;4425:8;;4250:191;;;;;;:::o;1088:109::-;435:20;328:12;;;;;;;;;;;:31;;;;344:15;:13;:15::i;:::-;328:31;:47;;;;364:11;;;;;;;;;;;363:12;328:47;320:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:12;;;;;;;;;;;435:35;;492:4;477:12;;:19;;;;;;;;;;;;;;;;;;517:4;503:11;;:18;;;;;;;;;;;;;;;;;;1161:6;1152;;:15;;;;;;;;;;;;;;;;;;1190:1;1171:16;:20;;;;555:15;540:12;;:30;;;;;;;;;;;;;;;;;;1088:109;;:::o;2854:160::-;435:20;328:12;;;;;;;;;;;:31;;;;344:15;:13;:15::i;:::-;328:31;:47;;;;364:11;;;;;;;;;;;363:12;328:47;320:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:12;;;;;;;;;;;435:35;;492:4;477:12;;:19;;;;;;;;;;;;;;;;;;517:4;503:11;;:18;;;;;;;;;;;;;;;;;;2954:4;2946:5;:12;;;;;;;;;;;;:::i;:::-;;2975:6;2965:7;:16;;;;;;;;;;;;:::i;:::-;;3000:8;2988:9;;:20;;;;;;;;;;;;;;;;;;555:15;540:12;;:30;;;;;;;;;;;;;;;;;;2854:160;;;;:::o;582:142::-;629:4;642:10;688:7;676:20;670:26;;717:1;711:2;:7;704:14;;582:142;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://d3683fafaf168d0f50fdede44a062d115ec2872211ca557a276826011cf5260b
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.