ETH Price: $3,070.65 (-1.42%)
Gas: 3 Gwei

Token

Third Floor Mutual (3FM)
 

Overview

Max Total Supply

5,740,573.449830085928510357 3FM

Holders

800

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
94.989412727835623691 3FM

Value
$0.00
0x05bf260e17d259bbe2b97fd203ca42250696ca95
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:
ThreeFMutual

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license, Audited

Contract Source Code (Solidity)Audit Report

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

pragma solidity 0.5.16;

contract ThreeFMutual {
    using SafeMath for *;

    //*********
    // STRUCTS
    //*********
    struct Player {
        uint256 id;             // agent id
        bytes32 name;           // agent name
        uint256 ref;            // referral vault
        bool isAgent;           // referral activated
        bool claimed;           // insurance claimed
        uint256 eth;            // eth player has paid
        uint256 shares;         // shares
        uint256 units;          // uints of insurance
        uint256 plyrLastSeen;   // last day player played
        uint256 mask;           // player mask
        uint256 level;          // agent level
        uint256 accumulatedRef; // accumulated referral income
    }


    //***************
    // EXTERNAL DATA
    //***************

    VAT vat = VAT(0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B);
    Underwriter underwriter = Underwriter(0xE58cDe3CbEeCC8d9306f482729084B909Afa2357);
    Agency agency = Agency(0x7Bc360ebD65eFa503FF189A0F81f61f85D310Ec3);
    
    address payable constant private hakka = address(0x83D0D842e6DB3B020f384a2af11bD14787BEC8E7);
    address payable constant private IIP = address(0x9933AD4D38702cdC28C5DB2F421F1F02CF530780);
    uint256 public end;
    bool public ended;


    //******************
    // GLOBAL VARIABLES
    //******************
    mapping(address => mapping(uint256 => uint256)) public unitToExpirePlayer;
    mapping(uint256 => uint256) public unitToExpire; // unit of insurance due at day x

    uint256 public issuedInsurance; // all issued insurance
    uint256 public ethOfShare;      // virtual eth pointer
    uint256 public shares;          // total share
    uint256 public pool;            // eth gonna pay to beneficiary
    uint256 public today;           // today's date
    uint256 public _now;            // current time
    uint256 public mask;            // global mask
    uint256 public agents;          // number of agent

    // player data
    mapping(address => Player) public player;       // player data
    mapping(uint256 => address) public agentxID_;   // return agent address by id
    mapping(bytes32 => address) public agentxName_; // return agent address by name

    // constant parameters
    uint256 constant maxInsurePeriod = 100;
    uint256 constant maxLevel = 10;

    // rate of buying x day insurance
    uint256[101] public rate =
    [0,
    1000000000000000000,
    1990000000000000000,
    2970100000000000000,
    3940399000000000000,
    4900995010000000000,
    5851985059900000000,
    6793465209301000000,
    7725530557207990000,
    8648275251635910100,
    9561792499119550999,
    10466174574128355489,
    11361512828387071934,
    12247897700103201215,
    13125418723102169203,
    13994164535871147511,
    14854222890512436036,
    15705680661607311676,
    16548623854991238559,
    17383137616441326173,
    18209306240276912911,
    19027213177874143782,
    19836941046095402344,
    20638571635634448321,
    21432185919278103838,
    22217864060085322800,
    22995685419484469572,
    23765728565289624876,
    24528071279636728627,
    25282790566840361341,
    26029962661171957728,
    26769663034560238151,
    27501966404214635769,
    28226946740172489411,
    28944677272770764517,
    29655230500043056872,
    30358678195042626303,
    31055091413092200040,
    31744540498961278040,
    32427095093971665260,
    33102824143031948607,
    33771795901601629121,
    34434077942585612830,
    35089737163159756702,
    35738839791528159135,
    36381451393612877544,
    37017636879676748769,
    37647460510879981281,
    38270985905771181468,
    38888276046713469653,
    39499393286246334956,
    40104399353383871606,
    40703355359850032890,
    41296321806251532561,
    41883358588189017235,
    42464525002307127063,
    43039879752284055792,
    43609480954761215234,
    44173386145213603082,
    44731652283761467051,
    45284335760923852380,
    45831492403314613856,
    46373177479281467717,
    46909445704488653040,
    47440351247443766510,
    47965947734969328845,
    48486288257619635557,
    49001425375043439201,
    49511411121293004809,
    50016297010080074761,
    50516134039979274013,
    51010972699579481273,
    51500862972583686460,
    51985854342857849595,
    52465995799429271099,
    52941335841434978388,
    53411922483020628604,
    53877803258190422318,
    54339025225608518095,
    54795634973352432914,
    55247678623618908585,
    55695201837382719499,
    56138249819008892304,
    56576867320818803381,
    57011098647610615347,
    57440987661134509194,
    57866577784523164102,
    58287912006677932461,
    58705032886611153136,
    59117982557745041605,
    59526802732167591189,
    59931534704845915277,
    60332219357797456124,
    60728897164219481563,
    61121608192577286747,
    61510392110651513880,
    61895288189544998741,
    62276335307649548754,
    62653571954573053266,
    63027036235027322733,
    63396765872677049506];

    // threshold of agent upgrade
    uint256[10] public requirement =
    [0,
    73890560989306501,
    200855369231876674,
    545981500331442382,
    1484131591025766010,
    4034287934927351160,
    10966331584284585813,
    29809579870417282259,
    81030839275753838749,
    220264657948067161559];


    //******************
    // EVENT
    //******************
    event UPGRADE (address indexed agent, uint256 indexed level);
    event BUYINSURANCE(address indexed buyer, uint256 indexed start, uint256 unit,  uint256 date);


    //******************
    // MODIFIER
    //******************
    modifier isHuman() {
        require(msg.sender == tx.origin, "sorry humans only");
        _;
    }

    //******************
    // CORE FUNCTIONS
    //******************

    /**
     * @dev Constructor
     * @notice Initialize the time
     */
    constructor() public {
        _now = now;
        today = _now / 1 days;
    }

    /**
     * @dev Ticker
     * @notice It is called everytime when a player interacts with this contract
     * @return true if MakerDAO has been shut down, false otherwise
     */
    function tick()
        internal
        returns(bool)
    {
        if(!ended) {
            if (_now != now) {
                _now = now;
                uint256 _today = _now / 1 days; // the current day as soon as ticker is called

                //check MakerDAO status
                if(vat.live() == 0) {
                    ended = true;
                    end = now;
                }

                // calculate the outdated issuedInsurance
                while (today < _today) {
                    issuedInsurance = issuedInsurance.sub(unitToExpire[today]);
                    unitToExpire[today] = 0;
                    today += 1;
                }
            }
        }
        
        return ended;
    }

    /**
     * @dev Register
     * @notice Register a name by a human player
     */
    function register(string calldata _nameString)
        external
        payable
        isHuman()
    {
        bytes32 _name = agency.register(_nameString);
        address _agent = msg.sender;
        require(msg.value >= 10000000000000000, "insufficient amount");
        require(agentxName_[_name] == address(0), "name registered");

        if(!player[_agent].isAgent){
            agents += 1;
            player[_agent].isAgent = true;
            player[_agent].id = agents;
            player[_agent].level = 1;
            agentxID_[agents] = _agent;
            emit UPGRADE(_agent,player[_agent].level);
        }
        // set name active for the player
        player[_agent].name = _name;
        agentxName_[_name] = _agent;
        sendContract(hakka, msg.value);

    }

    /**
     * @dev Upgrade
     * @notice Upgrade when a player's referral bonus meet the requirement
     */
    function upgrade()
        external
        isHuman()
    {
        address _agent = msg.sender;
        require(player[_agent].isAgent);
        require(player[_agent].level < maxLevel);

        if(player[_agent].accumulatedRef >= requirement[player[_agent].level]) {
            player[_agent].level = (1).add(player[_agent].level);
            emit UPGRADE(_agent,player[_agent].level);
        }
    }

    //using address for referral
    function buy(address payable _agent, uint256 _date)
        isHuman()
        public
        payable
    {
        // ticker
        if(tick()){
            sendHuman(msg.sender, msg.value);
            return;
        }

        // validate agent
        if(!player[_agent].isAgent){
            _agent = address(0);
        }

        buyCore(msg.sender, msg.value, _date, _agent);
    }

    //using ID for referral
    function buy(uint256 _agentId, uint256 _date)
        isHuman()
        public
        payable
    {
        // ticker
        if(tick()){
            sendHuman(msg.sender, msg.value);
            return;
        }

        //query agent
        address payable _agent = address(uint160(agentxID_[_agentId]));

        buyCore(msg.sender, msg.value, _date, _agent);
    }

    //using name for referral
    function buy(bytes32 _agentName, uint256 _date)
        isHuman()
        public
        payable
    {
        // ticker
        if(tick()){
            sendHuman(msg.sender, msg.value);
            return;
        }

        //query agent
        address payable _agent = address(uint160(agentxName_[_agentName]));

        buyCore(msg.sender, msg.value, _date, _agent);
    }

    // contract wallets, sorry insurance only for human
    function buy()
        public
        payable
    {
        // ticker
        if(tick()) {
            if(msg.sender == tx.origin)
                sendHuman(msg.sender, msg.value);
            else
                sendContract(msg.sender, msg.value);
            return;
        }

        buyCore(msg.sender, msg.value, 0, address(0));
    }

    // fallback
    function () external payable {
        buy();
    }

    /**
     * @dev Core part of buying
     */
    function buyCore(address _buyer, uint256 _eth, uint256 _date, address payable _agent) internal {

        updatePlayerUnit(_buyer);
        
        require(_eth >= 1000000000, "pocket lint: not a valid currency");
        require(_eth <= 10000000000000000000000, "no vitalik, no");

        if(_date > maxInsurePeriod){
            _date = maxInsurePeriod;
        }
        uint256 _rate = rate[_date] + 1000000000000000000;
        uint256 ethToBuyShare = _eth.mul(1000000000000000000) / _rate;
        //-- ethToBuyShare is a virtual amount used to represent the eth player paid for buying shares
        //which is usually different from _eth

        // get value of shares and insurances can be bought
        uint256 _share = underwriter.mintShare(ethOfShare, ethToBuyShare);
        uint256 _unit = (_date == 0)? 0: _share;
        uint256 newDate = today + _date - 1;


        // update global data
        ethOfShare = ethOfShare.add(ethToBuyShare);
        shares = shares.add(_share);
        unitToExpire[newDate] = unitToExpire[newDate].add(_unit);
        issuedInsurance = issuedInsurance.add(_unit);

        // update player data
        player[_buyer].eth = player[_buyer].eth.add(_eth);
        player[_buyer].shares = player[_buyer].shares.add(_share);
        player[_buyer].units = player[_buyer].units.add(_unit);
        unitToExpirePlayer[_buyer][newDate] = unitToExpirePlayer[_buyer][newDate].add(_unit);

        distributeEx(_eth, _agent);
        distributeIn(_buyer, _eth, _share);
        emit BUYINSURANCE(_buyer, today, _unit, _date);
        emit Transfer(address(0), _buyer, _share);
    }

    /**
     * @dev Update player's units of insurance
     */
    function updatePlayerUnit(address _player) internal {
        uint256 _today = player[_player].plyrLastSeen;
        uint256 expiredUnit = 0;
        if(_today != 0){
            while(_today < today){
                expiredUnit = expiredUnit.add(unitToExpirePlayer[_player][_today]);
                unitToExpirePlayer[_player][_today] = 0;
                _today += 1;
            }
            player[_player].units = player[_player].units.sub(expiredUnit);
        }
        player[_player].plyrLastSeen = today;
    }

    /**
     * @dev pay external stakeholder
     */
    function distributeEx(uint256 _eth, address payable _agent) internal {
        // 20% to external
        uint256 ex = _eth / 5 ;

        // 10% to IIP
        uint256 _iip = _eth / 10;

        if(player[_agent].isAgent){
            uint256 refRate = player[_agent].level.add(6);
            uint256 _ref = _eth.mul(refRate) / 100;
            player[_agent].ref = player[_agent].ref.add(_ref);
            player[_agent].accumulatedRef = player[_agent].accumulatedRef.add(_ref);
            ex = ex.sub(_ref);
        }

        sendContract(IIP, _iip);
        sendContract(hakka, ex);
    }

    /**
     * @dev Distribute to internal
     */
    function distributeIn(address _buyer, uint256 _eth, uint256 _shares) internal {
        // 15% to share holder
        uint256 _div = _eth.mul(3) / 20;

        // 55% to insurance pool
        uint256 _pool = _eth.mul(55) / 100;

        // distribute dividend share and collect dust
        uint256 _dust = updateMasks(_buyer, _div, _shares);

        // add eth to pool
        pool = pool.add(_dust).add(_pool);

        
    }

    function updateMasks(address  _player, uint256 _div, uint256 _shares)
        private
        returns(uint256)
    {
        // calculate profit per share & global mask based on this buy: (dust goes to pool)
        uint256 _ppt = _div.mul(1000000000000000000) / shares;
        mask = mask.add(_ppt);

        // calculate player earning from their own buy (only based on the shares
        // they just bought). & update player earnings mask
        uint256 _pearn = (_ppt.mul(_shares)) / 1000000000000000000;
        player[_player].mask = (((mask.mul(_shares)) / 1000000000000000000).sub(_pearn)).add(player[_player].mask);

        // calculate & return dust
        return(_div.sub( _ppt.mul(shares) / 1000000000000000000));
    }

    /**
     * @dev Submit a claim from a beneficiary
     */
    function claim()
        isHuman()
        public
    {
        require(tick(), "not yet"); // MakerDAO shutdown!
        address payable beneficiary = msg.sender;
        require(!player[beneficiary].claimed, "already claimed");
        updatePlayerUnit(beneficiary);
        uint256 amount = pool.mul(player[beneficiary].units) / issuedInsurance;
        player[beneficiary].claimed = true;
        sendHuman(beneficiary, amount);
    }

    /**
     * @dev Withdraw dividends and ref
     */
    function withdraw()
        public
    {
        // get player earnings
        uint256 _eth;
        _eth = withdrawEarnings(msg.sender);

        // pay
        if (_eth > 0) {
            if(msg.sender == tx.origin)
                sendHuman(msg.sender, _eth);
            else
                sendContract(msg.sender, _eth);
        }
    }

    function withdrawEarnings(address _player)
        private
        returns(uint256)
    {
        uint256 _div = calcUnMaskedEarnings(_player); //dividend
        uint256 _ref = player[_player].ref; // referral 
        uint256 _earnings = _div.add(_ref);

        if (_earnings > 0) {
            player[_player].ref = 0;
            player[_player].mask = _div.add(player[_player].mask);
        }

        return(_earnings);
    }

    function calcUnMaskedEarnings(address _player)
        private
        view
        returns(uint256)
    {
        return (mask.mul(player[_player].shares) / 1000000000000000000).sub(player[_player].mask);
    }

    //******************
    // GETTERS
    //******************

    /**
     * @dev Return the price buyer will pay for next 1 individual share.
     * @return Price for next share bought (in wei format)
     */
    function getBuyPrice() external view returns(uint256) {
        return underwriter.burnShare(shares.add(1000000000000000000), 1000000000000000000);
    }

    /**
     * @dev Get the units of insurance of player
     * @return Amount of existing units of insurance
     */
    function getCurrentUnit(address _player)
        external
        view
        returns(uint256)
    {
        uint256 _unit = player[_player].units;
        uint256 _today = player[_player].plyrLastSeen;
        uint256 expiredUnit = 0;
        if(_today != 0) {
            while(_today < today){
                expiredUnit = expiredUnit.add(unitToExpirePlayer[_player][_today]);
                _today += 1;
            }

        }
        return _unit == 0 ? 0 : _unit.sub(expiredUnit);
    }

    /**
     * @dev Get the list of units of insurace going to expire of a player
     * @return List of units of insurance going to expire from a player
     */
    function getExpiringUnitListPlayer(address _player)
        external
        view
        returns(uint256[maxInsurePeriod] memory expiringUnitList)
    {
        for(uint256 i=0; i<maxInsurePeriod; i++) {
            expiringUnitList[i] = unitToExpirePlayer[_player][today+i];
        }
        return expiringUnitList;
    }

    /**
     * @dev Get the list of units of insurace going to expire
     * @return List of units of insurance going to expire
     */
    function getExpiringUnitList()
        external
        view
        returns(uint256[maxInsurePeriod] memory expiringUnitList)
    {
        for(uint256 i=0; i<maxInsurePeriod; i++){
            expiringUnitList[i] = unitToExpire[today+i];
        }
        return expiringUnitList;
    }

    //******************
    // ERC20
    //******************
    string  public constant name     = "Third Floor Mutual";
    string  public constant symbol   = "3FM";
    uint8   public constant decimals = 18;

    function totalSupply() external view returns(uint256) {
        if(ended) return 0;
        return shares;
    }

    function balanceOf(address who) external view returns(uint256) {
        if(ended) return 0;
        return player[who].shares;
    }

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

    //******************
    // send eth
    //******************

    function sendHuman(address to, uint256 amount) internal returns(bool success) {
        address payable recipient = address(uint160(to));
        (success, ) = recipient.call.value(amount)("");
    }

    function sendContract(address to, uint256 amount) internal returns(bool success) {
        address payable recipient = address(uint160(to));
        (new SafeSend).value(amount)(recipient);
        return true;
    }

}

contract VAT {
    function live() external returns(uint256);
}

contract SafeSend {
    constructor(address payable to) public payable {
        selfdestruct(to);
    }
}

contract Underwriter {
    function mintShare(uint256 _curEth, uint256 _newEth) external pure returns (uint256);
    function burnShare(uint256 _curShares, uint256 _sellShares) external pure returns (uint256);
    function shares(uint256 _eth) public pure returns(uint256);
    function eth(uint256 _shares) public pure returns(uint256);
}


contract Agency {
    function register(string memory _input) public pure returns(bytes32);
}

library SafeMath {

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

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

    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c)
    {
        c = a + b;
        require(c >= a);
    }

    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y)
    {
        uint256 z = add(x >> 1, 1);
        y = x;
        while (z < y)
        {
            y = z;
            z = ((add((x / z), z)) / 2);
        }
    }

    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }

    function pwr(uint256 x, uint256 y) internal pure returns(uint256 z) {
        z = 1;
        while(y != 0){
            if(y % 2 == 1)
                z = mul(z,x);
            x = sq(x);
            y = y / 2;
        }
        return z;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"start","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"}],"name":"BUYINSURANCE","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agent","type":"address"},{"indexed":true,"internalType":"uint256","name":"level","type":"uint256"}],"name":"UPGRADE","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"_now","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"agents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"agentxID_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"agentxName_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_agentName","type":"bytes32"},{"internalType":"uint256","name":"_date","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_agent","type":"address"},{"internalType":"uint256","name":"_date","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_agentId","type":"uint256"},{"internalType":"uint256","name":"_date","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethOfShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"getCurrentUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExpiringUnitList","outputs":[{"internalType":"uint256[100]","name":"expiringUnitList","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"getExpiringUnitListPlayer","outputs":[{"internalType":"uint256[100]","name":"expiringUnitList","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuedInsurance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mask","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"player","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"bool","name":"isAgent","type":"bool"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"eth","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"units","type":"uint256"},{"internalType":"uint256","name":"plyrLastSeen","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"accumulatedRef","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_nameString","type":"string"}],"name":"register","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requirement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"today","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"unitToExpire","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"unitToExpirePlayer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

600080546001600160a01b03199081167335d1b3f3d7966a1dfe207aa4514c12a259a0492b17825560018054821673e58cde3cbeecc8d9306f482729084b909afa235717905560028054909116737bc360ebd65efa503ff189a0f81f61f85d310ec3179055610d206040526080908152670de0b6b3a764000060a052671b9de674df07000060c052672937ea36b763400060e0526736af1c036c4df00061010052674403d4feb9031400610120526751366d68263b870061014052675e473c9d525c5f4061016052676b36991c33cecef061018052677804d885558f75d46101a0526784b24f9e0e03f2176101c05267913f5252b02558a16101e052679dac33b8b70e17be6102005267a9f94610ebf9a1bf6102205267b626dac986c418736102405267c235428048f80df76102605267ce24cd0493784b446102805267d9f5c95976d3693c6102a05267e5a885b7be4ee59f6102c05267f13d4f8ff5b73a5d6102e05267fcb4738c6a025b0f610300526801080e3d9324d1da26610320526801134af8c7e2e1d5686103405268011e6aef8e0571a7c1610360526801296e6b8a7eb33d1e6103805268013455b5a5b94dc4306103a05268013f21160d7b0059446103c052680149d0d436c271252c6103e0526801546536dfa0354b336104005268015ede84110b1de17d610420526801693d0120afd60fe06104405268017380f2b2bbde52476104605268017daa9cbba3f0bcf961048052680187ba4281e5da02c36104a052680191b0269fc5d2dee56104c05268019b8c8b05076566e86104e0526801a54fb0f8a1e9aaff610500526801aef9d91a70a4ee68610520526801b88b4364de96a458610540526801c2042f2e8dfe416c610560526801cb64db2bfba4d53f610580526801d4ad85711df543c16105a0526801ddde6b72ffedda1e6105c0526801e6f7ca0957f5df9e6105e0526801eff9dd701aa1a79f610600526801f8e4e149096f8ee861062052680201b9109d3d8833e16106405268020a76a5deae8c1ee1610660526802131ddae9b578f59c6106805268021baee9068bb03ad56106a0526802242a08eac62981ec6106c05268022c8f72baccd9e4766106e052680234df5e0b4e5a6efa6107005268023d1a01e2afd72111610720526802453f94ba795004936107405268024d504c80be35c717610760526802554c5e99826b28f06107805268025d33ffe01bb47d026107a0526802650764a88f9e5d0a6107c05268026cc6c0c0ede49eab6107e052680274724772a7627e5c6108005268027c0a2b83e194de60610820526802838e9f38c6b761456108405268028affd454d28510f0610860526802925dfc1c1ba52cee61088052680299a9475499cca4cd6108a0526802a0e1e647689cad656108c0526802a80808c20746ca616108e0526802af1bde1794fe9009610900526802b61d95220a414c09610920526802bd0d5c436efbaf1d610940526802c3eb61670d957cb9610960526802cab7d202a2eb313c610980526802d172db178b3d7afb6109a0526802d81ca933ec1e4e3b6109c0526802deb56873db6348546109e0526802e53d44828325027c610a00526802ebb4689b42d2e12e610a20526802f21aff8acd62d9cf610a40526802f87133b044a49512610a60526802feb72efe51bf41a9610a8052680304ed1afc3ae1580b610aa05268030b1320c6f6297d90610ac05268031129691239cfa2b5610ae052680317301c2989956633610b005268031d2761f14184b48a610b20526803230f61e79e0389c6610b4052680328e84325c143a9ad610b605268032eb22c60b61510f0610b80526803346d43ea7021d0c5610ba05268033a19afb2c999f515610bc05268033fb795487e56048d610be0526803454719da247698fc610c005268034ac8623722877ddb610c20526803503b92d0a32cb25b610c4052680355a0cfba865f9c18610c605268035af83cac5042a755610c805268036041fd02159181d2610ca0526803657e33bd65b40d52610cc05268036aad0386327a176d610ce05268036fce8eabb585d4a2610d0052620005e0906012906065620006a9565b506040805161014081018252600081526701068312e0059e8560208201526702c994e4e64bc24291810191909152670793b7482530c0ce6060820152671498b1d19b06ae7a60808201526737fcab8092fd2d7860a08201526798303c794a6def5560c082015268019db0e6f447db64d360e0820152680464875f006314189d610100820152680bf0c943643f76e5d76101208201526200068590607790600a620006f7565b503480156200069357600080fd5b5042600c819055620151809004600b5562000752565b8260658101928215620006e5579160200282015b82811115620006e557825182906001600160481b0316905591602001919060010190620006bd565b50620006f392915062000732565b5090565b82600a8101928215620006e55791602002820182811115620006e557825182906001600160481b0316905591602001919060010190620006bd565b6200074f91905b80821115620006f3576000815560010162000739565b90565b611e0e80620007626000396000f3fe6080604052600436106101f95760003560e01c8063585166611161010d578063b74e452b116100a0578063d93be4331161006f578063d93be433146106c2578063e7ee6ad6146106ec578063efbe1c1c14610716578063f0da93441461072b578063f2c298be14610740576101f9565b8063b74e452b14610649578063cce7ec131461065e578063d55ec6971461068a578063d6febde81461069f576101f9565b806395d89b41116100dc57806395d89b41146105f5578063a6f2ae3a146101f9578063aaaadb581461060a578063b3bb8cd414610634576101f9565b8063585166611461055057806370a0823114610565578063729fc61314610598578063757b0884146105cb576101f9565b806318160ddd116101905780633ef7c6871161015f5780633ef7c68714610413578063402e912f14610461578063489b3fee146104765780634c54e1b5146104a95780634e71d92d1461053b576101f9565b806318160ddd14610385578063274806e01461039a578063313ce567146103d35780633ccfd60b146103fe576101f9565b8063116134ee116101cc578063116134ee146102ec57806312fa6feb1461030157806316f0115b1461032a57806317604f711461033f576101f9565b8063018a25e81461020357806303314efa1461022a57806306fdde031461023f5780630ddeb632146102c9575b6102016107b0565b005b34801561020f57600080fd5b506102186107f5565b60408051918252519081900360200190f35b34801561023657600080fd5b5061021861089c565b34801561024b57600080fd5b506102546108a2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610201600480360360408110156102df57600080fd5b50803590602001356108d0565b3480156102f857600080fd5b5061021861095f565b34801561030d57600080fd5b50610316610965565b604080519115158252519081900360200190f35b34801561033657600080fd5b5061021861096e565b34801561034b57600080fd5b506103696004803603602081101561036257600080fd5b5035610974565b604080516001600160a01b039092168252519081900360200190f35b34801561039157600080fd5b5061021861098f565b3480156103a657600080fd5b50610218600480360360408110156103bd57600080fd5b506001600160a01b0381351690602001356109ac565b3480156103df57600080fd5b506103e86109c9565b6040805160ff9092168252519081900360200190f35b34801561040a57600080fd5b506102016109ce565b34801561041f57600080fd5b50610428610a06565b6040518082610c8080838360005b8381101561044e578181015183820152602001610436565b5050505090500191505060405180910390f35b34801561046d57600080fd5b50610218610a4b565b34801561048257600080fd5b506104286004803603602081101561049957600080fd5b50356001600160a01b0316610a51565b3480156104b557600080fd5b506104dc600480360360208110156104cc57600080fd5b50356001600160a01b0316610aad565b604080519c8d5260208d019b909b528b8b019990995296151560608b015294151560808a015260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561054757600080fd5b50610201610b07565b34801561055c57600080fd5b50610218610c6a565b34801561057157600080fd5b506102186004803603602081101561058857600080fd5b50356001600160a01b0316610c70565b3480156105a457600080fd5b50610218600480360360208110156105bb57600080fd5b50356001600160a01b0316610ca5565b3480156105d757600080fd5b50610218600480360360208110156105ee57600080fd5b5035610d43565b34801561060157600080fd5b50610254610d57565b34801561061657600080fd5b506102186004803603602081101561062d57600080fd5b5035610d76565b34801561064057600080fd5b50610218610d88565b34801561065557600080fd5b50610218610d8e565b6102016004803603604081101561067457600080fd5b506001600160a01b038135169060200135610d94565b34801561069657600080fd5b50610201610e27565b610201600480360360408110156106b557600080fd5b5080359060200135610f77565b3480156106ce57600080fd5b50610369600480360360208110156106e557600080fd5b5035610ffa565b3480156106f857600080fd5b506102186004803603602081101561070f57600080fd5b5035611015565b34801561072257600080fd5b50610218611022565b34801561073757600080fd5b50610218611028565b6102016004803603602081101561075657600080fd5b81019060208101813564010000000081111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460018302840111640100000000831117156107a557600080fd5b50909250905061102e565b6107b86112d4565b156107e657333214156107d5576107cf33346113e8565b506107e1565b6107df3334611445565b505b6107f3565b6107f33334600080611494565b565b6001546009546000916001600160a01b031690636deba2289061082690670de0b6b3a764000063ffffffff61183d16565b670de0b6b3a76400006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561086a57600080fd5b505afa15801561087e573d6000803e3d6000fd5b505050506040513d602081101561089457600080fd5b505190505b90565b60095481565b60405180604001604052806012815260200171151a1a5c9908119b1bdbdc88135d5d1d585b60721b81525081565b333214610918576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6109206112d4565b156109355761092f33346113e8565b5061095b565b6000828152601160205260409020546001600160a01b031661095933348484611494565b505b5050565b600d5481565b60045460ff1681565b600a5481565b6011602052600090815260409020546001600160a01b031681565b60045460009060ff16156109a557506000610899565b5060095490565b600560209081526000928352604080842090915290825290205481565b601281565b60006109d93361184d565b90508015610a0357333214156109f9576109f333826113e8565b50610a03565b61095b3382611445565b50565b610a0e611d5b565b60005b6064811015610a4757600b548101600090815260066020526040902054828260648110610a3a57fe5b6020020152600101610a11565b5090565b60075481565b610a59611d5b565b60005b6064811015610aa6576001600160a01b0383166000908152600560209081526040808320600b5485018452909152902054828260648110610a9957fe5b6020020152600101610a5c565b505b919050565b600f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a015498999798969760ff8088169861010090980416968c565b333214610b4f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610b576112d4565b610b92576040805162461bcd60e51b81526020600482015260076024820152661b9bdd081e595d60ca1b604482015290519081900360640190fd5b336000818152600f6020526040902060030154610100900460ff1615610bf1576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610bfa816118ea565b6007546001600160a01b0382166000908152600f6020526040812060060154600a54919291610c2e9163ffffffff6119eb16565b81610c3557fe5b6001600160a01b0384166000908152600f60205260409020600301805461ff00191661010017905504905061095982826113e8565b600e5481565b60045460009060ff1615610c8657506000610aa8565b506001600160a01b03166000908152600f602052604090206005015490565b6001600160a01b0381166000908152600f602052604081206006810154600790910154828115610d1c575b600b54821015610d1c576001600160a01b0385166000908152600560209081526040808320858452909152902054610d0f90829063ffffffff61183d16565b9050600182019150610cd0565b8215610d3757610d32838263ffffffff611a1316565b610d3a565b60005b95945050505050565b607781600a8110610d5057fe5b0154905081565b6040518060400160405280600381526020016233464d60e81b81525081565b60066020526000908152604090205481565b600c5481565b600b5481565b333214610ddc576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610de46112d4565b15610df35761092f33346113e8565b6001600160a01b0382166000908152600f602052604090206003015460ff16610e1b57600091505b61095b33348385611494565b333214610e6f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b336000818152600f602052604090206003015460ff16610e8e57600080fd5b6001600160a01b0381166000908152600f6020526040902060090154600a11610eb657600080fd5b6001600160a01b0381166000908152600f6020526040902060090154607790600a8110610edf57fe5b01546001600160a01b0382166000908152600f60205260409020600a015410610a03576001600160a01b0381166000908152600f6020526040902060090154610f309060019063ffffffff61183d16565b6001600160a01b0382166000818152600f6020526040808220600901849055517f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd43729190a350565b333214610fbf576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610fc76112d4565b15610fd65761092f33346113e8565b6000828152601060205260409020546001600160a01b031661095933348484611494565b6010602052600090815260409020546001600160a01b031681565b60128160658110610d5057fe5b60035481565b60085481565b333214611076576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6002546040516379614c5f60e11b8152602060048201908152602482018490526000926001600160a01b03169163f2c298be9186918691908190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156110ec57600080fd5b505afa158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b5051905033662386f26fc1000034101561116d576040805162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6000828152601160205260409020546001600160a01b0316156111c9576040805162461bcd60e51b815260206004820152600f60248201526e1b985b59481c9959da5cdd195c9959608a1b604482015290519081900360640190fd5b6001600160a01b0381166000908152600f602052604090206003015460ff1661127357600e8054600190810182556001600160a01b0383166000818152600f6020818152604080842060038101805460ff19168817905587548155600901958655955483526010815285832080546001600160a01b03191685179055838352529154925190917f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd437291a35b6001600160a01b0381166000818152600f602090815260408083206001018690558583526011909152902080546001600160a01b03191690911790556112cd7383d0d842e6db3b020f384a2af11bd14787bec8e734611445565b5050505050565b60045460009060ff166113de5742600c54146113de5742600c81905560009062015180900490506000809054906101000a90046001600160a01b03166001600160a01b031663957aa58c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561134a57600080fd5b505af115801561135e573d6000803e3d6000fd5b505050506040513d602081101561137457600080fd5b505161138c576004805460ff19166001179055426003555b80600b5410156113dc57600b546000908152600660205260409020546007546113ba9163ffffffff611a1316565b600755600b80546000908152600660205260408120558054600101905561138c565b505b5060045460ff1690565b60405160009083906001600160a01b0382169084908481818185875af1925050503d8060008114611435576040519150601f19603f3d011682016040523d82523d6000602084013e61143a565b606091505b509095945050505050565b600080839050828160405161145990611d7a565b6001600160a01b039091168152604051908190036020019082f080158015611485573d6000803e3d6000fd5b50600193505050505b92915050565b61149d846118ea565b633b9aca008310156114e05760405162461bcd60e51b8152600401808060200182810382526021815260200180611db96021913960400191505060405180910390fd5b69021e19e0c9bab2400000831115611530576040805162461bcd60e51b815260206004820152600e60248201526d6e6f20766974616c696b2c206e6f60901b604482015290519081900360640190fd5b606482111561153e57606491505b60006012836065811061154d57fe5b0154670de0b6b3a7640000019050600081611579670de0b6b3a7640000876119eb90919063ffffffff16565b8161158057fe5b0490506000600160009054906101000a90046001600160a01b03166001600160a01b03166310a76c2e600854846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d602081101561161257600080fd5b50519050600085156116245781611627565b60005b600b5460085491925087016000190190611641908561183d565b600855600954611657908463ffffffff61183d16565b600955600081815260066020526040902054611679908363ffffffff61183d16565b60008281526006602052604090205560075461169b908363ffffffff61183d16565b6007556001600160a01b0389166000908152600f60205260409020600401546116ca908963ffffffff61183d16565b6001600160a01b038a166000908152600f602052604090206004810191909155600501546116fe908463ffffffff61183d16565b6001600160a01b038a166000908152600f60205260409020600581019190915560060154611732908363ffffffff61183d16565b6001600160a01b038a166000908152600f60209081526040808320600601939093556005815282822084835290522054611772908363ffffffff61183d16565b6001600160a01b038a1660009081526005602090815260408083208584529091529020556117a08887611a28565b6117ab898985611b73565b600b5460408051848152602081018a905281516001600160a01b038d16927f4b9622a7ffcb20551847f4dd71b5b98c4267e10d7d338a6c7fb7b26d45d854e0928290030190a36040805184815290516001600160a01b038b16916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050505050505050565b8181018281101561148e57600080fd5b60008061185983611bf0565b6001600160a01b0384166000908152600f6020526040812060020154919250611888838363ffffffff61183d16565b905080156118e2576001600160a01b0385166000908152600f602052604081206002810191909155600801546118c590849063ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600801555b949350505050565b6001600160a01b0381166000908152600f60205260408120600701549081156119c7575b600b5482101561197e576001600160a01b038316600090815260056020908152604080832085845290915290205461194d90829063ffffffff61183d16565b6001600160a01b0384166000908152600560209081526040808320868452909152812055600190920191905061190e565b6001600160a01b0383166000908152600f60205260409020600601546119aa908263ffffffff611a1316565b6001600160a01b0384166000908152600f60205260409020600601555b5050600b546001600160a01b039091166000908152600f6020526040902060070155565b6000826119fa5750600061148e565b5081810281838281611a0857fe5b041461148e57600080fd5b600082821115611a2257600080fd5b50900390565b6001600160a01b0381166000908152600f60205260409020600301546005830490600a84049060ff1615611b36576001600160a01b0383166000908152600f6020526040812060090154611a8390600663ffffffff61183d16565b905060006064611a99878463ffffffff6119eb16565b81611aa057fe5b6001600160a01b0387166000908152600f60205260409020600201549190049150611ad1908263ffffffff61183d16565b6001600160a01b0386166000908152600f602052604090206002810191909155600a0154611b05908263ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600a0155611b31848263ffffffff611a1316565b935050505b611b54739933ad4d38702cdc28c5db2f421f1f02cf53078082611445565b506112cd7383d0d842e6db3b020f384a2af11bd14787bec8e783611445565b60006014611b8884600363ffffffff6119eb16565b81611b8f57fe5b04905060006064611ba785603763ffffffff6119eb16565b81611bae57fe5b0490506000611bbe868486611c48565b9050611be582611bd983600a5461183d90919063ffffffff16565b9063ffffffff61183d16565b600a55505050505050565b6001600160a01b0381166000908152600f602052604081206008810154600590910154600d5461148e9291670de0b6b3a764000091611c349163ffffffff6119eb16565b81611c3b57fe5b049063ffffffff611a1316565b6009546000908190611c6885670de0b6b3a764000063ffffffff6119eb16565b81611c6f57fe5b049050611c8781600d5461183d90919063ffffffff16565b600d556000670de0b6b3a7640000611ca5838663ffffffff6119eb16565b81611cac57fe5b049050611cfd600f6000886001600160a01b03166001600160a01b0316815260200190815260200160002060080154611bd983670de0b6b3a7640000611c3489600d546119eb90919063ffffffff16565b6001600160a01b0387166000908152600f6020526040902060080155600954611d5190670de0b6b3a764000090611d3b90859063ffffffff6119eb16565b81611d4257fe5b8791900463ffffffff611a1316565b9695505050505050565b60405180610c8001604052806064906020820280388339509192915050565b603280611d878339019056fe60806040526040516032380380603283398181016040526020811015602357600080fd5b50516001600160a01b038116fffe706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6379a265627a7a7231582078f7dc0663f1419e97d7fc0c07346c894c816feeb9b5dae00925b35d680d542464736f6c63430005100032

Deployed Bytecode

0x6080604052600436106101f95760003560e01c8063585166611161010d578063b74e452b116100a0578063d93be4331161006f578063d93be433146106c2578063e7ee6ad6146106ec578063efbe1c1c14610716578063f0da93441461072b578063f2c298be14610740576101f9565b8063b74e452b14610649578063cce7ec131461065e578063d55ec6971461068a578063d6febde81461069f576101f9565b806395d89b41116100dc57806395d89b41146105f5578063a6f2ae3a146101f9578063aaaadb581461060a578063b3bb8cd414610634576101f9565b8063585166611461055057806370a0823114610565578063729fc61314610598578063757b0884146105cb576101f9565b806318160ddd116101905780633ef7c6871161015f5780633ef7c68714610413578063402e912f14610461578063489b3fee146104765780634c54e1b5146104a95780634e71d92d1461053b576101f9565b806318160ddd14610385578063274806e01461039a578063313ce567146103d35780633ccfd60b146103fe576101f9565b8063116134ee116101cc578063116134ee146102ec57806312fa6feb1461030157806316f0115b1461032a57806317604f711461033f576101f9565b8063018a25e81461020357806303314efa1461022a57806306fdde031461023f5780630ddeb632146102c9575b6102016107b0565b005b34801561020f57600080fd5b506102186107f5565b60408051918252519081900360200190f35b34801561023657600080fd5b5061021861089c565b34801561024b57600080fd5b506102546108a2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610201600480360360408110156102df57600080fd5b50803590602001356108d0565b3480156102f857600080fd5b5061021861095f565b34801561030d57600080fd5b50610316610965565b604080519115158252519081900360200190f35b34801561033657600080fd5b5061021861096e565b34801561034b57600080fd5b506103696004803603602081101561036257600080fd5b5035610974565b604080516001600160a01b039092168252519081900360200190f35b34801561039157600080fd5b5061021861098f565b3480156103a657600080fd5b50610218600480360360408110156103bd57600080fd5b506001600160a01b0381351690602001356109ac565b3480156103df57600080fd5b506103e86109c9565b6040805160ff9092168252519081900360200190f35b34801561040a57600080fd5b506102016109ce565b34801561041f57600080fd5b50610428610a06565b6040518082610c8080838360005b8381101561044e578181015183820152602001610436565b5050505090500191505060405180910390f35b34801561046d57600080fd5b50610218610a4b565b34801561048257600080fd5b506104286004803603602081101561049957600080fd5b50356001600160a01b0316610a51565b3480156104b557600080fd5b506104dc600480360360208110156104cc57600080fd5b50356001600160a01b0316610aad565b604080519c8d5260208d019b909b528b8b019990995296151560608b015294151560808a015260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561054757600080fd5b50610201610b07565b34801561055c57600080fd5b50610218610c6a565b34801561057157600080fd5b506102186004803603602081101561058857600080fd5b50356001600160a01b0316610c70565b3480156105a457600080fd5b50610218600480360360208110156105bb57600080fd5b50356001600160a01b0316610ca5565b3480156105d757600080fd5b50610218600480360360208110156105ee57600080fd5b5035610d43565b34801561060157600080fd5b50610254610d57565b34801561061657600080fd5b506102186004803603602081101561062d57600080fd5b5035610d76565b34801561064057600080fd5b50610218610d88565b34801561065557600080fd5b50610218610d8e565b6102016004803603604081101561067457600080fd5b506001600160a01b038135169060200135610d94565b34801561069657600080fd5b50610201610e27565b610201600480360360408110156106b557600080fd5b5080359060200135610f77565b3480156106ce57600080fd5b50610369600480360360208110156106e557600080fd5b5035610ffa565b3480156106f857600080fd5b506102186004803603602081101561070f57600080fd5b5035611015565b34801561072257600080fd5b50610218611022565b34801561073757600080fd5b50610218611028565b6102016004803603602081101561075657600080fd5b81019060208101813564010000000081111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460018302840111640100000000831117156107a557600080fd5b50909250905061102e565b6107b86112d4565b156107e657333214156107d5576107cf33346113e8565b506107e1565b6107df3334611445565b505b6107f3565b6107f33334600080611494565b565b6001546009546000916001600160a01b031690636deba2289061082690670de0b6b3a764000063ffffffff61183d16565b670de0b6b3a76400006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561086a57600080fd5b505afa15801561087e573d6000803e3d6000fd5b505050506040513d602081101561089457600080fd5b505190505b90565b60095481565b60405180604001604052806012815260200171151a1a5c9908119b1bdbdc88135d5d1d585b60721b81525081565b333214610918576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6109206112d4565b156109355761092f33346113e8565b5061095b565b6000828152601160205260409020546001600160a01b031661095933348484611494565b505b5050565b600d5481565b60045460ff1681565b600a5481565b6011602052600090815260409020546001600160a01b031681565b60045460009060ff16156109a557506000610899565b5060095490565b600560209081526000928352604080842090915290825290205481565b601281565b60006109d93361184d565b90508015610a0357333214156109f9576109f333826113e8565b50610a03565b61095b3382611445565b50565b610a0e611d5b565b60005b6064811015610a4757600b548101600090815260066020526040902054828260648110610a3a57fe5b6020020152600101610a11565b5090565b60075481565b610a59611d5b565b60005b6064811015610aa6576001600160a01b0383166000908152600560209081526040808320600b5485018452909152902054828260648110610a9957fe5b6020020152600101610a5c565b505b919050565b600f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a015498999798969760ff8088169861010090980416968c565b333214610b4f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610b576112d4565b610b92576040805162461bcd60e51b81526020600482015260076024820152661b9bdd081e595d60ca1b604482015290519081900360640190fd5b336000818152600f6020526040902060030154610100900460ff1615610bf1576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610bfa816118ea565b6007546001600160a01b0382166000908152600f6020526040812060060154600a54919291610c2e9163ffffffff6119eb16565b81610c3557fe5b6001600160a01b0384166000908152600f60205260409020600301805461ff00191661010017905504905061095982826113e8565b600e5481565b60045460009060ff1615610c8657506000610aa8565b506001600160a01b03166000908152600f602052604090206005015490565b6001600160a01b0381166000908152600f602052604081206006810154600790910154828115610d1c575b600b54821015610d1c576001600160a01b0385166000908152600560209081526040808320858452909152902054610d0f90829063ffffffff61183d16565b9050600182019150610cd0565b8215610d3757610d32838263ffffffff611a1316565b610d3a565b60005b95945050505050565b607781600a8110610d5057fe5b0154905081565b6040518060400160405280600381526020016233464d60e81b81525081565b60066020526000908152604090205481565b600c5481565b600b5481565b333214610ddc576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610de46112d4565b15610df35761092f33346113e8565b6001600160a01b0382166000908152600f602052604090206003015460ff16610e1b57600091505b61095b33348385611494565b333214610e6f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b336000818152600f602052604090206003015460ff16610e8e57600080fd5b6001600160a01b0381166000908152600f6020526040902060090154600a11610eb657600080fd5b6001600160a01b0381166000908152600f6020526040902060090154607790600a8110610edf57fe5b01546001600160a01b0382166000908152600f60205260409020600a015410610a03576001600160a01b0381166000908152600f6020526040902060090154610f309060019063ffffffff61183d16565b6001600160a01b0382166000818152600f6020526040808220600901849055517f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd43729190a350565b333214610fbf576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610fc76112d4565b15610fd65761092f33346113e8565b6000828152601060205260409020546001600160a01b031661095933348484611494565b6010602052600090815260409020546001600160a01b031681565b60128160658110610d5057fe5b60035481565b60085481565b333214611076576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6002546040516379614c5f60e11b8152602060048201908152602482018490526000926001600160a01b03169163f2c298be9186918691908190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156110ec57600080fd5b505afa158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b5051905033662386f26fc1000034101561116d576040805162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6000828152601160205260409020546001600160a01b0316156111c9576040805162461bcd60e51b815260206004820152600f60248201526e1b985b59481c9959da5cdd195c9959608a1b604482015290519081900360640190fd5b6001600160a01b0381166000908152600f602052604090206003015460ff1661127357600e8054600190810182556001600160a01b0383166000818152600f6020818152604080842060038101805460ff19168817905587548155600901958655955483526010815285832080546001600160a01b03191685179055838352529154925190917f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd437291a35b6001600160a01b0381166000818152600f602090815260408083206001018690558583526011909152902080546001600160a01b03191690911790556112cd7383d0d842e6db3b020f384a2af11bd14787bec8e734611445565b5050505050565b60045460009060ff166113de5742600c54146113de5742600c81905560009062015180900490506000809054906101000a90046001600160a01b03166001600160a01b031663957aa58c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561134a57600080fd5b505af115801561135e573d6000803e3d6000fd5b505050506040513d602081101561137457600080fd5b505161138c576004805460ff19166001179055426003555b80600b5410156113dc57600b546000908152600660205260409020546007546113ba9163ffffffff611a1316565b600755600b80546000908152600660205260408120558054600101905561138c565b505b5060045460ff1690565b60405160009083906001600160a01b0382169084908481818185875af1925050503d8060008114611435576040519150601f19603f3d011682016040523d82523d6000602084013e61143a565b606091505b509095945050505050565b600080839050828160405161145990611d7a565b6001600160a01b039091168152604051908190036020019082f080158015611485573d6000803e3d6000fd5b50600193505050505b92915050565b61149d846118ea565b633b9aca008310156114e05760405162461bcd60e51b8152600401808060200182810382526021815260200180611db96021913960400191505060405180910390fd5b69021e19e0c9bab2400000831115611530576040805162461bcd60e51b815260206004820152600e60248201526d6e6f20766974616c696b2c206e6f60901b604482015290519081900360640190fd5b606482111561153e57606491505b60006012836065811061154d57fe5b0154670de0b6b3a7640000019050600081611579670de0b6b3a7640000876119eb90919063ffffffff16565b8161158057fe5b0490506000600160009054906101000a90046001600160a01b03166001600160a01b03166310a76c2e600854846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d602081101561161257600080fd5b50519050600085156116245781611627565b60005b600b5460085491925087016000190190611641908561183d565b600855600954611657908463ffffffff61183d16565b600955600081815260066020526040902054611679908363ffffffff61183d16565b60008281526006602052604090205560075461169b908363ffffffff61183d16565b6007556001600160a01b0389166000908152600f60205260409020600401546116ca908963ffffffff61183d16565b6001600160a01b038a166000908152600f602052604090206004810191909155600501546116fe908463ffffffff61183d16565b6001600160a01b038a166000908152600f60205260409020600581019190915560060154611732908363ffffffff61183d16565b6001600160a01b038a166000908152600f60209081526040808320600601939093556005815282822084835290522054611772908363ffffffff61183d16565b6001600160a01b038a1660009081526005602090815260408083208584529091529020556117a08887611a28565b6117ab898985611b73565b600b5460408051848152602081018a905281516001600160a01b038d16927f4b9622a7ffcb20551847f4dd71b5b98c4267e10d7d338a6c7fb7b26d45d854e0928290030190a36040805184815290516001600160a01b038b16916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050505050505050565b8181018281101561148e57600080fd5b60008061185983611bf0565b6001600160a01b0384166000908152600f6020526040812060020154919250611888838363ffffffff61183d16565b905080156118e2576001600160a01b0385166000908152600f602052604081206002810191909155600801546118c590849063ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600801555b949350505050565b6001600160a01b0381166000908152600f60205260408120600701549081156119c7575b600b5482101561197e576001600160a01b038316600090815260056020908152604080832085845290915290205461194d90829063ffffffff61183d16565b6001600160a01b0384166000908152600560209081526040808320868452909152812055600190920191905061190e565b6001600160a01b0383166000908152600f60205260409020600601546119aa908263ffffffff611a1316565b6001600160a01b0384166000908152600f60205260409020600601555b5050600b546001600160a01b039091166000908152600f6020526040902060070155565b6000826119fa5750600061148e565b5081810281838281611a0857fe5b041461148e57600080fd5b600082821115611a2257600080fd5b50900390565b6001600160a01b0381166000908152600f60205260409020600301546005830490600a84049060ff1615611b36576001600160a01b0383166000908152600f6020526040812060090154611a8390600663ffffffff61183d16565b905060006064611a99878463ffffffff6119eb16565b81611aa057fe5b6001600160a01b0387166000908152600f60205260409020600201549190049150611ad1908263ffffffff61183d16565b6001600160a01b0386166000908152600f602052604090206002810191909155600a0154611b05908263ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600a0155611b31848263ffffffff611a1316565b935050505b611b54739933ad4d38702cdc28c5db2f421f1f02cf53078082611445565b506112cd7383d0d842e6db3b020f384a2af11bd14787bec8e783611445565b60006014611b8884600363ffffffff6119eb16565b81611b8f57fe5b04905060006064611ba785603763ffffffff6119eb16565b81611bae57fe5b0490506000611bbe868486611c48565b9050611be582611bd983600a5461183d90919063ffffffff16565b9063ffffffff61183d16565b600a55505050505050565b6001600160a01b0381166000908152600f602052604081206008810154600590910154600d5461148e9291670de0b6b3a764000091611c349163ffffffff6119eb16565b81611c3b57fe5b049063ffffffff611a1316565b6009546000908190611c6885670de0b6b3a764000063ffffffff6119eb16565b81611c6f57fe5b049050611c8781600d5461183d90919063ffffffff16565b600d556000670de0b6b3a7640000611ca5838663ffffffff6119eb16565b81611cac57fe5b049050611cfd600f6000886001600160a01b03166001600160a01b0316815260200190815260200160002060080154611bd983670de0b6b3a7640000611c3489600d546119eb90919063ffffffff16565b6001600160a01b0387166000908152600f6020526040902060080155600954611d5190670de0b6b3a764000090611d3b90859063ffffffff6119eb16565b81611d4257fe5b8791900463ffffffff611a1316565b9695505050505050565b60405180610c8001604052806064906020820280388339509192915050565b603280611d878339019056fe60806040526040516032380380603283398181016040526020811015602357600080fd5b50516001600160a01b038116fffe706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6379a265627a7a7231582078f7dc0663f1419e97d7fc0c07346c894c816feeb9b5dae00925b35d680d542464736f6c63430005100032

Deployed Bytecode Sourcemap

27:19311:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10360:5;:3;:5::i;:::-;27:19311;16504:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16504:155:0;;;:::i;:::-;;;;;;;;;;;;;;;;1710:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:21:0;;;:::i;18329:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18329:55:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;18329:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:392;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9482:392:0;;;;;;;:::i;1937:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1937:19:0;;;:::i;1314:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1314:17:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;1762:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1762:19:0;;;:::i;2218:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2218:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2218:46:0;;:::i;:::-;;;;-1:-1:-1;;;;;2218:46:0;;;;;;;;;;;;;;18484:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18484:115:0;;;:::i;1419:73::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1419:73:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1419:73:0;;;;;;;;:::i;18438:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18438:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15236:358;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15236:358:0;;;:::i;17958:297::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17958:297:0;;;:::i;:::-;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17958:297:0;;;;;;;;;;;;;;;;1589:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1589:30:0;;;:::i;17476:334::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17476:334:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17476:334:0;-1:-1:-1;;;;;17476:334:0;;:::i;2067:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2067:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2067:40:0;-1:-1:-1;;;;;2067:40:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14721:449;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14721:449:0;;;:::i;1989:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1989:21:0;;;:::i;18607:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18607:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18607:136:0;-1:-1:-1;;;;;18607:136:0;;:::i;16789:513::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16789:513:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16789:513:0;-1:-1:-1;;;;;16789:513:0;;:::i;5225:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5225:276:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5225:276:0;;:::i;18391:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18391:40:0;;;:::i;1499:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1499:47:0;;:::i;1884:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1884:19:0;;;:::i;1831:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1831:20:0;;;:::i;8614:406::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8614:406:0;;;;;;;;:::i;8154:418::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8154:418:0;;;:::i;9057:386::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9057:386:0;;;;;;;:::i;2135:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2135:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2135:44:0;;:::i;2456:2725::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2456:2725:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2456:2725:0;;:::i;1289:18::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1289:18:0;;;:::i;1650:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1650:25:0;;;:::i;7220:811::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7220:811:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7220:811:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7220:811:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;7220:811:0;;-1:-1:-1;7220:811:0;-1:-1:-1;7220:811:0;:::i;9939:356::-;10025:6;:4;:6::i;:::-;10022:208;;;10051:10;10065:9;10051:23;10048:149;;;10093:32;10103:10;10115:9;10093;:32::i;:::-;;10048:149;;;10162:35;10175:10;10187:9;10162:12;:35::i;:::-;;10048:149;10212:7;;10022:208;10242:45;10250:10;10262:9;10273:1;10284;10242:7;:45::i;:::-;9939:356::o;16504:155::-;16576:11;;16598:6;;16549:7;;-1:-1:-1;;;;;16576:11:0;;:21;;16598:31;;16609:19;16598:31;:10;:31;:::i;:::-;16631:19;16576:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16576:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16576:75:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16576:75:0;;-1:-1:-1;16504:155:0;;:::o;1710:21::-;;;;:::o;18329:55::-;;;;;;;;;;;;;;-1:-1:-1;;;18329:55:0;;;;:::o;9482:392::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;9620:6;:4;:6::i;:::-;9617:90;;;9642:32;9652:10;9664:9;9642;:32::i;:::-;;9689:7;;9617:90;9742:22;9783:23;;;:11;:23;;;;;;-1:-1:-1;;;;;9783:23:0;9821:45;9829:10;9841:9;9852:5;9783:23;9821:7;:45::i;:::-;5912:1;;9482:392;;:::o;1937:19::-;;;;:::o;1314:17::-;;;;;;:::o;1762:19::-;;;;:::o;2218:46::-;;;;;;;;;;;;-1:-1:-1;;;;;2218:46:0;;:::o;18484:115::-;18552:5;;18529:7;;18552:5;;18549:18;;;-1:-1:-1;18566:1:0;18559:8;;18549:18;-1:-1:-1;18585:6:0;;18484:115;:::o;1419:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;18438:37::-;18473:2;18438:37;:::o;15236:358::-;15320:12;15350:28;15367:10;15350:16;:28::i;:::-;15343:35;-1:-1:-1;15411:8:0;;15407:180;;15439:10;15453:9;15439:23;15436:139;;;15481:27;15491:10;15503:4;15481:9;:27::i;:::-;;15436:139;;;15545:30;15558:10;15570:4;15545:12;:30::i;15436:139::-;15236:358;:::o;17958:297::-;18038:48;;:::i;:::-;18108:9;18104:110;2368:3;18121:1;:17;18104:110;;;18194:5;;:7;;18181:21;;;;:12;:21;;;;;;18159:16;18200:1;18159:19;;;;;;;;;;:43;18140:3;;18104:110;;;-1:-1:-1;17958:297:0;:::o;1589:30::-;;;;:::o;17476:334::-;17577:48;;:::i;:::-;17647:9;17643:126;2368:3;17660:1;:17;17643:126;;;-1:-1:-1;;;;;17721:27:0;;;;;;:18;:27;;;;;;;;17749:5;;:7;;17721:36;;;;;;;;17699:16;17755:1;17699:19;;;;;;;;;;:58;17679:3;;17643:126;;;-1:-1:-1;17476:334:0;;;;:::o;2067:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14721:449::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;14797:6;:4;:6::i;:::-;14789:26;;;;;-1:-1:-1;;;14789:26:0;;;;;;;;;;;;-1:-1:-1;;;14789:26:0;;;;;;;;;;;;;;;14878:10;14848:27;14908:19;;;:6;:19;;;;;:27;;;;;;;;14907:28;14899:56;;;;;-1:-1:-1;;;14899:56:0;;;;;;;;;;;;-1:-1:-1;;;14899:56:0;;;;;;;;;;;;;;;14966:29;14983:11;14966:16;:29::i;:::-;15061:15;;-1:-1:-1;;;;;15032:19:0;;15006:14;15032:19;;;:6;:19;;;;;:25;;;15023:4;;15006:14;;15061:15;15023:35;;;:8;:35;:::i;:::-;:53;;;;;-1:-1:-1;;;;;15087:19:0;;;;;;:6;:19;;;;;:27;;:34;;-1:-1:-1;;15087:34:0;;;;;15023:53;;-1:-1:-1;15132:30:0;15094:11;15023:53;15132:9;:30::i;1989:21::-;;;;:::o;18607:136::-;18684:5;;18661:7;;18684:5;;18681:18;;;-1:-1:-1;18698:1:0;18691:8;;18681:18;-1:-1:-1;;;;;;18717:11:0;;;;;:6;:11;;;;;:18;;;;18607:136::o;16789:513::-;-1:-1:-1;;;;;16920:15:0;;16879:7;16920:15;;;:6;:15;;;;;:21;;;;16969:28;;;;;16879:7;17045:11;;17042:196;;17073:152;17088:5;;17079:6;:14;17073:152;;;-1:-1:-1;;;;;17143:27:0;;;;;;:18;:27;;;;;;;;:35;;;;;;;;;17127:52;;:11;;:52;:15;:52;:::i;:::-;17113:66;;17208:1;17198:11;;;;17073:152;;;17255:10;;:39;;17272:22;:5;17282:11;17272:22;:9;:22;:::i;:::-;17255:39;;;17268:1;17255:39;17248:46;16789:513;-1:-1:-1;;;;;16789:513:0:o;5225:276::-;;;;;;;;;;;;;-1:-1:-1;5225:276:0;:::o;18391:40::-;;;;;;;;;;;;;;-1:-1:-1;;;18391:40:0;;;;:::o;1499:47::-;;;;;;;;;;;;;:::o;1884:19::-;;;;:::o;1831:20::-;;;;:::o;8614:406::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;8756:6;:4;:6::i;:::-;8753:90;;;8778:32;8788:10;8800:9;8778;:32::i;8753:90::-;-1:-1:-1;;;;;8886:14:0;;;;;;:6;:14;;;;;:22;;;;;8882:73;;8941:1;8924:19;;8882:73;8967:45;8975:10;8987:9;8998:5;9005:6;8967:7;:45::i;8154:418::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;8243:10;8226:14;8272;;;:6;:14;;;;;:22;;;;;8264:31;;;;;;-1:-1:-1;;;;;8314:14:0;;;;;;:6;:14;;;;;:20;;;2406:2;-1:-1:-1;8306:40:0;;;;;;-1:-1:-1;;;;;8407:14:0;;;;;;:6;:14;;;;;:20;;;8395:11;;:33;;;;;;;;;-1:-1:-1;;;;;8362:14:0;;;;;;:6;:14;;;;;:29;;;:66;8359:206;;-1:-1:-1;;;;;8476:14:0;;;;;;:6;:14;;;;;:20;;;8468:29;;8469:1;;8468:29;:7;:29;:::i;:::-;-1:-1:-1;;;;;8445:14:0;;;;;;:6;:14;;;;;;:20;;:52;;;8517:36;;;8445:14;8517:36;5912:1;8154:418::o;9057:386::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;9193:6;:4;:6::i;:::-;9190:90;;;9215:32;9225:10;9237:9;9215;:32::i;9190:90::-;9315:22;9356:19;;;:9;:19;;;;;;-1:-1:-1;;;;;9356:19:0;9390:45;9398:10;9410:9;9421:5;9356:19;9390:7;:45::i;2135:44::-;;;;;;;;;;;;-1:-1:-1;;;;;2135:44:0;;:::o;2456:2725::-;;;;;;;;;1289:18;;;;:::o;1650:25::-;;;;:::o;7220:811::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;7353:6;;:28;;-1:-1:-1;;;7353:28:0;;;;;;;;;;;;;;;7337:13;;-1:-1:-1;;;;;7353:6:0;;:15;;7369:11;;;;7353:28;;;;;7369:11;;;;7353:28;1:33:-1;99:1;81:16;;;74:27;7353:28:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;;-1:-1;7353:28:0;;-1:-1:-1;7353:28:0;;-1:-1:-1;;;7353:28:0;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;7353:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7353:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7353:28:0;;-1:-1:-1;7409:10:0;7451:17;7438:9;:30;;7430:62;;;;;-1:-1:-1;;;7430:62:0;;;;;;;;;;;;-1:-1:-1;;;7430:62:0;;;;;;;;;;;;;;;7541:1;7511:18;;;:11;:18;;;;;;-1:-1:-1;;;;;7511:18:0;:32;7503:60;;;;;-1:-1:-1;;;7503:60:0;;;;;;;;;;;;-1:-1:-1;;;7503:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7580:14:0;;;;;;:6;:14;;;;;:22;;;;;7576:286;;7618:6;:11;;7628:1;7618:11;;;;;-1:-1:-1;;;;;7644:14:0;;7618:6;7644:14;;;:6;:14;;;;;;;;:22;;;:29;;-1:-1:-1;;7644:29:0;;;;;7708:6;;7688:26;;7729:20;;:24;;;7778:6;;7768:17;;:9;:17;;;;;:26;;-1:-1:-1;;;;;;7768:26:0;;;;;7829:14;;;;:20;;7814:36;;7644:14;;7814:36;;;7576:286;-1:-1:-1;;;;;7915:14:0;;;;;;:6;:14;;;;;;;;:19;;:27;;;7953:18;;;:11;:18;;;;;:27;;-1:-1:-1;;;;;;7953:27:0;;;;;;7991:30;1142:42;8011:9;7991:12;:30::i;:::-;;5912:1;;7220:811;;:::o;6364:758::-;6441:5;;6415:4;;6441:5;;6437:645;;6475:3;6467:4;;:11;6463:608;;6506:3;6499:4;:10;;;6528:14;;6552:6;;6545:13;6528:30;;6670:3;;;;;;;;;-1:-1:-1;;;;;6670:3:0;-1:-1:-1;;;;;6670:8:0;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6670:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6670:10:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6670:10:0;6667:107;;6710:5;:12;;-1:-1:-1;;6710:12:0;6718:4;6710:12;;;6751:3;6745;:9;6667:107;6868:6;6860:5;;:14;6853:203;;;6950:5;;6937:19;;;;:12;:19;;;;;;6917:15;;:40;;;:19;:40;:::i;:::-;6899:15;:58;6993:5;;;7002:1;6980:19;;;:12;:19;;;;;:23;7026:10;;7035:1;7026:10;;;6853:203;;;6463:608;;-1:-1:-1;7109:5:0;;;;6364:758;:::o;18903:202::-;19065:32;;18967:12;;19036:2;;-1:-1:-1;;;;;19065:14:0;;;19086:6;;18967:12;19065:32;18967:12;19065:32;19086:6;19065:14;:32;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;19051:46:0;;18903:202;-1:-1:-1;;;;;18903:202:0:o;19113:220::-;19180:12;19205:25;19249:2;19205:48;;19285:6;19293:9;19264:39;;;;;:::i;:::-;-1:-1:-1;;;;;19264:39:0;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;19321:4:0;;-1:-1:-1;;;;19113:220:0;;;;;:::o;10432:1664::-;10540:24;10557:6;10540:16;:24::i;:::-;10601:10;10593:4;:18;;10585:64;;;;-1:-1:-1;;;10585:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10676:23;10668:4;:31;;10660:58;;;;;-1:-1:-1;;;10660:58:0;;;;;;;;;;;;-1:-1:-1;;;10660:58:0;;;;;;;;;;;;;;;2368:3;10734:5;:23;10731:77;;;2368:3;10773:23;;10731:77;10818:13;10834:4;10839:5;10834:11;;;;;;;;;10848:19;10834:33;10818:49;;10878:21;10934:5;10902:29;10911:19;10902:4;:8;;:29;;;;:::i;:::-;:37;;;;;;10878:61;;11165:14;11182:11;;;;;;;;;-1:-1:-1;;;;;11182:11:0;-1:-1:-1;;;;;11182:21:0;;11204:10;;11216:13;11182:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11182:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11182:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11182:48:0;;-1:-1:-1;11241:13:0;11258:10;;11257:23;;11274:6;11257:23;;;11271:1;11257:23;11309:5;;11385:10;;11241:39;;-1:-1:-1;11309:13:0;;-1:-1:-1;;11309:17:0;;11385:29;;11400:13;11385:14;:29::i;:::-;11372:10;:42;11434:6;;:18;;11445:6;11434:18;:10;:18;:::i;:::-;11425:6;:27;11487:21;;;;:12;:21;;;;;;:32;;11513:5;11487:32;:25;:32;:::i;:::-;11463:21;;;;:12;:21;;;;;:56;11548:15;;:26;;11568:5;11548:26;:19;:26;:::i;:::-;11530:15;:44;-1:-1:-1;;;;;11639:14:0;;;;;;:6;:14;;;;;:18;;;:28;;11662:4;11639:28;:22;:28;:::i;:::-;-1:-1:-1;;;;;11618:14:0;;;;;;:6;:14;;;;;:18;;;:49;;;;11702:21;;;:33;;11728:6;11702:33;:25;:33;:::i;:::-;-1:-1:-1;;;;;11678:14:0;;;;;;:6;:14;;;;;:21;;;:57;;;;11769:20;;;:31;;11794:5;11769:31;:24;:31;:::i;:::-;-1:-1:-1;;;;;11746:14:0;;;;;;:6;:14;;;;;;;;:20;;:54;;;;11849:18;:26;;;;;:35;;;;;;;:46;;11889:5;11849:46;:39;:46;:::i;:::-;-1:-1:-1;;;;;11811:26:0;;;;;;:18;:26;;;;;;;;:35;;;;;;;;:84;11908:26;11921:4;11927:6;11908:12;:26::i;:::-;11945:34;11958:6;11966:4;11972:6;11945:12;:34::i;:::-;12016:5;;11995:41;;;;;;;;;;;;;;-1:-1:-1;;;;;11995:41:0;;;;;;;;;;;12052:36;;;;;;;;-1:-1:-1;;;;;12052:36:0;;;12069:1;;12052:36;;;;;;;;;10432:1664;;;;;;;;;:::o;20361:155::-;20477:5;;;20501:6;;;;20493:15;;;;;15602:447;15679:7;15704:12;15719:29;15740:7;15719:20;:29::i;:::-;-1:-1:-1;;;;;15785:15:0;;15770:12;15785:15;;;:6;:15;;;;;:19;;;15704:44;;-1:-1:-1;15848:14:0;15704:44;15785:19;15848:14;:8;:14;:::i;:::-;15828:34;-1:-1:-1;15879:13:0;;15875:137;;-1:-1:-1;;;;;15909:15:0;;15931:1;15909:15;;;:6;:15;;;;;:19;;;:23;;;;15979:20;;;15970:30;;:4;;:30;:8;:30;:::i;:::-;-1:-1:-1;;;;;15947:15:0;;;;;;:6;:15;;;;;:20;;:53;15875:137;16031:9;15602:447;-1:-1:-1;;;;15602:447:0:o;12170:535::-;-1:-1:-1;;;;;12250:15:0;;12233:14;12250:15;;;:6;:15;;;;;:28;;;;12326:11;;12323:328;;12353:210;12368:5;;12359:6;:14;12353:210;;;-1:-1:-1;;;;;12423:27:0;;;;;;:18;:27;;;;;;;;:35;;;;;;;;;12407:52;;:11;;:52;:15;:52;:::i;:::-;-1:-1:-1;;;;;12478:27:0;;12516:1;12478:27;;;:18;:27;;;;;;;;:35;;;;;;;;:39;12546:1;12536:11;;;;12393:66;-1:-1:-1;12353:210:0;;;-1:-1:-1;;;;;12601:15:0;;;;;;:6;:15;;;;;:21;;;:38;;12627:11;12601:38;:25;:38;:::i;:::-;-1:-1:-1;;;;;12577:15:0;;;;;;:6;:15;;;;;:21;;:62;12323:328;-1:-1:-1;;12692:5:0;;-1:-1:-1;;;;;12661:15:0;;;;;;;:6;:15;;;;;:28;;:36;12170:535::o;20000:190::-;20085:9;20116:6;20112:20;;-1:-1:-1;20131:1:0;20124:8;;20112:20;-1:-1:-1;20147:5:0;;;20151:1;20147;:5;:1;20171:5;;;;;:10;20163:19;;;;;20198:155;20283:9;20323:1;20318;:6;;20310:15;;;;;;-1:-1:-1;20340:5:0;;;20198:155::o;12769:613::-;-1:-1:-1;;;;;12975:14:0;;12877:10;12975:14;;;:6;:14;;;;;:22;;;12897:1;12890:8;;;12957:2;12950:9;;;12975:22;;12972:333;;;-1:-1:-1;;;;;13031:14:0;;13013:15;13031:14;;;:6;:14;;;;;:20;;;:27;;13056:1;13031:27;:24;:27;:::i;:::-;13013:45;-1:-1:-1;13073:12:0;13108:3;13088:17;:4;13013:45;13088:17;:8;:17;:::i;:::-;:23;;;;;-1:-1:-1;;;;;13147:14:0;;;;;;:6;:14;;;;;:18;;;13088:23;;;;-1:-1:-1;13147:28:0;;13088:23;13147:28;:22;:28;:::i;:::-;-1:-1:-1;;;;;13126:14:0;;;;;;:6;:14;;;;;:18;;;:49;;;;13222:29;;;:39;;13256:4;13222:39;:33;:39;:::i;:::-;-1:-1:-1;;;;;13190:14:0;;;;;;:6;:14;;;;;:29;;:71;13281:12;:2;13288:4;13281:12;:6;:12;:::i;:::-;13276:17;;12972:333;;;13317:23;1239:42;13335:4;13317:12;:23::i;:::-;;13351;1142:42;13371:2;13351:12;:23::i;13444:445::-;13565:12;13594:2;13580:11;:4;13589:1;13580:11;:8;:11;:::i;:::-;:16;;;;;;;-1:-1:-1;13643:13:0;13674:3;13659:12;:4;13668:2;13659:12;:8;:12;:::i;:::-;:18;;;;;;13643:34;;13745:13;13761:34;13773:6;13781:4;13787:7;13761:11;:34::i;:::-;13745:50;;13843:26;13863:5;13843:15;13852:5;13843:4;;:8;;:15;;;;:::i;:::-;:19;:26;:19;:26;:::i;:::-;13836:4;:33;-1:-1:-1;;;;;;13444:445:0:o;16057:217::-;-1:-1:-1;;;;;16245:15:0;;16152:7;16245:15;;;:6;:15;;;;;:20;;;;16194:22;;;;;16185:4;;16184:82;;16245:20;16220:19;;16185:32;;;:8;:32;:::i;:::-;:54;;;;;;;16184:82;:60;:82;:::i;13897:751::-;14165:6;;14001:7;;;;14133:29;:4;14142:19;14133:29;:8;:29;:::i;:::-;:38;;;;;;14118:53;;14189:14;14198:4;14189;;:8;;:14;;;;:::i;:::-;14182:4;:21;14359:14;14398:19;14377:17;:4;14386:7;14377:17;:8;:17;:::i;:::-;14376:41;;;;;;14359:58;;14451:83;14513:6;:15;14520:7;-1:-1:-1;;;;;14513:15:0;-1:-1:-1;;;;;14513:15:0;;;;;;;;;;;;:20;;;14452:55;14500:6;14475:19;14454:17;14463:7;14454:4;;:8;;:17;;;;:::i;14451:83::-;-1:-1:-1;;;;;14428:15:0;;;;;;:6;:15;;;;;:20;;:106;14609:6;;14590:49;;14619:19;;14600:16;;:4;;:16;:8;:16;:::i;:::-;:38;;;;;14590:4;;14600:38;;14590:49;:8;:49;:::i;:::-;14583:57;13897:751;-1:-1:-1;;;;;;13897:751:0:o;27:19311::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;27:19311:0;;;-1:-1:-1;;27:19311:0:o;:::-;;;;;;;;:::o

Swarm Source

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