ETH Price: $2,537.33 (+4.11%)

Token

Mafia.Network (MAFI)
 

Overview

Max Total Supply

14,231,019.274471604393022722 MAFI

Holders

100 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
441.454357230541473305 MAFI

Value
$0.00
0x537037C5ae805b9D4CeCAB5Ee07F12a8e59A15B2
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Mafia.Network (MAFI) token is meant to be hyper deflationary in nature with its utility and demand increase, the finite supply of 15,000,000 MAFI will decrease.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Mafia

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.5.10;


library Farm {
    using Farm for Farm.Family;

    struct Family {
        uint256[] entries;
        mapping(address => uint256) index;
    }

    function initialize(Family storage _family) internal {
        require(_family.entries.length == 0, "already initialized");
        _family.entries.push(0);
    }

    function encode(address _addr, uint256 _value) internal pure returns (uint256 _entry) {
        /* solium-disable-next-line */
        assembly {
            _entry := not(or(and(0xffffffffffffffffffffffffffffffffffffffff, _addr), shl(160, _value)))
        }
    }

    function decode(uint256 _entry) internal pure returns (address _addr, uint256 _value) {
        /* solium-disable-next-line */
        assembly {
            let entry := not(_entry)
            _addr := and(entry, 0xffffffffffffffffffffffffffffffffffffffff)
            _value := shr(160, entry)
        }
    }

    function decodeAddress(uint256 _entry) internal pure returns (address _addr) {
        /* solium-disable-next-line */
        assembly {
            _addr := and(not(_entry), 0xffffffffffffffffffffffffffffffffffffffff)
        }
    }

    function top(Family storage _family) internal view returns (address, uint256) {
        if (_family.entries.length < 2) {
            return (address(0), 0);
        }
        return decode(_family.entries[1]);
    }

    function has(Family storage _family, address _addr) internal view returns (bool) {
        return _family.index[_addr] != 0;
    }

    function size(Family storage _family) internal view returns (uint256) {
        return _family.entries.length - 1;
    }

    function entry(Family storage _family, uint256 _i) internal view returns (address, uint256) {
        return decode(_family.entries[_i + 1]);
    }

    function popTop(Family storage _family) internal returns (address _addr, uint256 _value) {
        uint256 familyLength = _family.entries.length;
        require(familyLength > 1, "The family does not exists");

        (_addr, _value) = decode(_family.entries[1]);
        _family.index[_addr] = 0;

        if (familyLength == 2) {
            _family.entries.length = 1;
        } else {
            uint256 val = _family.entries[familyLength - 1];
            _family.entries[1] = val;
            _family.entries.length = familyLength - 1;
            uint256 ind = 1;
            ind = _family.bubbleDown(ind, val);
            _family.index[decodeAddress(val)] = ind;
        }
    }

    function insert(Family storage _family, address _addr, uint256 _value) internal {
        require(_family.index[_addr] == 0, "The entry already exists");
        uint256 encoded = encode(_addr, _value);
        _family.entries.push(encoded);
        uint256 currentIndex = _family.entries.length - 1;
        currentIndex = _family.bubbleUp(currentIndex, encoded);
        _family.index[_addr] = currentIndex;
    }

    function update(Family storage _family, address _addr, uint256 _value) internal {
        uint256 ind = _family.index[_addr];
        require(ind != 0, "The entry does not exists");

        uint256 can = encode(_addr, _value);
        uint256 val = _family.entries[ind];
        uint256 newInd;

        if (can < val) {
            newInd = _family.bubbleDown(ind, can);
        } else if (can > val) {
            newInd = _family.bubbleUp(ind, can);
        } else {
            return;
        }
        _family.entries[newInd] = can;
        if (newInd != ind) {
            _family.index[_addr] = newInd;
        }
    }

    function bubbleUp(Family storage _family, uint256 _ind, uint256 _val) internal returns (uint256 ind) {
        ind = _ind;
        if (ind != 1) {
            uint256 fam = _family.entries[ind / 2];
            while (fam < _val) {
                (_family.entries[ind / 2], _family.entries[ind]) = (_val, fam);
                _family.index[decodeAddress(fam)] = ind;
                ind = ind / 2;
                if (ind == 1) {
                    break;
                }
                fam = _family.entries[ind / 2];
            }
        }
    }

    function bubbleDown(Family storage _family, uint256 _ind, uint256 _val) internal returns (uint256 ind) {
        ind = _ind;
        uint256 lenght = _family.entries.length;
        uint256 target = lenght - 1;

        while (ind * 2 < lenght) {
            uint256 j = ind * 2;
            uint256 leftMobster = _family.entries[j];
            uint256 mobsterValue;

            if (target > j) {
                uint256 rightMobster = _family.entries[j + 1];
                if (leftMobster < rightMobster) {
                    mobsterValue = rightMobster;
                    j = j + 1;
                } else {
                    mobsterValue = leftMobster;
                }
            } else {
                mobsterValue = leftMobster;
            }
            if (_val > mobsterValue) {
                break;
            }
            (_family.entries[ind], _family.entries[j]) = (mobsterValue, _val);
            _family.index[decodeAddress(mobsterValue)] = ind;
            ind = j;
        }
    }
}


interface IERC20 {
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint256 remaining);
    function approve(address _spender, uint256 _value) external returns (bool success);
    function balanceOf(address _owner) external view returns (uint256 balance);
}


contract GasPump {
    bytes32 private stub;

    modifier requestGas(uint256 _factor) {
        if (tx.gasprice == 0 || gasleft() > block.gaslimit) {
            uint256 startgas = gasleft();
            _;
            uint256 delta = startgas - gasleft();
            uint256 target = (delta * _factor) / 100;
            startgas = gasleft();
            while (startgas - gasleft() < target) {
                stub = keccak256(abi.encodePacked(stub));
            }
        } else {
            _;
        }
    }
}


library Math {
    function orderOfMagnitude(uint256 input) internal pure returns (uint256){
        uint256 counter = uint(-1);
        uint256 temp = input;

        do {
            temp /= 10;
            counter++;
        } while (temp != 0);

        return counter;
    }

    function min(uint256 _a, uint256 _b) internal pure returns (uint256) {
        if (_a < _b) {
            return _a;
        } else {
            return _b;
        }
    }

    function max(uint256 _a, uint256 _b) internal pure returns (uint256) {
        if (_a > _b) {
            return _a;
        } else {
            return _b;
        }
    }
}


library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x + y;
        require(z >= x, "Add overflow");
        return z;
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256) {
        require(x >= y, "Sub underflow");
        return x - y;
    }

    function mult(uint256 x, uint256 y) internal pure returns (uint256) {
        if (x == 0) {
            return 0;
        }

        uint256 z = x * y;
        require(z / x == y, "Mult overflow");
        return z;
    }

    function div(uint256 x, uint256 y) internal pure returns (uint256) {
        require(y != 0, "Div by zero");
        return x / y;
    }

    function divRound(uint256 x, uint256 y) internal pure returns (uint256) {
        require(y != 0, "Div by zero");
        uint256 r = x / y;
        if (x % y != 0) {
            r = r + 1;
        }

        return r;
    }
}


library IsContract {
    function isContract(address _addr) internal view returns (bool) {
        bytes32 codehash;
        /* solium-disable-next-line */
        assembly {codehash := extcodehash(_addr)}
        return codehash != bytes32(0) && codehash != bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470);
    }
}


contract StorageUnit {
    address private owner;
    mapping(bytes32 => bytes32) private store;

    constructor() public {
        owner = msg.sender;
    }

    function write(bytes32 _key, bytes32 _value) external {
        /* solium-disable-next-line */
        require(msg.sender == owner);
        store[_key] = _value;
    }

    function read(bytes32 _key) external view returns (bytes32) {
        return store[_key];
    }
}


library DistributedStorage {
    function contractSlot(bytes32 _struct) private view returns (address) {
        return address(
            uint256(
                keccak256(
                    abi.encodePacked(
                        byte(0xff),
                        address(this),
                        _struct,
                        keccak256(type(StorageUnit).creationCode)
                    )
                )
            )
        );
    }

    function deploy(bytes32 _struct) private {
        bytes memory slotcode = type(StorageUnit).creationCode;
        /* solium-disable-next-line */
        assembly{pop(create2(0, add(slotcode, 0x20), mload(slotcode), _struct))}
    }

    function write(
        bytes32 _struct,
        bytes32 _key,
        bytes32 _value
    ) internal {
        StorageUnit store = StorageUnit(contractSlot(_struct));
        if (!IsContract.isContract(address(store))) {
            deploy(_struct);
        }

        /* solium-disable-next-line */
        (bool success,) = address(store).call(
            abi.encodeWithSelector(
                store.write.selector,
                _key,
                _value
            )
        );

        require(success, "error writing storage");
    }

    function read(
        bytes32 _struct,
        bytes32 _key
    ) internal view returns (bytes32) {
        StorageUnit store = StorageUnit(contractSlot(_struct));
        if (!IsContract.isContract(address(store))) {
            return bytes32(0);
        }

        /* solium-disable-next-line */
        (bool success, bytes memory data) = address(store).staticcall(
            abi.encodeWithSelector(
                store.read.selector,
                _key
            )
        );

        require(success, "error reading storage");
        return abi.decode(data, (bytes32));
    }
}


contract Ownable {
    address public owner;

    event TransferOwnership(address _from, address _to);

    constructor() public {
        owner = msg.sender;
        emit TransferOwnership(address(0), msg.sender);
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "only owner");
        _;
    }

    function setOwner(address _owner) external onlyOwner {
        emit TransferOwnership(owner, _owner);
        owner = _owner;
    }
}


contract Family is Ownable {
    using Farm for Farm.Family;

    Farm.Family private family;

    event JoinFamily(address indexed _address, uint256 _balance, uint256 _prevSize);
    event LeaveFamily(address indexed _address, uint256 _balance, uint256 _prevSize);

    uint256 public constant TOP_SIZE = 100;

    constructor() public {
        family.initialize();
    }

    function topSize() external pure returns (uint256) {
        return TOP_SIZE;
    }

    function addressAt(uint256 _i) external view returns (address addr) {
        (addr,) = family.entry(_i);
    }

    function indexOf(address _addr) external view returns (uint256) {
        return family.index[_addr];
    }

    function entry(uint256 _i) external view returns (address, uint256) {
        return family.entry(_i);
    }

    function top() external view returns (address, uint256) {
        return family.top();
    }

    function size() external view returns (uint256) {
        return family.size();
    }

    function update(address _addr, uint256 _new) external onlyOwner {
        uint256 _size = family.size();

        if (_size == 0) {
            emit JoinFamily(_addr, _new, 0);
            family.insert(_addr, _new);
            return;
        }

        (, uint256 lastBal) = family.top();

        if (family.has(_addr)) {
            family.update(_addr, _new);
            if (_new == 0) {
                family.popTop();
                emit LeaveFamily(_addr, 0, _size);
            }
        } else {
            if (_new != 0 && (_size < TOP_SIZE || lastBal < _new)) {
                if (_size >= TOP_SIZE) {
                    (address _poped, uint256 _balance) = family.popTop();
                    emit LeaveFamily(_poped, _balance, _size);
                }
                family.insert(_addr, _new);
                emit JoinFamily(_addr, _new, _size);
            }
        }
    }
}


contract Mafia is Ownable, GasPump, IERC20 {
    using DistributedStorage for bytes32;
    using SafeMath for uint256;

    event Winner(address indexed _addr, uint256 _value);
    event SetName(string _prev, string _new);
    event SetExtraGas(uint256 _prev, uint256 _new);
    event SetFamily(address _prev, address _new);
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);

    uint256 public totalSupply;
    bytes32 private constant BALANCE_KEY = keccak256("balance");
    uint256 public constant FEE = 100;

    string public name = "Mafia.Network";
    string public constant symbol = "MAFI";
    uint8 public constant decimals = 18;
    mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;

    Family public family;
    uint256 public extraGas;
    bool inited;

    function init(
        address _to,
        uint256 _amount
    ) external {
        assert(!inited);
        inited = true;
        assert(totalSupply == 0);
        assert(address(family) == address(0));
        family = new Family();
        emit SetFamily(address(0), address(family));
        extraGas = 15;
        emit SetExtraGas(0, extraGas);
        emit Transfer(address(0), _to, _amount);
        _setBalance(_to, _amount);
        totalSupply = _amount;
    }


    function _toKey(address a) internal pure returns (bytes32) {
        return bytes32(uint256(a));
    }

    function _balanceOf(address _addr) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(BALANCE_KEY));
    }

    function _allowance(address _addr, address _spender) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("allowance", _spender))));
    }

    function _nonce(address _addr, uint256 _cat) internal view returns (uint256) {
        return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("nonce", _cat))));
    }

    function _setAllowance(address _addr, address _spender, uint256 _value) internal {
        _toKey(_addr).write(keccak256(abi.encodePacked("allowance", _spender)), bytes32(_value));
    }

    function _setNonce(address _addr, uint256 _cat, uint256 _value) internal {
        _toKey(_addr).write(keccak256(abi.encodePacked("nonce", _cat)), bytes32(_value));
    }

    function _setBalance(address _addr, uint256 _balance) internal {
        _toKey(_addr).write(BALANCE_KEY, bytes32(_balance));
        family.update(_addr, _balance);
    }

    function _isWhitelisted(address _from, address _to) internal view returns (bool) {
        return whitelistFrom[_from]||whitelistTo[_to];
    }

    function _random(address _s1, uint256 _s2, uint256 _s3, uint256 _max) internal pure returns (uint256) {
        uint256 rand = uint256(keccak256(abi.encodePacked(_s1, _s2, _s3)));
        return rand % (_max + 1);
    }

    function _pickWinner(address _from, uint256 _value) internal returns (address winner) {
        uint256 magnitude = Math.orderOfMagnitude(_value);
        uint256 nonce = _nonce(_from, magnitude);
        _setNonce(_from, magnitude, nonce + 1);
        winner = family.addressAt(_random(_from, nonce, magnitude, family.size() - 1));
    }

    function _transferFrom(address _operator, address _from, address _to, uint256 _value, bool _payFee) internal {
        if (_value == 0) {
            emit Transfer(_from, _to, 0);
            return;
        }

        uint256 balanceFrom = _balanceOf(_from);
        require(balanceFrom >= _value, "balance not enough");

        if (_from != _operator) {
            uint256 allowanceFrom = _allowance(_from, _operator);
            if (allowanceFrom != uint(-1)) {
                require(allowanceFrom >= _value, "allowance not enough");
                _setAllowance(_from, _operator, allowanceFrom.sub(_value));
            }
        }

        uint256 receive = _value;
        uint256 burn = 0;
        uint256 mafi = 0;

        _setBalance(_from, balanceFrom.sub(_value));

        if (_payFee || !_isWhitelisted(_from, _to)) {
            burn = _value.divRound(FEE);
            mafi = _value == 1 ? 0 : burn;
            receive = receive.sub(burn.add(mafi));
            totalSupply = totalSupply.sub(burn);
            emit Transfer(_from, address(0), burn);

            address winner = _pickWinner(_from, _value);
            _setBalance(winner, _balanceOf(winner).add(mafi));
            emit Winner(winner, mafi);
            emit Transfer(_from, winner, mafi);
        }

        assert(burn.add(mafi).add(receive) == _value);

        _setBalance(_to, _balanceOf(_to).add(receive));
        emit Transfer(_from, _to, receive);
    }

    function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistTo(_addr, _whitelisted);
        whitelistTo[_addr] = _whitelisted;
    }

    function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner {
        emit WhitelistFrom(_addr, _whitelisted);
        whitelistFrom[_addr] = _whitelisted;
    }

    function setName(string calldata _name) external onlyOwner {
        emit SetName(name, _name);
        name = _name;
    }

    function setExtraGas(uint256 _gas) external onlyOwner {
        emit SetExtraGas(extraGas, _gas);
        extraGas = _gas;
    }

    function setFamily(Family _family) external onlyOwner {
        emit SetFamily(address(family), address(_family));
        family = _family;
    }

    function topSize() external view returns (uint256) {
        return family.topSize();
    }

    function familySize() external view returns (uint256) {
        return family.size();
    }

    function familyEntry(uint256 _i) external view returns (address, uint256) {
        return family.entry(_i);
    }

    function familyTop() external view returns (address, uint256) {
        return family.top();
    }

    function familyIndex(address _addr) external view returns (uint256) {
        return family.indexOf(_addr);
    }

    function getNonce(address _addr, uint256 _cat) external view returns (uint256) {
        return _nonce(_addr, _cat);
    }

    function balanceOf(address _addr) external view returns (uint256) {
        return _balanceOf(_addr);
    }

    function allowance(address _addr, address _spender) external view returns (uint256) {
        return _allowance(_addr, _spender);
    }

    function approve(address _spender, uint256 _value) external returns (bool) {
        emit Approval(msg.sender, _spender, _value);
        _setAllowance(msg.sender, _spender, _value);
        return true;
    }

    function transfer(address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, msg.sender, _to, _value, false);
        return true;
    }

    function transferWithFee(address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, msg.sender, _to, _value, true);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, _from, _to, _value, false);
        return true;
    }

    function transferFromWithFee(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) {
        _transferFrom(msg.sender, _from, _to, _value, true);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_prev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"SetExtraGas","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_prev","type":"address"},{"indexed":false,"internalType":"address","name":"_new","type":"address"}],"name":"SetFamily","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_prev","type":"string"},{"indexed":false,"internalType":"string","name":"_new","type":"string"}],"name":"SetName","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":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Winner","type":"event"},{"constant":true,"inputs":[],"name":"FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"extraGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"family","outputs":[{"internalType":"contract Family","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_i","type":"uint256"}],"name":"familyEntry","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"familyIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"familySize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"familyTop","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_cat","type":"uint256"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"setExtraGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract Family","name":"_family","type":"address"}],"name":"setFamily","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"topSize","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":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFromWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferWithFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]

60c0604052600d60808190526c4d616669612e4e6574776f726b60981b60a090815262000030916003919062000086565b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a16200012b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000c957805160ff1916838001178555620000f9565b82800160010185558215620000f9579182015b82811115620000f9578251825591602001919060010190620000dc565b50620001079291506200010b565b5090565b6200012891905b8082111562000107576000815560010162000112565b90565b612e1e806200013b6000396000f3fe60806040523480156200001157600080fd5b5060043610620002085760003560e01c80637c32cdd1116200011d578063a486309d11620000b1578063d83d170c116200007b578063d83d170c1462000696578063dd62ed3e14620006a0578063df60c84d14620006d1578063ff12bbf414620006db5762000208565b8063a486309d14620005b6578063a9059cbb14620005e7578063c47f00271462000616578063c57981b5146200068c5762000208565b806389f3546811620000f357806389f3546814620005495780638cec999314620005825780638da5cb5b14620005a257806395d89b4114620005ac5762000208565b80637c32cdd114620004cd578063826f0df014620004d757806389535803146200051a5762000208565b8063313ce56711620001a15780633b089391116200016b5780633b089391146200042c57806343684b21146200045557806370a08231146200047e57806376e75a0e14620004a75762000208565b8063313ce56714620003aa578063333d36ec14620003ca5780633767e33914620003f3578063399ae72414620003fd5762000208565b806313af403511620001e357806313af4035146200030157806316b627d1146200032c57806318160ddd146200035557806323b872dd14620003715762000208565b806306fdde03146200020d57806308acece2146200028f578063095ea7b314620002d2575b600080fd5b620002176200070c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200025357818101518382015260200162000239565b50505050905090810190601f168015620002815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002be60048036036040811015620002a757600080fd5b506001600160a01b0381351690602001356200079e565b604080519115158252519081900360200190f35b620002be60048036036040811015620002ea57600080fd5b506001600160a01b0381351690602001356200083f565b6200032a600480360360208110156200031957600080fd5b50356001600160a01b03166200089a565b005b620002be600480360360208110156200034457600080fd5b50356001600160a01b031662000951565b6200035f62000966565b60408051918252519081900360200190f35b620002be600480360360608110156200038957600080fd5b506001600160a01b038135811691602081013590911690604001356200096c565b620003b462000a0e565b6040805160ff9092168252519081900360200190f35b6200035f60048036036020811015620003e257600080fd5b50356001600160a01b031662000a13565b6200035f62000a99565b6200032a600480360360408110156200041557600080fd5b506001600160a01b03813516906020013562000a9f565b6200032a600480360360208110156200044457600080fd5b50356001600160a01b031662000be6565b620002be600480360360208110156200046d57600080fd5b50356001600160a01b031662000c9d565b6200035f600480360360208110156200049657600080fd5b50356001600160a01b031662000cb2565b620004b162000cbf565b604080516001600160a01b039092168252519081900360200190f35b6200035f62000cce565b620004f760048036036020811015620004ef57600080fd5b503562000d48565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6200035f600480360360408110156200053257600080fd5b506001600160a01b03813516906020013562000dd4565b620002be600480360360608110156200056157600080fd5b506001600160a01b0381358116916020810135909116906040013562000de9565b6200032a600480360360208110156200059a57600080fd5b503562000e28565b620004b162000eb7565b6200021762000ec6565b6200032a60048036036040811015620005ce57600080fd5b506001600160a01b038135169060200135151562000ee6565b620002be60048036036040811015620005ff57600080fd5b506001600160a01b03813516906020013562000fa3565b6200032a600480360360208110156200062e57600080fd5b8101906020810181356401000000008111156200064a57600080fd5b8201836020820111156200065d57600080fd5b803590602001918460018302840111640100000000831117156200068057600080fd5b50909250905062000fe2565b6200035f62001124565b6200035f62001129565b6200035f60048036036040811015620006b857600080fd5b506001600160a01b03813581169160200135166200116f565b620004f76200117d565b6200032a60048036036040811015620006f357600080fd5b506001600160a01b038135169060200135151562001201565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620007965780601f106200076a5761010080835404028352916020019162000796565b820191906000526020600020905b8154815290600101906020018083116200077857829003601f168201915b505050505081565b60006007543a60001480620007b25750455a115b15620008235760005a9050620007cd333387876001620012be565b6001925060005a820390506064838202045a92505b805a840310156200081a57600180546040805160208082019390935281518082038401815290820190915280519101209055620007e2565b50505062000838565b62000833333386866001620012be565b600191505b5092915050565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a362000890338484620015fe565b5060015b92915050565b6000546001600160a01b03163314620008e7576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60056020526000908152604090205460ff1681565b60025481565b60006007543a60001480620009805750455a115b15620009f15760005a90506200099b338787876000620012be565b6001925060005a820390506064838202045a92505b805a84031015620009e857600180546040805160208082019390935281518082038401815290820190915280519101209055620009b0565b50505062000a06565b62000a01338686866000620012be565b600191505b509392505050565b601281565b6006546040805163fd6aad2560e01b81526001600160a01b0384811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b15801562000a6557600080fd5b505afa15801562000a7a573d6000803e3d6000fd5b505050506040513d602081101562000a9157600080fd5b505192915050565b60075481565b60085460ff161562000aad57fe5b6008805460ff191660011790556002541562000ac557fe5b6006546001600160a01b03161562000ad957fe5b60405162000ae79062001f03565b604051809103906000f08015801562000b04573d6000803e3d6000fd5b50600680546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f41668058a8e5b22194d07f3b7439ab60e6223d4085a60ac2537e8785aeb440fe929181900390910190a1600f60078190556040805160008152602081019290925280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a16040805182815290516001600160a01b0384169160009160008051602062002dca8339815191529181900360200190a362000be0828262001662565b60025550565b6000546001600160a01b0316331462000c33576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600654604080516001600160a01b039283168152918316602083015280517f41668058a8e5b22194d07f3b7439ab60e6223d4085a60ac2537e8785aeb440fe9281900390910190a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b60046020526000908152604090205460ff1681565b6000620008948262001702565b6006546001600160a01b031681565b60065460408051637c32cdd160e01b815290516000926001600160a01b031691637c32cdd1916004808301926020929190829003018186803b15801562000d1457600080fd5b505afa15801562000d29573d6000803e3d6000fd5b505050506040513d602081101562000d4057600080fd5b505190505b90565b6006546040805163e2095c0760e01b815260048101849052815160009384936001600160a01b039091169263e2095c079260248083019392829003018186803b15801562000d9557600080fd5b505afa15801562000daa573d6000803e3d6000fd5b505050506040513d604081101562000dc157600080fd5b5080516020909101519092509050915091565b600062000de283836200173e565b9392505050565b60006007543a6000148062000dfd5750455a115b1562000e185760005a90506200099b338787876001620012be565b62000a01338686866001620012be565b6000546001600160a01b0316331462000e75576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600754604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600755565b6000546001600160a01b031681565b604051806040016040528060048152602001634d41464960e01b81525081565b6000546001600160a01b0316331462000f33576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006007543a6000148062000fb75750455a115b1562000fd25760005a9050620007cd333387876000620012be565b62000833333386866000620012be565b6000546001600160a01b031633146200102f576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260038054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb1929091859185919081906020820190606083019087908015620010db5780601f10620010af57610100808354040283529160200191620010db565b820191906000526020600020905b815481529060010190602001808311620010bd57829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a16200111f6003838362001f11565b505050565b606481565b6006546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d916004808301926020929190829003018186803b15801562000d1457600080fd5b600062000de2838362001786565b60065460408051637f36e6dd60e11b8152815160009384936001600160a01b039091169263fe6dcdba9260048083019392829003018186803b158015620011c357600080fd5b505afa158015620011d8573d6000803e3d6000fd5b505050506040513d6040811015620011ef57600080fd5b50805160209091015190925090509091565b6000546001600160a01b031633146200124e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b816200130557826001600160a01b0316846001600160a01b031660008051602062002dca83398151915260006040518082815260200191505060405180910390a3620015f7565b6000620013128562001702565b9050828110156200135f576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b856001600160a01b0316856001600160a01b0316146200140057600062001387868862001786565b90506000198114620013fe5783811015620013e0576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b620013fe8688620013f8848863ffffffff620017e716565b620015fe565b505b8260008062001421886200141b868663ffffffff620017e716565b62001662565b848062001437575062001435888862001835565b155b1562001583576200145086606463ffffffff6200187916565b91508560011462001462578162001465565b60005b90506200148b6200147d838363ffffffff620018e616565b849063ffffffff620017e716565b600254909350620014a3908363ffffffff620017e716565b6002556040805183815290516000916001600160a01b038b169160008051602062002dca8339815191529181900360200190a36000620014e4898862001930565b905062001508816200141b84620014fb8562001702565b9063ffffffff620018e616565b6040805183815290516001600160a01b038316917f9c2270628a9b29d30ae96b6c4c14ed646ee134febdce38a5b77f2bde9cea2e20919081900360200190a2806001600160a01b0316896001600160a01b031660008051602062002dca833981519152846040518082815260200191505060405180910390a3505b856200159b84620014fb858563ffffffff620018e616565b14620015a357fe5b620015b8876200141b85620014fb8b62001702565b866001600160a01b0316886001600160a01b031660008051602062002dca833981519152856040518082815260200191505060405180910390a3505050505b5050505050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d90920190925280519101206200111f9082620016548662001a5c565b919063ffffffff62001a6816565b604080516662616c616e636560c81b815290519081900360070190206200168f9082620016548562001a5c565b6006546040805163516c1daf60e11b81526001600160a01b038581166004830152602482018590529151919092169163a2d83b5e91604480830192600092919082900301818387803b158015620016e557600080fd5b505af1158015620016fa573d6000803e3d6000fd5b505050505050565b604080516662616c616e636560c81b815290519081900360070190206000906200089490620017318462001a5c565b9063ffffffff62001bc416565b600062000de2826040516020018080646e6f6e636560d81b81525060050182815260200191505060405160208183030381529060405280519060200120620017318562001a5c565b600062000de282604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b815260140191505060405160208183030381529060405280519060200120620017318562001a5c565b6000818310156200182f576040805162461bcd60e51b815260206004820152600d60248201526c53756220756e646572666c6f7760981b604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526004602052604081205460ff168062000de25750506001600160a01b031660009081526005602052604090205460ff16919050565b600081620018bc576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b6000828481620018c857fe5b049050828481620018d557fe5b061562000de2576001019392505050565b60008282018381101562000de2576040805162461bcd60e51b815260206004820152600c60248201526b416464206f766572666c6f7760a01b604482015290519081900360640190fd5b6000806200193e8362001d3f565b905060006200194e85836200173e565b90506200196085838360010162001d5e565b6006546040805163949d225d60e01b815290516001600160a01b0390921691630af2b3e591620019f091899186918891600191889163949d225d916004808301926020929190829003018186803b158015620019bb57600080fd5b505afa158015620019d0573d6000803e3d6000fd5b505050506040513d6020811015620019e757600080fd5b50510362001da8565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562001a2557600080fd5b505afa15801562001a3a573d6000803e3d6000fd5b505050506040513d602081101562001a5157600080fd5b505195945050505050565b6001600160a01b031690565b600062001a758462001e05565b905062001a828162001e92565b62001a925762001a928462001eca565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831062001b0c5780518252601f19909201916020918201910162001aeb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462001b70576040519150601f19603f3d011682016040523d82523d6000602084013e62001b75565b606091505b5050905080620015f7576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b60008062001bd28462001e05565b905062001bdf8162001e92565b62001bef57506000905062000894565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b6020831062001c665780518252601f19909201916020918201910162001c45565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462001cc8576040519150601f19603f3d011682016040523d82523d6000602084013e62001ccd565b606091505b50915091508162001d1d576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101562001d3357600080fd5b50519695505050505050565b6000600019825b60019190910190600a90048062001d46575092915050565b6200111f826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b620016548662001a5c565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818162001dfa57fe5b069695505050505050565b600060ff60f81b30836040518060200162001e209062001f96565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159062000de257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b60606040518060200162001ede9062001f96565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b610ce38062001fc283390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062001f545782800160ff1982351617855562001f84565b8280016001018555821562001f84579182015b8281111562001f8457823582559160200191906001019062001f67565b5062001f9292915062001fa4565b5090565b6101258062002ca583390190565b62000d4591905b8082111562001f92576000815560010162001fab56fe608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1610074600161007960201b610b5e1760201c565b6100e2565b8054156100cd576040805162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b610bf2806100f16000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d1461012e578063a2d83b5e14610136578063e2095c0714610162578063fd6aad25146101a2578063fe6dcdba146101c85761009e565b80630af2b3e5146100a357806313af4035146100dc57806331fb7127146101045780637c32cdd11461011e5780638da5cb5b14610126575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d0565b604080516001600160a01b039092168252519081900360200190f35b610102600480360360208110156100f257600080fd5b50356001600160a01b03166101ea565b005b61010c6102a0565b60408051918252519081900360200190f35b61010c6102a5565b6100c06102ab565b61010c6102ba565b6101026004803603604081101561014c57600080fd5b506001600160a01b0381351690602001356102cb565b61017f6004803603602081101561017857600080fd5b50356104f7565b604080516001600160a01b03909316835260208301919091528051918290030190f35b61010c600480360360208110156101b857600080fd5b50356001600160a01b0316610515565b61017f610530565b60006101e360018363ffffffff61054516565b5092915050565b6000546001600160a01b03163314610236576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b606481565b60645b90565b6000546001600160a01b031681565b60006102c66001610578565b905090565b6000546001600160a01b03163314610317576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b60006103236001610578565b90508061038557604080518381526000602082015281516001600160a01b038616927f6525dcd4da5a2d32ad150a8dd0b3146308b330056548f3abba8c1853823665d7928290030190a261037f6001848463ffffffff61058016565b506104f3565b6000610391600161064b565b91506103a6905060018563ffffffff61067816565b15610418576103bd6001858563ffffffff61069916565b82610413576103cc60016107c1565b505060408051600081526020810184905281516001600160a01b038716927fada2bfe81770ef9fedf7e9e292cc1cee7aceb76b0986e261172e29b565866dd9928290030190a25b6104f0565b82158015906104305750606482108061043057508281105b156104f0576064821061049a5760008061044a60016107c1565b91509150816001600160a01b03167fada2bfe81770ef9fedf7e9e292cc1cee7aceb76b0986e261172e29b565866dd98286604051808381526020018281526020019250505060405180910390a250505b6104ac6001858563ffffffff61058016565b604080518481526020810184905281516001600160a01b038716927f6525dcd4da5a2d32ad150a8dd0b3146308b330056548f3abba8c1853823665d7928290030190a25b50505b5050565b60008061050b60018463ffffffff61054516565b915091505b915091565b6001600160a01b031660009081526002602052604090205490565b60008061053d600161064b565b915091509091565b60008061056d84600001846001018154811061055d57fe5b9060005260206000200154610901565b915091509250929050565b546000190190565b6001600160a01b0382166000908152600184016020526040902054156105ed576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006105f98383610916565b84546001810186556000868152602090200181905584549091506000190161062885828463ffffffff61092a16565b6001600160a01b0390941660009081526001909501602052505060409092205550565b805460009081906002111561066557506000905080610510565b61050b8360000160018154811061055d57fe5b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b038216600090815260018401602052604090205480610706576040805162461bcd60e51b815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b60006107128484610916565b9050600085600001838154811061072557fe5b906000526020600020015490506000818310156107545761074d87858563ffffffff610a0116565b9050610776565b8183111561076d5761074d87858563ffffffff61092a16565b505050506107bc565b8287600001828154811061078657fe5b6000918252602090912001558084146107b7576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b805460009081906001811161081d576040805162461bcd60e51b815260206004820152601a60248201527f5468652066616d696c7920646f6573206e6f7420657869737473000000000000604482015290519081900360640190fd5b6108308460000160018154811061055d57fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141561086b5760016108658582610b21565b506108fb565b600084600001600183038154811061087f57fe5b90600052602060002001549050808560000160018154811061089d57fe5b60009182526020909120015560001982016108b88682610b21565b5060016108cc86828463ffffffff610a0116565b9050808660010160006108de85610b14565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b196001600160a01b0381169160a09190911c90565b60a01b6001600160a01b0391909116171990565b81600181146109fa57600084600283048154811061094457fe5b906000526020600020015490505b828110156109f857828186600285048154811061096b57fe5b90600052602060002001600088600001868154811061098657fe5b60009182526020822001939093555091909155829060018701906109a984610b14565b6001600160a01b0316815260208101919091526040016000205560028204915081600114156109d7576109f8565b8460028304815481106109e657fe5b90600052602060002001549050610952565b505b9392505050565b8254829060001981015b81836002021015610b0b5785546002840290600090889083908110610a2c57fe5b90600052602060002001549050600082841115610a84576000896000018460010181548110610a5757fe5b9060005260206000200154905080831015610a7a57809150836001019350610a7e565b8291505b50610a87565b50805b80871115610a9757505050610b0b565b80878a6000018881548110610aa857fe5b9060005260206000200160008c6000018781548110610ac357fe5b60009182526020822001939093555091909155869060018b0190610ae684610b14565b6001600160a01b0316815260208101919091526040016000205550909350610a0b9050565b50509392505050565b196001600160a01b031690565b8154818355818111156107bc576000838152602090206107bc9181019083016102a891905b80821115610b5a5760008155600101610b46565b5090565b805415610ba8576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fea265627a7a723158202f447f348f0067e69bc9fb1e510ff506d9aa39afb94fa1a045daca25ef524e4f64736f6c63430005110032608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a7231582043d112d569a7e013a2f78a72336c2a640ebcba1e7ec3bfe028741a659a39953064736f6c63430005110032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a723158207c81328a162f91c1fa78e9b9baa45e3eb5f308bdb3bcc18fa1c72cc54a06347764736f6c63430005110032

Deployed Bytecode

0x60806040523480156200001157600080fd5b5060043610620002085760003560e01c80637c32cdd1116200011d578063a486309d11620000b1578063d83d170c116200007b578063d83d170c1462000696578063dd62ed3e14620006a0578063df60c84d14620006d1578063ff12bbf414620006db5762000208565b8063a486309d14620005b6578063a9059cbb14620005e7578063c47f00271462000616578063c57981b5146200068c5762000208565b806389f3546811620000f357806389f3546814620005495780638cec999314620005825780638da5cb5b14620005a257806395d89b4114620005ac5762000208565b80637c32cdd114620004cd578063826f0df014620004d757806389535803146200051a5762000208565b8063313ce56711620001a15780633b089391116200016b5780633b089391146200042c57806343684b21146200045557806370a08231146200047e57806376e75a0e14620004a75762000208565b8063313ce56714620003aa578063333d36ec14620003ca5780633767e33914620003f3578063399ae72414620003fd5762000208565b806313af403511620001e357806313af4035146200030157806316b627d1146200032c57806318160ddd146200035557806323b872dd14620003715762000208565b806306fdde03146200020d57806308acece2146200028f578063095ea7b314620002d2575b600080fd5b620002176200070c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200025357818101518382015260200162000239565b50505050905090810190601f168015620002815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002be60048036036040811015620002a757600080fd5b506001600160a01b0381351690602001356200079e565b604080519115158252519081900360200190f35b620002be60048036036040811015620002ea57600080fd5b506001600160a01b0381351690602001356200083f565b6200032a600480360360208110156200031957600080fd5b50356001600160a01b03166200089a565b005b620002be600480360360208110156200034457600080fd5b50356001600160a01b031662000951565b6200035f62000966565b60408051918252519081900360200190f35b620002be600480360360608110156200038957600080fd5b506001600160a01b038135811691602081013590911690604001356200096c565b620003b462000a0e565b6040805160ff9092168252519081900360200190f35b6200035f60048036036020811015620003e257600080fd5b50356001600160a01b031662000a13565b6200035f62000a99565b6200032a600480360360408110156200041557600080fd5b506001600160a01b03813516906020013562000a9f565b6200032a600480360360208110156200044457600080fd5b50356001600160a01b031662000be6565b620002be600480360360208110156200046d57600080fd5b50356001600160a01b031662000c9d565b6200035f600480360360208110156200049657600080fd5b50356001600160a01b031662000cb2565b620004b162000cbf565b604080516001600160a01b039092168252519081900360200190f35b6200035f62000cce565b620004f760048036036020811015620004ef57600080fd5b503562000d48565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6200035f600480360360408110156200053257600080fd5b506001600160a01b03813516906020013562000dd4565b620002be600480360360608110156200056157600080fd5b506001600160a01b0381358116916020810135909116906040013562000de9565b6200032a600480360360208110156200059a57600080fd5b503562000e28565b620004b162000eb7565b6200021762000ec6565b6200032a60048036036040811015620005ce57600080fd5b506001600160a01b038135169060200135151562000ee6565b620002be60048036036040811015620005ff57600080fd5b506001600160a01b03813516906020013562000fa3565b6200032a600480360360208110156200062e57600080fd5b8101906020810181356401000000008111156200064a57600080fd5b8201836020820111156200065d57600080fd5b803590602001918460018302840111640100000000831117156200068057600080fd5b50909250905062000fe2565b6200035f62001124565b6200035f62001129565b6200035f60048036036040811015620006b857600080fd5b506001600160a01b03813581169160200135166200116f565b620004f76200117d565b6200032a60048036036040811015620006f357600080fd5b506001600160a01b038135169060200135151562001201565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620007965780601f106200076a5761010080835404028352916020019162000796565b820191906000526020600020905b8154815290600101906020018083116200077857829003601f168201915b505050505081565b60006007543a60001480620007b25750455a115b15620008235760005a9050620007cd333387876001620012be565b6001925060005a820390506064838202045a92505b805a840310156200081a57600180546040805160208082019390935281518082038401815290820190915280519101209055620007e2565b50505062000838565b62000833333386866001620012be565b600191505b5092915050565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a362000890338484620015fe565b5060015b92915050565b6000546001600160a01b03163314620008e7576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60056020526000908152604090205460ff1681565b60025481565b60006007543a60001480620009805750455a115b15620009f15760005a90506200099b338787876000620012be565b6001925060005a820390506064838202045a92505b805a84031015620009e857600180546040805160208082019390935281518082038401815290820190915280519101209055620009b0565b50505062000a06565b62000a01338686866000620012be565b600191505b509392505050565b601281565b6006546040805163fd6aad2560e01b81526001600160a01b0384811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b15801562000a6557600080fd5b505afa15801562000a7a573d6000803e3d6000fd5b505050506040513d602081101562000a9157600080fd5b505192915050565b60075481565b60085460ff161562000aad57fe5b6008805460ff191660011790556002541562000ac557fe5b6006546001600160a01b03161562000ad957fe5b60405162000ae79062001f03565b604051809103906000f08015801562000b04573d6000803e3d6000fd5b50600680546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f41668058a8e5b22194d07f3b7439ab60e6223d4085a60ac2537e8785aeb440fe929181900390910190a1600f60078190556040805160008152602081019290925280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a16040805182815290516001600160a01b0384169160009160008051602062002dca8339815191529181900360200190a362000be0828262001662565b60025550565b6000546001600160a01b0316331462000c33576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600654604080516001600160a01b039283168152918316602083015280517f41668058a8e5b22194d07f3b7439ab60e6223d4085a60ac2537e8785aeb440fe9281900390910190a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b60046020526000908152604090205460ff1681565b6000620008948262001702565b6006546001600160a01b031681565b60065460408051637c32cdd160e01b815290516000926001600160a01b031691637c32cdd1916004808301926020929190829003018186803b15801562000d1457600080fd5b505afa15801562000d29573d6000803e3d6000fd5b505050506040513d602081101562000d4057600080fd5b505190505b90565b6006546040805163e2095c0760e01b815260048101849052815160009384936001600160a01b039091169263e2095c079260248083019392829003018186803b15801562000d9557600080fd5b505afa15801562000daa573d6000803e3d6000fd5b505050506040513d604081101562000dc157600080fd5b5080516020909101519092509050915091565b600062000de283836200173e565b9392505050565b60006007543a6000148062000dfd5750455a115b1562000e185760005a90506200099b338787876001620012be565b62000a01338686866001620012be565b6000546001600160a01b0316331462000e75576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600754604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600755565b6000546001600160a01b031681565b604051806040016040528060048152602001634d41464960e01b81525081565b6000546001600160a01b0316331462000f33576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006007543a6000148062000fb75750455a115b1562000fd25760005a9050620007cd333387876000620012be565b62000833333386866000620012be565b6000546001600160a01b031633146200102f576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260038054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb1929091859185919081906020820190606083019087908015620010db5780601f10620010af57610100808354040283529160200191620010db565b820191906000526020600020905b815481529060010190602001808311620010bd57829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a16200111f6003838362001f11565b505050565b606481565b6006546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d916004808301926020929190829003018186803b15801562000d1457600080fd5b600062000de2838362001786565b60065460408051637f36e6dd60e11b8152815160009384936001600160a01b039091169263fe6dcdba9260048083019392829003018186803b158015620011c357600080fd5b505afa158015620011d8573d6000803e3d6000fd5b505050506040513d6040811015620011ef57600080fd5b50805160209091015190925090509091565b6000546001600160a01b031633146200124e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b816200130557826001600160a01b0316846001600160a01b031660008051602062002dca83398151915260006040518082815260200191505060405180910390a3620015f7565b6000620013128562001702565b9050828110156200135f576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b856001600160a01b0316856001600160a01b0316146200140057600062001387868862001786565b90506000198114620013fe5783811015620013e0576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b620013fe8688620013f8848863ffffffff620017e716565b620015fe565b505b8260008062001421886200141b868663ffffffff620017e716565b62001662565b848062001437575062001435888862001835565b155b1562001583576200145086606463ffffffff6200187916565b91508560011462001462578162001465565b60005b90506200148b6200147d838363ffffffff620018e616565b849063ffffffff620017e716565b600254909350620014a3908363ffffffff620017e716565b6002556040805183815290516000916001600160a01b038b169160008051602062002dca8339815191529181900360200190a36000620014e4898862001930565b905062001508816200141b84620014fb8562001702565b9063ffffffff620018e616565b6040805183815290516001600160a01b038316917f9c2270628a9b29d30ae96b6c4c14ed646ee134febdce38a5b77f2bde9cea2e20919081900360200190a2806001600160a01b0316896001600160a01b031660008051602062002dca833981519152846040518082815260200191505060405180910390a3505b856200159b84620014fb858563ffffffff620018e616565b14620015a357fe5b620015b8876200141b85620014fb8b62001702565b866001600160a01b0316886001600160a01b031660008051602062002dca833981519152856040518082815260200191505060405180910390a3505050505b5050505050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d90920190925280519101206200111f9082620016548662001a5c565b919063ffffffff62001a6816565b604080516662616c616e636560c81b815290519081900360070190206200168f9082620016548562001a5c565b6006546040805163516c1daf60e11b81526001600160a01b038581166004830152602482018590529151919092169163a2d83b5e91604480830192600092919082900301818387803b158015620016e557600080fd5b505af1158015620016fa573d6000803e3d6000fd5b505050505050565b604080516662616c616e636560c81b815290519081900360070190206000906200089490620017318462001a5c565b9063ffffffff62001bc416565b600062000de2826040516020018080646e6f6e636560d81b81525060050182815260200191505060405160208183030381529060405280519060200120620017318562001a5c565b600062000de282604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b815260140191505060405160208183030381529060405280519060200120620017318562001a5c565b6000818310156200182f576040805162461bcd60e51b815260206004820152600d60248201526c53756220756e646572666c6f7760981b604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526004602052604081205460ff168062000de25750506001600160a01b031660009081526005602052604090205460ff16919050565b600081620018bc576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b6000828481620018c857fe5b049050828481620018d557fe5b061562000de2576001019392505050565b60008282018381101562000de2576040805162461bcd60e51b815260206004820152600c60248201526b416464206f766572666c6f7760a01b604482015290519081900360640190fd5b6000806200193e8362001d3f565b905060006200194e85836200173e565b90506200196085838360010162001d5e565b6006546040805163949d225d60e01b815290516001600160a01b0390921691630af2b3e591620019f091899186918891600191889163949d225d916004808301926020929190829003018186803b158015620019bb57600080fd5b505afa158015620019d0573d6000803e3d6000fd5b505050506040513d6020811015620019e757600080fd5b50510362001da8565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562001a2557600080fd5b505afa15801562001a3a573d6000803e3d6000fd5b505050506040513d602081101562001a5157600080fd5b505195945050505050565b6001600160a01b031690565b600062001a758462001e05565b905062001a828162001e92565b62001a925762001a928462001eca565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831062001b0c5780518252601f19909201916020918201910162001aeb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462001b70576040519150601f19603f3d011682016040523d82523d6000602084013e62001b75565b606091505b5050905080620015f7576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b60008062001bd28462001e05565b905062001bdf8162001e92565b62001bef57506000905062000894565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b6020831062001c665780518252601f19909201916020918201910162001c45565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462001cc8576040519150601f19603f3d011682016040523d82523d6000602084013e62001ccd565b606091505b50915091508162001d1d576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101562001d3357600080fd5b50519695505050505050565b6000600019825b60019190910190600a90048062001d46575092915050565b6200111f826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b620016548662001a5c565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818162001dfa57fe5b069695505050505050565b600060ff60f81b30836040518060200162001e209062001f96565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159062000de257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b60606040518060200162001ede9062001f96565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b610ce38062001fc283390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062001f545782800160ff1982351617855562001f84565b8280016001018555821562001f84579182015b8281111562001f8457823582559160200191906001019062001f67565b5062001f9292915062001fa4565b5090565b6101258062002ca583390190565b62000d4591905b8082111562001f92576000815560010162001fab56fe608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1610074600161007960201b610b5e1760201c565b6100e2565b8054156100cd576040805162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b610bf2806100f16000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d1461012e578063a2d83b5e14610136578063e2095c0714610162578063fd6aad25146101a2578063fe6dcdba146101c85761009e565b80630af2b3e5146100a357806313af4035146100dc57806331fb7127146101045780637c32cdd11461011e5780638da5cb5b14610126575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d0565b604080516001600160a01b039092168252519081900360200190f35b610102600480360360208110156100f257600080fd5b50356001600160a01b03166101ea565b005b61010c6102a0565b60408051918252519081900360200190f35b61010c6102a5565b6100c06102ab565b61010c6102ba565b6101026004803603604081101561014c57600080fd5b506001600160a01b0381351690602001356102cb565b61017f6004803603602081101561017857600080fd5b50356104f7565b604080516001600160a01b03909316835260208301919091528051918290030190f35b61010c600480360360208110156101b857600080fd5b50356001600160a01b0316610515565b61017f610530565b60006101e360018363ffffffff61054516565b5092915050565b6000546001600160a01b03163314610236576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b606481565b60645b90565b6000546001600160a01b031681565b60006102c66001610578565b905090565b6000546001600160a01b03163314610317576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b60006103236001610578565b90508061038557604080518381526000602082015281516001600160a01b038616927f6525dcd4da5a2d32ad150a8dd0b3146308b330056548f3abba8c1853823665d7928290030190a261037f6001848463ffffffff61058016565b506104f3565b6000610391600161064b565b91506103a6905060018563ffffffff61067816565b15610418576103bd6001858563ffffffff61069916565b82610413576103cc60016107c1565b505060408051600081526020810184905281516001600160a01b038716927fada2bfe81770ef9fedf7e9e292cc1cee7aceb76b0986e261172e29b565866dd9928290030190a25b6104f0565b82158015906104305750606482108061043057508281105b156104f0576064821061049a5760008061044a60016107c1565b91509150816001600160a01b03167fada2bfe81770ef9fedf7e9e292cc1cee7aceb76b0986e261172e29b565866dd98286604051808381526020018281526020019250505060405180910390a250505b6104ac6001858563ffffffff61058016565b604080518481526020810184905281516001600160a01b038716927f6525dcd4da5a2d32ad150a8dd0b3146308b330056548f3abba8c1853823665d7928290030190a25b50505b5050565b60008061050b60018463ffffffff61054516565b915091505b915091565b6001600160a01b031660009081526002602052604090205490565b60008061053d600161064b565b915091509091565b60008061056d84600001846001018154811061055d57fe5b9060005260206000200154610901565b915091509250929050565b546000190190565b6001600160a01b0382166000908152600184016020526040902054156105ed576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006105f98383610916565b84546001810186556000868152602090200181905584549091506000190161062885828463ffffffff61092a16565b6001600160a01b0390941660009081526001909501602052505060409092205550565b805460009081906002111561066557506000905080610510565b61050b8360000160018154811061055d57fe5b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b038216600090815260018401602052604090205480610706576040805162461bcd60e51b815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b60006107128484610916565b9050600085600001838154811061072557fe5b906000526020600020015490506000818310156107545761074d87858563ffffffff610a0116565b9050610776565b8183111561076d5761074d87858563ffffffff61092a16565b505050506107bc565b8287600001828154811061078657fe5b6000918252602090912001558084146107b7576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b805460009081906001811161081d576040805162461bcd60e51b815260206004820152601a60248201527f5468652066616d696c7920646f6573206e6f7420657869737473000000000000604482015290519081900360640190fd5b6108308460000160018154811061055d57fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141561086b5760016108658582610b21565b506108fb565b600084600001600183038154811061087f57fe5b90600052602060002001549050808560000160018154811061089d57fe5b60009182526020909120015560001982016108b88682610b21565b5060016108cc86828463ffffffff610a0116565b9050808660010160006108de85610b14565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b196001600160a01b0381169160a09190911c90565b60a01b6001600160a01b0391909116171990565b81600181146109fa57600084600283048154811061094457fe5b906000526020600020015490505b828110156109f857828186600285048154811061096b57fe5b90600052602060002001600088600001868154811061098657fe5b60009182526020822001939093555091909155829060018701906109a984610b14565b6001600160a01b0316815260208101919091526040016000205560028204915081600114156109d7576109f8565b8460028304815481106109e657fe5b90600052602060002001549050610952565b505b9392505050565b8254829060001981015b81836002021015610b0b5785546002840290600090889083908110610a2c57fe5b90600052602060002001549050600082841115610a84576000896000018460010181548110610a5757fe5b9060005260206000200154905080831015610a7a57809150836001019350610a7e565b8291505b50610a87565b50805b80871115610a9757505050610b0b565b80878a6000018881548110610aa857fe5b9060005260206000200160008c6000018781548110610ac357fe5b60009182526020822001939093555091909155869060018b0190610ae684610b14565b6001600160a01b0316815260208101919091526040016000205550909350610a0b9050565b50509392505050565b196001600160a01b031690565b8154818355818111156107bc576000838152602090206107bc9181019083016102a891905b80821115610b5a5760008155600101610b46565b5090565b805415610ba8576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fea265627a7a723158202f447f348f0067e69bc9fb1e510ff506d9aa39afb94fa1a045daca25ef524e4f64736f6c63430005110032608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a7231582043d112d569a7e013a2f78a72336c2a640ebcba1e7ec3bfe028741a659a39953064736f6c63430005110032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a723158207c81328a162f91c1fa78e9b9baa45e3eb5f308bdb3bcc18fa1c72cc54a06347764736f6c63430005110032

Deployed Bytecode Sourcemap

13321:7642:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13321:7642:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13919:36;;;:::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;13919:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20334:196;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20334:196:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19915:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19915:213:0;;;;;;;;:::i;11202:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11202:134:0;-1:-1:-1;;;;;11202:134:0;;:::i;:::-;;14101:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14101:43:0;-1:-1:-1;;;;;14101:43:0;;:::i;13778:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;20538:204;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20538:204:0;;;;;;;;;;;;;;;;;:::i;14007:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19398:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19398:115:0;-1:-1:-1;;;;;19398:115:0;;:::i;14180:23::-;;;:::i;14230:487::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14230:487:0;;;;;;;;:::i;18807:149::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18807:149:0;-1:-1:-1;;;;;18807:149:0;;:::i;14049:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14049:45:0;-1:-1:-1;;;;;14049:45:0;;:::i;19653:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19653:109:0;-1:-1:-1;;;;;19653:109:0;;:::i;14153:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;14153:20:0;;;;;;;;;;;;;;18964:93;;;:::i;19166:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19166:116:0;;:::i;:::-;;;;-1:-1:-1;;;;;19166:116:0;;;;;;;;;;;;;;;;;;;;;19521:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19521:124:0;;;;;;;;:::i;20750:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20750:210:0;;;;;;;;;;;;;;;;;:::i;18668:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18668:131:0;;:::i;10888:20::-;;;:::i;13962:38::-;;;:::i;18154:179::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18154:179:0;;;;;;;;;;:::i;20136:190::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20136:190:0;;;;;;;;:::i;18534:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18534:126:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18534:126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18534:126: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;18534:126:0;;-1:-1:-1;18534:126:0;-1:-1:-1;18534:126:0;:::i;13877:33::-;;;:::i;19065:93::-;;;:::i;19770:137::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19770:137:0;;;;;;;;;;:::i;19290:100::-;;;:::i;18341:185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18341:185:0;;;;;;;;;;:::i;13919:36::-;;;;;;;;;;;;;;;-1:-1:-1;;13919:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20334:196::-;20427:4;20408:8;;6052:11;6067:1;6052:16;:46;;;;6084:14;6072:9;:26;6052:46;6048:425;;;6115:16;6134:9;6115:28;;20444:56;20458:10;20470;20482:3;20487:6;20495:4;20444:13;:56::i;:::-;20518:4;20511:11;;6174:13;6201:9;6190:20;;;-1:-1:-1;6262:3:0;6243:15;;;6242:23;6291:9;6280:20;;6315:113;6345:6;6333:9;6322:8;:20;:29;6315:113;;;6406:4;;;6389:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;6389:22:0;;;;;;6379:33;;;;;6372:40;;6315:113;;;6048:425;;;;;;20444:56;20458:10;20470;20482:3;20487:6;20495:4;20444:13;:56::i;:::-;20518:4;20511:11;;6460:1;20334:196;;;;;:::o;19915:213::-;20006:38;;;;;;;;19984:4;;-1:-1:-1;;;;;20006:38:0;;;20015:10;;20006:38;;;;;;;;;;20055:43;20069:10;20081:8;20091:6;20055:13;:43::i;:::-;-1:-1:-1;20116:4:0;19915:213;;;;;:::o;11202:134::-;11154:5;;-1:-1:-1;;;;;11154:5:0;11140:10;:19;11132:42;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;;;;11289:5;;11271:32;;;-1:-1:-1;;;;;11289:5:0;;;11271:32;;;;;;;;;;;;;;;;;;;;;11314:5;:14;;-1:-1:-1;;;;;;11314:14:0;-1:-1:-1;;;;;11314:14:0;;;;;;;;;;11202:134::o;14101:43::-;;;;;;;;;;;;;;;:::o;13778:26::-;;;;:::o;20538:204::-;20643:4;20624:8;;6052:11;6067:1;6052:16;:46;;;;6084:14;6072:9;:26;6052:46;6048:425;;;6115:16;6134:9;6115:28;;20660:52;20674:10;20686:5;20693:3;20698:6;20706:5;20660:13;:52::i;:::-;20730:4;20723:11;;6174:13;6201:9;6190:20;;;-1:-1:-1;6262:3:0;6243:15;;;6242:23;6291:9;6280:20;;6315:113;6345:6;6333:9;6322:8;:20;:29;6315:113;;;6406:4;;;6389:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;6389:22:0;;;;;;6379:33;;;;;6372:40;;6315:113;;;6048:425;;;;;;20660:52;20674:10;20686:5;20693:3;20698:6;20706:5;20660:13;:52::i;:::-;20730:4;20723:11;;6460:1;20538:204;;;;;;:::o;14007:35::-;14040:2;14007:35;:::o;19398:115::-;19484:6;;:21;;;-1:-1:-1;;;19484:21:0;;-1:-1:-1;;;;;19484:21:0;;;;;;;;;19457:7;;19484:6;;;;;:14;;:21;;;;;;;;;;;;;;;:6;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;19484:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19484:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19484:21:0;;19398:115;-1:-1:-1;;19398:115:0:o;14180:23::-;;;;:::o;14230:487::-;14327:6;;;;14326:7;14319:15;;;;14345:6;:13;;-1:-1:-1;;14345:13:0;14354:4;14345:13;;;14376:11;;:16;14369:24;;;;14419:6;;-1:-1:-1;;;;;14419:6:0;14411:29;14404:37;;;;14461:12;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;14452:6:0;:21;;-1:-1:-1;;;;;;14452:21:0;-1:-1:-1;;;;;14452:21:0;;;;;;;;14489:38;;;-1:-1:-1;14489:38:0;;14519:6;;;;14489:38;;;;;;;;;;;;;;;;;14549:2;14538:8;:13;;;14567:24;;;14579:1;14567:24;;;;;;;;;;;;;;;;;;;;;14607:34;;;;;;;;-1:-1:-1;;;;;14607:34:0;;;14624:1;;-1:-1:-1;;;;;;;;;;;14607:34:0;;;;;;;;14652:25;14664:3;14669:7;14652:11;:25::i;:::-;14688:11;:21;-1:-1:-1;14230:487:0:o;18807:149::-;11154:5;;-1:-1:-1;;;;;11154:5:0;11140:10;:19;11132:42;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;;;;18895:6;;18877:44;;;-1:-1:-1;;;;;18895:6:0;;;18877:44;;;;;;;;;;;;;;;;;;;;;18932:6;:16;;-1:-1:-1;;;;;;18932:16:0;-1:-1:-1;;;;;18932:16:0;;;;;;;;;;18807:149::o;14049:45::-;;;;;;;;;;;;;;;:::o;19653:109::-;19710:7;19737:17;19748:5;19737:10;:17::i;14153:20::-;;;-1:-1:-1;;;;;14153:20:0;;:::o;18964:93::-;19033:6;;:16;;;-1:-1:-1;;;19033:16:0;;;;19006:7;;-1:-1:-1;;;;;19033:6:0;;:14;;:16;;;;;;;;;;;;;;:6;:16;;;5:2:-1;;;;30:1;27;20:12;5:2;19033:16:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19033:16:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19033:16:0;;-1:-1:-1;18964:93:0;;:::o;19166:116::-;19258:6;;:16;;;-1:-1:-1;;;19258:16:0;;;;;;;;;;19222:7;;;;-1:-1:-1;;;;;19258:6:0;;;;:12;;:16;;;;;;;;;;;:6;:16;;;5:2:-1;;;;30:1;27;20:12;5:2;19258:16:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19258:16:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19258:16:0;;;;;;;;;-1:-1:-1;19258:16:0;-1:-1:-1;19166:116:0;;;:::o;19521:124::-;19591:7;19618:19;19625:5;19632:4;19618:6;:19::i;:::-;19611:26;19521:124;-1:-1:-1;;;19521:124:0:o;20750:210::-;20862:4;20843:8;;6052:11;6067:1;6052:16;:46;;;;6084:14;6072:9;:26;6052:46;6048:425;;;6115:16;6134:9;6115:28;;20879:51;20893:10;20905:5;20912:3;20917:6;20925:4;20879:13;:51::i;6048:425::-;20879:51;20893:10;20905:5;20912:3;20917:6;20925:4;20879:13;:51::i;18668:131::-;11154:5;;-1:-1:-1;;;;;11154:5:0;11140:10;:19;11132:42;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;;;;18750:8;;18738:27;;;;;;;;;;;;;;;;;;;;;;;;18776:8;:15;18668:131::o;10888:20::-;;;-1:-1:-1;;;;;10888:20:0;;:::o;13962:38::-;;;;;;;;;;;;;;-1:-1:-1;;;13962:38:0;;;;:::o;18154:179::-;11154:5;;-1:-1:-1;;;;;11154:5:0;11140:10;:19;11132:42;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;;;;18249:32;;;-1:-1:-1;;;;;18249:32:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18292:18:0;;;;;;;;:11;:18;;;;;:33;;-1:-1:-1;;18292:33:0;;;;;;;;;;18154:179::o;20136:190::-;20222:4;20203:8;;6052:11;6067:1;6052:16;:46;;;;6084:14;6072:9;:26;6052:46;6048:425;;;6115:16;6134:9;6115:28;;20239:57;20253:10;20265;20277:3;20282:6;20290:5;20239:13;:57::i;6048:425::-;20239:57;20253:10;20265;20277:3;20282:6;20290:5;20239:13;:57::i;18534:126::-;11154:5;;-1:-1:-1;;;;;11154:5:0;11140:10;:19;11132:42;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;;;;18609:20;;;;;;18617:4;18609:20;;;-1:-1:-1;;18609:20:0;;;;;;;;;;;;;;;;;;;18617:4;;18623:5;;;;18609:20;;;;;;;;;;;18617:4;;18609:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18609:20:0;;;;;;;;;;;;;;;1:33:-1;99:1;81:16;;;74:27;18609:20:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;18609:20:0;;;;-1:-1:-1;18609:20:0;;-1:-1:-1;;;;;;18609:20:0;18640:12;:4;18647:5;;18640:12;:::i;:::-;;18534:126;;:::o;13877:33::-;13907:3;13877:33;:::o;19065:93::-;19137:6;;:13;;;-1:-1:-1;;;19137:13:0;;;;19110:7;;-1:-1:-1;;;;;19137:6:0;;:11;;:13;;;;;;;;;;;;;;:6;:13;;;5:2:-1;;;;30:1;27;20:12;19770:137:0;19845:7;19872:27;19883:5;19890:8;19872:10;:27::i;19290:100::-;19370:6;;:12;;;-1:-1:-1;;;19370:12:0;;;;19334:7;;;;-1:-1:-1;;;;;19370:6:0;;;;:10;;:12;;;;;;;;;;;:6;:12;;;5:2:-1;;;;30:1;27;20:12;5:2;19370:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19370:12:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19370:12:0;;;;;;;;;-1:-1:-1;19370:12:0;-1:-1:-1;19290:100:0;;:::o;18341:185::-;11154:5;;-1:-1:-1;;;;;11154:5:0;11140:10;:19;11132:42;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;-1:-1:-1;;;11132:42:0;;;;;;;;;;;;;;;18438:34;;;-1:-1:-1;;;;;18438:34:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18483:20:0;;;;;;;;:13;:20;;;;;:35;;-1:-1:-1;;18483:35:0;;;;;;;;;;18341:185::o;16652:1494::-;16776:11;16772:93;;16825:3;-1:-1:-1;;;;;16809:23:0;16818:5;-1:-1:-1;;;;;16809:23:0;-1:-1:-1;;;;;;;;;;;16830:1:0;16809:23;;;;;;;;;;;;;;;;;;16847:7;;16772:93;16877:19;16899:17;16910:5;16899:10;:17::i;:::-;16877:39;;16950:6;16935:11;:21;;16927:52;;;;;-1:-1:-1;;;16927:52:0;;;;;;;;;;;;-1:-1:-1;;;16927:52:0;;;;;;;;;;;;;;;17005:9;-1:-1:-1;;;;;16996:18:0;:5;-1:-1:-1;;;;;16996:18:0;;16992:316;;17031:21;17055:28;17066:5;17073:9;17055:10;:28::i;:::-;17031:52;;-1:-1:-1;;17102:13:0;:25;17098:199;;17173:6;17156:13;:23;;17148:56;;;;;-1:-1:-1;;;17148:56:0;;;;;;;;;;;;-1:-1:-1;;;17148:56:0;;;;;;;;;;;;;;;17223:58;17237:5;17244:9;17255:25;:13;17273:6;17255:25;:17;:25;:::i;:::-;17223:13;:58::i;:::-;16992:316;;17338:6;17320:15;;17411:43;17423:5;17430:23;:11;17338:6;17430:23;:15;:23;:::i;:::-;17411:11;:43::i;:::-;17471:7;:38;;;;17483:26;17498:5;17505:3;17483:14;:26::i;:::-;17482:27;17471:38;17467:510;;;17533:20;:6;13907:3;17533:20;:15;:20;:::i;:::-;17526:27;;17575:6;17585:1;17575:11;:22;;17593:4;17575:22;;;17589:1;17575:22;17568:29;-1:-1:-1;17622:27:0;17634:14;:4;17568:29;17634:14;:8;:14;:::i;:::-;17622:7;;:27;:11;:27;:::i;:::-;17678:11;;17612:37;;-1:-1:-1;17678:21:0;;17694:4;17678:21;:15;:21;:::i;:::-;17664:11;:35;17719:33;;;;;;;;17743:1;;-1:-1:-1;;;;;17719:33:0;;;-1:-1:-1;;;;;;;;;;;17719:33:0;;;;;;;;17769:14;17786:26;17798:5;17805:6;17786:11;:26::i;:::-;17769:43;;17827:49;17839:6;17847:28;17870:4;17847:18;17858:6;17847:10;:18::i;:::-;:22;:28;:22;:28;:::i;17827:49::-;17896:20;;;;;;;;-1:-1:-1;;;;;17896:20:0;;;;;;;;;;;;;17952:6;-1:-1:-1;;;;;17936:29:0;17945:5;-1:-1:-1;;;;;17936:29:0;-1:-1:-1;;;;;;;;;;;17960:4:0;17936:29;;;;;;;;;;;;;;;;;;17467:510;;18027:6;17996:27;18015:7;17996:14;:4;18005;17996:14;:8;:14;:::i;:27::-;:37;17989:45;;;;18047:46;18059:3;18064:28;18084:7;18064:15;18075:3;18064:10;:15::i;18047:46::-;18125:3;-1:-1:-1;;;;;18109:29:0;18118:5;-1:-1:-1;;;;;18109:29:0;-1:-1:-1;;;;;;;;;;;18130:7:0;18109:29;;;;;;;;;;;;;;;;;;16652:1494;;;;;;;;;;:::o;15360:188::-;15482:39;;;-1:-1:-1;;;15482:39:0;;;;;;;;-1:-1:-1;;;;;;15482:39:0;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;15482:39:0;;;;;;;15472:50;;;;;15452:88;;15532:6;15452:13;15459:5;15452:6;:13::i;:::-;:19;:88;;:19;:88;:::i;15736:174::-;13850:20;;;-1:-1:-1;;;13850:20:0;;;;;;;;;;;;15810:51;;15851:8;15810:13;15817:5;15810:6;:13::i;:51::-;15872:6;;:30;;;-1:-1:-1;;;15872:30:0;;-1:-1:-1;;;;;15872:30:0;;;;;;;;;;;;;;;:6;;;;;:13;;:30;;;;;:6;;:30;;;;;;;:6;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;15872:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15872:30:0;;;;15736:174;;:::o;14839:133::-;13850:20;;;-1:-1:-1;;;13850:20:0;;;;;;;;;;;;14897:7;;14932:31;;:13;14939:5;14932:6;:13::i;:::-;:18;:31;:18;:31;:::i;15178:174::-;15246:7;15281:62;15336:4;15310:31;;;;;;-1:-1:-1;;;15310:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15310:31:0;;;15300:42;;;;;;15281:13;15288:5;15281:6;:13::i;14980:190::-;15056:7;15091:70;15150:8;15120:39;;;;;;-1:-1:-1;;;15120:39:0;;;;;;-1:-1:-1;;;;;15120:39:0;-1:-1:-1;;;;;15120:39:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15120:39:0;;;15110:50;;;;;;15091:13;15098:5;15091:6;:13::i;7356:141::-;7414:7;7447:1;7442;:6;;7434:32;;;;;-1:-1:-1;;;7434:32:0;;;;;;;;;;;;-1:-1:-1;;;7434:32:0;;;;;;;;;;;;;;;-1:-1:-1;7484:5:0;;;7356:141::o;15918:145::-;-1:-1:-1;;;;;16017:20:0;;15993:4;16017:20;;;:13;:20;;;;;;;;;:38;;-1:-1:-1;;;;;;;16039:16:0;;;;;:11;:16;;;;;;;;;15918:145;-1:-1:-1;15918:145:0:o;7889:232::-;7952:7;7980:6;7972:30;;;;;-1:-1:-1;;;7972:30:0;;;;;;;;;;;;-1:-1:-1;;;7972:30:0;;;;;;;;;;;;;;;8013:9;8029:1;8025;:5;;;;;;8013:17;;8049:1;8045;:5;;;;;;:10;8041:52;;8080:1;8076:5;8112:1;7889:232;-1:-1:-1;;;7889:232:0:o;7184:164::-;7242:7;7274:5;;;7298:6;;;;7290:31;;;;;-1:-1:-1;;;7290:31:0;;;;;;;;;;;;-1:-1:-1;;;7290:31:0;;;;;;;;;;;;;;16301:343;16371:14;16398:17;16418:29;16440:6;16418:21;:29::i;:::-;16398:49;;16458:13;16474:24;16481:5;16488:9;16474:6;:24::i;:::-;16458:40;;16509:38;16519:5;16526:9;16537:5;16545:1;16537:9;16509;:38::i;:::-;16567:6;;16617:13;;;-1:-1:-1;;;16617:13:0;;;;-1:-1:-1;;;;;16567:6:0;;;;:16;;16584:51;;16592:5;;16599;;16606:9;;16567:6;;;;16617:11;;:13;;;;;;;;;;;;;;16567:6;16617:13;;;5:2:-1;;;;30:1;27;20:12;5:2;16617:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16617:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16617:13:0;:17;16584:7;:51::i;:::-;16567:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16567:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16567:69:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16567:69:0;;16301:343;-1:-1:-1;;;;;16301:343:0:o;14727:104::-;-1:-1:-1;;;;;14812:10:0;;14727:104::o;9669:568::-;9785:17;9817:21;9830:7;9817:12;:21::i;:::-;9785:54;;9855:37;9885:5;9855:21;:37::i;:::-;9850:86;;9909:15;9916:7;9909:6;:15::i;:::-;10040:124;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10040:124:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;10006:169:0;;;;9989:12;;-1:-1:-1;;;;;10006:19:0;;;10040:124;10006:169;;;25:18:-1;10006:169:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10006:169:0;;;;;;;;;;;;;;;;;;;;;;;;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;;9988:187:0;;;10196:7;10188:41;;;;;-1:-1:-1;;;10188:41:0;;;;;;;;;;;;-1:-1:-1;;;10188:41:0;;;;;;;;;;;;;;10245:610;10338:7;10358:17;10390:21;10403:7;10390:12;:21::i;:::-;10358:54;;10428:37;10458:5;10428:21;:37::i;:::-;10423:88;;-1:-1:-1;10497:1:0;;-1:-1:-1;10482:17:0;;10423:88;10639:98;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10639:98:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;10599:149:0;;;;10564:12;;10578:17;;-1:-1:-1;;;;;10599:25:0;;;10639:98;;10599:149;;;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10599:149:0;;;;;;;;;;;;;;;;;;;;;;;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;;10563:185:0;;;;10769:7;10761:41;;;;;-1:-1:-1;;;10761:41:0;;;;;;;;;;;;-1:-1:-1;;;10761:41:0;;;;;;;;;;;;;;;10831:4;10820:27;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10820:27:0;;10245:610;-1:-1:-1;;;;;;10245:610:0:o;6509:270::-;6573:7;-1:-1:-1;;6644:5:0;6662:83;6705:9;;;;;;6688:2;6680:10;;;6662:83;;-1:-1:-1;6764:7:0;6509:270;-1:-1:-1;;6509:270:0:o;15556:172::-;15640:80;15696:4;15670:31;;;;;;-1:-1:-1;;;15670:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15670:31:0;;;15660:42;;;;;;15712:6;15704:15;;15640:13;15647:5;15640:6;:13::i;16071:222::-;16217:31;;;-1:-1:-1;;;;;;16217:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16217:31:0;;;;;;;16207:42;;;;;16164:7;;16283:1;16276:8;;16207:42;16276:8;16268:17;;;;;;16071:222;-1:-1:-1;;;;;;16071:222:0:o;8978:439::-;9039:7;9194:4;9189:10;;9234:4;9266:7;9310:30;;;;;;;;:::i;:::-;21:26:-1;;;-1:-1;;21:26;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;;;9300:41:0;;41:4:-1;30:16;;;9300:41:0;-1:-1:-1;;;;;;9146:218:0;;;;;;;;;;;;;-1:-1:-1;;;;;;9146:218:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9146:218:0;;;;;;;9114:269;;;;;;8978:439;-1:-1:-1;;8978:439:0:o;8156:321::-;8214:4;8320:18;;8356:22;;;;;:113;;-1:-1:-1;8402:66:0;8382:87;;;8349:120;-1:-1:-1;;8156:321:0:o;9425:236::-;9477:21;9501:30;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;9501:30:0;9477:54;;9644:7;9633:8;9627:15;9620:4;9610:8;9606:19;9603:1;9595:57;9591:62;9590:64;;:::o;13321:7642::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13321:7642:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13321:7642:0;;;-1:-1:-1;13321:7642:0;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

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