ETH Price: $3,769.41 (+4.32%)
Gas: 7 Gwei

Token

shuffle.monster token 🃏 (Shuf)
 

Overview

Max Total Supply

1,006,047.770534943849111919 Shuf

Holders

1,791

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.67478586 Shuf

Value
$0.00
0xa305fab8bda7e1638235b054889b3217441dd645
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ShuffleToken

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-07-21
*/

// File: contracts/commons/Ownable.sol

pragma solidity ^0.5.10;


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;
    }
}

// File: contracts/commons/AddressMinHeap.sol

pragma solidity ^0.5.10;

/*
    @author Agustin Aguilar <[email protected]>
*/


library AddressMinHeap {
    using AddressMinHeap for AddressMinHeap.Heap;

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

    function initialize(Heap storage _heap) internal {
        require(_heap.entries.length == 0, "already initialized");
        _heap.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(Heap storage _heap) internal view returns(address, uint256) {
        if (_heap.entries.length < 2) {
            return (address(0), 0);
        }

        return decode(_heap.entries[1]);
    }

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

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

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

    // RemoveMax pops off the root element of the heap (the highest value here) and rebalances the heap
    function popTop(Heap storage _heap) internal returns(address _addr, uint256 _value) {
        // Ensure the heap exists
        uint256 heapLength = _heap.entries.length;
        require(heapLength > 1, "The heap does not exists");

        // take the root value of the heap
        (_addr, _value) = decode(_heap.entries[1]);
        _heap.index[_addr] = 0;

        if (heapLength == 2) {
            _heap.entries.length = 1;
        } else {
            // Takes the last element of the array and put it at the root
            uint256 val = _heap.entries[heapLength - 1];
            _heap.entries[1] = val;

            // Delete the last element from the array
            _heap.entries.length = heapLength - 1;

            // Start at the top
            uint256 ind = 1;

            // Bubble down
            ind = _heap.bubbleDown(ind, val);

            // Update index
            _heap.index[decodeAddress(val)] = ind;
        }
    }

    // Inserts adds in a value to our heap.
    function insert(Heap storage _heap, address _addr, uint256 _value) internal {
        require(_heap.index[_addr] == 0, "The entry already exists");

        // Add the value to the end of our array
        uint256 encoded = encode(_addr, _value);
        _heap.entries.push(encoded);

        // Start at the end of the array
        uint256 currentIndex = _heap.entries.length - 1;

        // Bubble Up
        currentIndex = _heap.bubbleUp(currentIndex, encoded);

        // Update index
        _heap.index[_addr] = currentIndex;
    }

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

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

        if (can < val) {
            // Bubble down
            newInd = _heap.bubbleDown(ind, can);
        } else if (can > val) {
            // Bubble up
            newInd = _heap.bubbleUp(ind, can);
        } else {
            // no changes needed
            return;
        }

        // Update entry
        _heap.entries[newInd] = can;

        // Update index
        if (newInd != ind) {
            _heap.index[_addr] = newInd;
        }
    }

    function bubbleUp(Heap storage _heap, uint256 _ind, uint256 _val) internal returns (uint256 ind) {
        // Bubble up
        ind = _ind;
        if (ind != 1) {
            uint256 parent = _heap.entries[ind / 2];
            while (parent < _val) {
                // If the parent value is lower than our current value, we swap them
                (_heap.entries[ind / 2], _heap.entries[ind]) = (_val, parent);

                // Update moved Index
                _heap.index[decodeAddress(parent)] = ind;

                // change our current Index to go up to the parent
                ind = ind / 2;
                if (ind == 1) {
                    break;
                }

                // Update parent
                parent = _heap.entries[ind / 2];
            }
        }
    }

    function bubbleDown(Heap storage _heap, uint256 _ind, uint256 _val) internal returns (uint256 ind) {
        // Bubble down
        ind = _ind;

        uint256 lenght = _heap.entries.length;
        uint256 target = lenght - 1;

        while (ind * 2 < lenght) {
            // get the current index of the children
            uint256 j = ind * 2;

            // left child value
            uint256 leftChild = _heap.entries[j];

            // Store the value of the child
            uint256 childValue;

            if (target > j) {
                // The parent has two childs 👨‍👧‍👦

                // Load right child value
                uint256 rightChild = _heap.entries[j + 1];

                // Compare the left and right child.
                // if the rightChild is greater, then point j to it's index
                // and save the value
                if (leftChild < rightChild) {
                    childValue = rightChild;
                    j = j + 1;
                } else {
                    // The left child is greater
                    childValue = leftChild;
                }
            } else {
                // The parent has a single child 👨‍👦
                childValue = leftChild;
            }

            // Check if the child has a lower value
            if (_val > childValue) {
                break;
            }

            // else swap the value
            (_heap.entries[ind], _heap.entries[j]) = (childValue, _val);

            // Update moved Index
            _heap.index[decodeAddress(childValue)] = ind;

            // and let's keep going down the heap
            ind = j;
        }
    }
}

// File: contracts/commons/StorageUnit.sol

pragma solidity ^0.5.10;


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];
    }
}

// File: contracts/utils/IsContract.sol

pragma solidity ^0.5.10;


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);
    }
}

// File: contracts/utils/DistributedStorage.sol

pragma solidity ^0.5.10;




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

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

    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));
    }
}

// File: contracts/utils/SafeMath.sol

pragma solidity ^0.5.10;


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;
    }
}

// File: contracts/utils/Math.sol

pragma solidity ^0.5.10;


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;
        }
    }
}

// File: contracts/utils/GasPump.sol

pragma solidity ^0.5.10;


contract GasPump {
    bytes32 private stub;

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

// File: contracts/interfaces/IERC20.sol

pragma solidity ^0.5.10;


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);
}

// File: contracts/ShuffleToken.sol

pragma solidity ^0.5.10;









contract ShuffleToken is Ownable, GasPump, IERC20 {
    using AddressMinHeap for AddressMinHeap.Heap;
    using DistributedStorage for bytes32;
    using SafeMath for uint256;

    // Shuffle events
    event Winner(address indexed _addr, uint256 _value);

    // Heap events
    event JoinHeap(address indexed _address, uint256 _balance, uint256 _prevSize);
    event LeaveHeap(address indexed _address, uint256 _balance, uint256 _prevSize);

    // Managment events
    event SetName(string _prev, string _new);
    event SetExtraGas(uint256 _prev, uint256 _new);
    event WhitelistFrom(address _addr, bool _whitelisted);
    event WhitelistTo(address _addr, bool _whitelisted);

    uint256 public totalSupply;

    bytes32 private constant BALANCE_KEY = keccak256("balance");
    bytes32 private constant NONCE_KEY = keccak256("nonce");

    // game
    uint256 public constant FEE = 100;
    uint256 public constant TOP_SIZE = 512;

    // heap
    AddressMinHeap.Heap private heap;

    // metadata
    string public name = "shuffle.monster token 🃏";
    string public constant symbol = "Shuf";
    uint8 public constant decimals = 18;

    // fee whitelist
    mapping(address => bool) public whitelistFrom;
    mapping(address => bool) public whitelistTo;

    // internal
    uint256 public extraGas;

    constructor(
        address _to,
        uint256 _amount
    ) public {
        heap.initialize();
        extraGas = 15;
        emit SetExtraGas(0, extraGas);
        emit Transfer(address(0), _to, _amount);
        _setBalance(_to, _amount);
        totalSupply = _amount;
    }

    ///
    // Storage access functions
    ///

    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));
        _computeHeap(_addr, _balance);
    }

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

    ///
    // Internal methods
    ///

    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) {
        // Get order of magnitude of the tx
        uint256 magnitude = Math.orderOfMagnitude(_value);
        // Pull nonce for a given order of magnitude
        uint256 nonce = _nonce(_from, magnitude);
        _setNonce(_from, magnitude, nonce + 1);
        // pick entry from heap
        (winner,) = heap.entry(_random(_from, nonce, magnitude, heap.size() - 1));
    }

    function _transferFrom(address _operator, address _from, address _to, uint256 _value) 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;

        if (!_isWhitelisted(_from, _to)) {
            uint256 burn = _value.divRound(FEE);
            uint256 shuf = _value == 1 ? 0 : burn;
            receive = receive.sub(burn.add(shuf));

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

            // Burn tokens
            totalSupply = totalSupply.sub(burn);
            emit Transfer(_from, address(0), burn);

            // Shuffle tokens
            // Pick winner pseudo-randomly
            address winner = _pickWinner(_from, _value);
            // Transfer balance to winner
            _setBalance(winner, _balanceOf(winner).add(shuf));
            emit Winner(winner, shuf);
            emit Transfer(_from, winner, shuf);
        }

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

    function _computeHeap(address _addr, uint256 _new) internal {
        uint256 size = heap.size();
        if (size == 0) {
            emit JoinHeap(_addr, _new, 0);
            heap.insert(_addr, _new);
            return;
        }

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

        if (heap.has(_addr)) {
            heap.update(_addr, _new);
            if (_new == 0) {
                heap.popTop();
                emit LeaveHeap(_addr, 0, size);
            }
        } else {
            // IF heap is full or new bal is better than pop heap
            if (_new != 0 && (size < TOP_SIZE || lastBal < _new)) {
                // If heap is full pop heap
                if (size >= TOP_SIZE) {
                    (address _poped, uint256 _balance) = heap.popTop();
                    emit LeaveHeap(_poped, _balance, size);
                }

                // Insert new value
                heap.insert(_addr, _new);
                emit JoinHeap(_addr, _new, size);
            }
        }
    }

    ///
    // Managment
    ///

    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;
    }

    /////
    // Heap methods
    /////

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

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

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

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

    /////
    // ERC20
    /////

    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);
        return true;
    }

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

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_i","type":"uint256"}],"name":"heapEntry","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistTo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOP_SIZE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"extraGas","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"heapTop","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_cat","type":"uint256"}],"name":"getNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gas","type":"uint256"}],"name":"setExtraGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"heapIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"heapSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Winner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"},{"indexed":false,"name":"_prevSize","type":"uint256"}],"name":"JoinHeap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"},{"indexed":false,"name":"_prevSize","type":"uint256"}],"name":"LeaveHeap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prev","type":"string"},{"indexed":false,"name":"_new","type":"string"}],"name":"SetName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prev","type":"uint256"},{"indexed":false,"name":"_new","type":"uint256"}],"name":"SetExtraGas","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_to","type":"address"}],"name":"TransferOwnership","type":"event"}]

60c0604052601a60808190527f73687566666c652e6d6f6e7374657220746f6b656e20f09f838f00000000000060a090815262000040916005919062000e12565b503480156200004e57600080fd5b506040516200318838038062003188833981810160405260408110156200007457600080fd5b508051602091820151600080546001600160a01b03191633908117825560408051928352948201528351929391927f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c929181900390910190a1620000e460036200018760201b62001f531760201c565b600f60088190556040805160008152602081019290925280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a16040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a36200017d82826001600160e01b036200020b16565b6002555062000ee7565b805415620001f657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b604080517f62616c616e636500000000000000000000000000000000000000000000000000815290519081900360070190206200026c908262000257856001600160e01b036200028516565b6200029160201b62001102179092919060201c565b6200028182826001600160e01b036200044c16565b5050565b6001600160a01b031690565b6000620002a7846001600160e01b036200065016565b9050620002bf81620006f560201b6200162a1760201c565b620002d857620002d8846001600160e01b036200073016565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b03167fe2e52ec100000000000000000000000000000000000000000000000000000000178152915181516000936001600160a01b0386169392918291908083835b602083106200036b5780518252601f1990920191602091820191016200034a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114620003cf576040519150601f19603f3d011682016040523d82523d6000602084013e620003d4565b606091505b50509050806200044557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6572726f722077726974696e672073746f726167650000000000000000000000604482015290519081900360640190fd5b5050505050565b60006200046560036200076960201b620010d91760201c565b905080620004c357604080518381526000602082015281516001600160a01b0386169260008051602062003148833981519152928290030190a2620004bc838360036200077160201b62001939179092919060201c565b5062000281565b6000620004dc60036200087260201b62000fd11760201c565b915050620004fa846003620008c460201b62001a041790919060201c565b1562000576576200051d84846003620008e560201b62001a25179092919060201c565b8262000570576200053a600362000a5060201b62001b4c1760201c565b505060408051600081526020810184905281516001600160a01b0387169260008051602062003168833981519152928290030190a25b6200064a565b82158015906200059157506102008210806200059157508281105b156200064a576102008210620005fa57600080620005bb600362000a5060201b62001b4c1760201c565b91509150816001600160a01b0316600080516020620031688339815191528286604051808381526020018281526020019250505060405180910390a250505b62000617848460036200077160201b62001939179092919060201c565b604080518481526020810184905281516001600160a01b0387169260008051602062003148833981519152928290030190a25b50505050565b600060ff60f81b3083604051806020016200066b9062000e97565b818103601f199081018352601f90910116604081815282516020938401207fff00000000000000000000000000000000000000000000000000000000000000969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f80158015906200072957507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b606060405180602001620007449062000e97565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b546000190190565b6001600160a01b038216600090815260018401602052604090205415620007f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006200081083836001600160e01b0362000bc816565b845460018101865560008681526020908190209091018290558554919250600019909101906200084f9086908390859062000bdc811b62001ca017901c565b6001600160a01b0390941660009081526001909501602052505060409092205550565b80546000908190600211156200088e57506000905080620008bf565b620008ba83600001600181548110620008a357fe5b906000526020600020015462000cc660201b60201c565b915091505b915091565b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b0382166000908152600184016020526040902054806200096d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b60006200098484846001600160e01b0362000bc816565b905060008560000183815481106200099857fe5b90600052602060002001549050600081831015620009d457620009cc84848962000cdb60201b62001d6e179092919060201c565b905062000a03565b81831115620009f957620009cc84848962000bdc60201b62001ca0179092919060201c565b5050505062000a4b565b8287600001828154811062000a1457fe5b60009182526020909120015580841462000a46576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b805460009081906001811162000ac757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f546865206865617020646f6573206e6f74206578697374730000000000000000604482015290519081900360640190fd5b62000adc84600001600181548110620008a357fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141562000b1b57600162000b14858262000ea5565b5062000bc2565b600084600001600183038154811062000b3057fe5b90600052602060002001549050808560000160018154811062000b4f57fe5b600091825260209091200155600019820162000b6c868262000ea5565b50600162000b8886828462000cdb602090811b62001d6e17901c565b90508060018701600062000ba5856001600160e01b0362000e0516565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b60a01b6001600160a01b0391909116171990565b81600181146200072957600084600283048154811062000bf857fe5b906000526020600020015490505b8281101562000cbe57828186600285048154811062000c2157fe5b90600052602060002001600088600001868154811062000c3d57fe5b600091825260208220019390935550919091558290600187019062000c6b846001600160e01b0362000e0516565b6001600160a01b03168152602081019190915260400160002055600282049150816001141562000c9b5762000cbe565b84600283048154811062000cab57fe5b9060005260206000200154905062000c06565b509392505050565b196001600160a01b0381169160a09190911c90565b8254829060001981015b8183600202101562000dfc578554600284029060009088908390811062000d0857fe5b9060005260206000200154905060008284111562000d6557600089600001846001018154811062000d3557fe5b906000526020600020015490508083101562000d5a5780915083600101935062000d5e565b8291505b5062000d68565b50805b8087111562000d7a5750505062000dfc565b80878a600001888154811062000d8c57fe5b9060005260206000200160008c600001878154811062000da857fe5b60009182526020822001939093555091909155869060018b019062000dd6846001600160e01b0362000e0516565b6001600160a01b031681526020810191909152604001600020555090935062000ce59050565b50509392505050565b196001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000e5557805160ff191683800117855562000e85565b8280016001018555821562000e85579182015b8281111562000e8557825182559160200191906001019062000e68565b5062000e9392915062000ec7565b5090565b610125806200302383390190565b81548183558181111562000a4b5760008381526020902062000a4b9181019083015b62000ee491905b8082111562000e93576000815560010162000ece565b90565b61212c8062000ef76000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a9059cbb11610097578063c57981b511610071578063c57981b5146104fa578063dd62ed3e14610502578063fa7e8dc714610530578063ff12bbf41461053857610173565b8063a9059cbb14610438578063b00cf04914610464578063c47f00271461048a57610173565b806370a082311461036f57806389535803146103955780638cec9993146103c15780638da5cb5b146103de57806395d89b4114610402578063a486309d1461040a57610173565b806323b872dd1161013057806323b872dd146102dd578063313ce5671461031357806331fb7127146103315780633767e3391461033957806343684b21146103415780634849f5c81461036757610173565b806306fdde031461017857806308eaae4d146101f5578063095ea7b31461023557806313af40351461027557806316b627d11461029d57806318160ddd146102c3575b600080fd5b610180610566565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102126004803603602081101561020b57600080fd5b50356105f4565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6102616004803603604081101561024b57600080fd5b506001600160a01b038135169060200135610612565b604080519115158252519081900360200190f35b61029b6004803603602081101561028b57600080fd5b50356001600160a01b031661066b565b005b610261600480360360208110156102b357600080fd5b50356001600160a01b0316610721565b6102cb610736565b60408051918252519081900360200190f35b610261600480360360608110156102f357600080fd5b506001600160a01b0381358116916020810135909116906040013561073c565b61031b6107c7565b6040805160ff9092168252519081900360200190f35b6102cb6107cc565b6102cb6107d2565b6102616004803603602081101561035757600080fd5b50356001600160a01b03166107d8565b6102126107ed565b6102cb6004803603602081101561038557600080fd5b50356001600160a01b0316610802565b6102cb600480360360408110156103ab57600080fd5b506001600160a01b03813516906020013561080d565b61029b600480360360208110156103d757600080fd5b5035610820565b6103e66108ae565b604080516001600160a01b039092168252519081900360200190f35b6101806108bd565b61029b6004803603604081101561042057600080fd5b506001600160a01b03813516906020013515156108dd565b6102616004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610999565b6102cb6004803603602081101561047a57600080fd5b50356001600160a01b0316610a23565b61029b600480360360208110156104a057600080fd5b8101906020810181356401000000008111156104bb57600080fd5b8201836020820111156104cd57600080fd5b803590602001918460018302840111640100000000831117156104ef57600080fd5b509092509050610a3e565b6102cb610b79565b6102cb6004803603604081101561051857600080fd5b506001600160a01b0381358116916020013516610b7e565b6102cb610b8a565b61029b6004803603604081101561054e57600080fd5b506001600160a01b0381351690602001351515610b9c565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105ec5780601f106105c1576101008083540402835291602001916105ec565b820191906000526020600020905b8154815290600101906020018083116105cf57829003601f168201915b505050505081565b60008061060860038463ffffffff610c5816565b915091505b915091565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a3610661338484610c8b565b5060015b92915050565b6000546001600160a01b031633146106b7576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60076020526000908152604090205460ff1681565b60025481565b60006008543a600014156107ae5760005a905061075b33878787610ceb565b6001925060005a820390506064838202045a92505b805a840310156107a657600180546040805160208082019390935281518082038401815290820190915280519101209055610770565b5050506107bf565b6107ba33868686610ceb565b600191505b509392505050565b601281565b61020081565b60085481565b60066020526000908152604090205460ff1681565b6000806107fa6003610fd1565b915091509091565b600061066582610ffe565b60006108198383611036565b9392505050565b6000546001600160a01b0316331461086c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600854604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600855565b6000546001600160a01b031681565b6040518060400160405280600481526020016329b43ab360e11b81525081565b6000546001600160a01b03163314610929576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60006008543a60001415610a0b5760005a90506109b833338787610ceb565b6001925060005a820390506064838202045a92505b805a84031015610a03576001805460408051602080820193909352815180820384018152908201909152805191012090556109cd565b505050610a1c565b610a1733338686610ceb565b600191505b5092915050565b6001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610a8a576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260058054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb1929091859185919081906020820190606083019087908015610b325780601f10610b0757610100808354040283529160200191610b32565b820191906000526020600020905b815481529060010190602001808311610b1557829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a1610b7460058383611e8e565b505050565b606481565b6000610819838361107b565b6000610b9660036110d9565b90505b90565b6000546001600160a01b03163314610be8576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600080610c80846000018460010181548110610c7057fe5b90600052602060002001546110e1565b915091509250929050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d9092019092528051910120610b749082610cde866110f6565b919063ffffffff61110216565b80610d2f57816001600160a01b0316836001600160a01b03166000805160206120d883398151915260006040518082815260200191505060405180910390a3610fcb565b6000610d3a84610ffe565b905081811015610d86576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b846001600160a01b0316846001600160a01b031614610e1e576000610dab858761107b565b90506000198114610e1c5782811015610e02576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b610e1c8587610e17848763ffffffff61125916565b610c8b565b505b81610e2985856112a6565b610f7e576000610e4084606463ffffffff6112e916565b9050600084600114610e525781610e55565b60005b9050610e77610e6a838363ffffffff61135216565b849063ffffffff61125916565b9250610e9287610e8d868863ffffffff61125916565b61139b565b600254610ea5908363ffffffff61125916565b6002556040805183815290516000916001600160a01b038a16916000805160206120d88339815191529181900360200190a36000610ee388876113d3565b9050610f0281610e8d84610ef685610ffe565b9063ffffffff61135216565b6040805183815290516001600160a01b038316917f9c2270628a9b29d30ae96b6c4c14ed646ee134febdce38a5b77f2bde9cea2e20919081900360200190a2806001600160a01b0316886001600160a01b03166000805160206120d8833981519152846040518082815260200191505060405180910390a35050505b610f8f84610e8d83610ef688610ffe565b836001600160a01b0316856001600160a01b03166000805160206120d8833981519152836040518082815260200191505060405180910390a350505b50505050565b8054600090819060021115610feb5750600090508061060d565b61060883600001600181548110610c7057fe5b604080516662616c616e636560c81b815290519081900360070190206000906106659061102a846110f6565b9063ffffffff61143016565b6000610819826040516020018080646e6f6e636560d81b8152506005018281526020019150506040516020818303038152906040528051906020012061102a856110f6565b600061081982604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012061102a856110f6565b546000190190565b196001600160a01b0381169160a09190911c90565b6001600160a01b031690565b600061110d8461159f565b90506111188161162a565b6111255761112584611661565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831061119d5780518252601f19909201916020918201910161117e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111ff576040519150601f19603f3d011682016040523d82523d6000602084013e611204565b606091505b5050905080611252576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b5050505050565b6000818310156112a0576040805162461bcd60e51b815260206004820152600d60248201526c53756220756e646572666c6f7760981b604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526006602052604081205460ff16806108195750506001600160a01b031660009081526007602052604090205460ff16919050565b60008161132b576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b600082848161133657fe5b04905082848161134257fe5b0615610819576001019392505050565b600082820183811015610819576040805162461bcd60e51b815260206004820152600c60248201526b416464206f766572666c6f7760a01b604482015290519081900360640190fd5b604080516662616c616e636560c81b815290519081900360070190206113c59082610cde856110f6565b6113cf8282611698565b5050565b6000806113df83611878565b905060006113ed8583611036565b90506113fd858383600101611896565b611426611418868385600161141260036110d9565b036118dd565b60039063ffffffff610c5816565b5095945050505050565b60008061143c8461159f565b90506114478161162a565b611455575060009050610665565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b602083106114ca5780518252601f1990920191602091820191016114ab565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461152a576040519150601f19603f3d011682016040523d82523d6000602084013e61152f565b606091505b50915091508161157e576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101561159357600080fd5b50519695505050505050565b600060ff60f81b3083604051806020016115b890611f0c565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159061081957507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b60606040518060200161167390611f0c565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b60006116a460036110d9565b90508061170657604080518381526000602082015281516001600160a01b038616927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a26117006003848463ffffffff61193916565b506113cf565b60006117126003610fd1565b9150611727905060038563ffffffff611a0416565b156117995761173e6003858563ffffffff611a2516565b826117945761174d6003611b4c565b505060408051600081526020810184905281516001600160a01b038716927f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e7928290030190a25b610fcb565b82158015906117b257506102008210806117b257508281105b15610fcb57610200821061181d576000806117cd6003611b4c565b91509150816001600160a01b03167f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e78286604051808381526020018281526020019250505060405180910390a250505b61182f6003858563ffffffff61193916565b604080518481526020810184905281516001600160a01b038716927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a250505050565b6000600019825b60019190910190600a90048061187f575092915050565b610b74826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b610cde866110f6565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818161192e57fe5b069695505050505050565b6001600160a01b0382166000908152600184016020526040902054156119a6576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006119b28383611c8c565b8454600181018655600086815260209020018190558454909150600019016119e185828463ffffffff611ca016565b6001600160a01b0390941660009081526001909501602052505060409092205550565b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b038216600090815260018401602052604090205480611a92576040805162461bcd60e51b815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b6000611a9e8484611c8c565b90506000856000018381548110611ab157fe5b90600052602060002001549050600081831015611ae057611ad987858563ffffffff611d6e16565b9050611b02565b81831115611af957611ad987858563ffffffff611ca016565b50505050610b74565b82876000018281548110611b1257fe5b600091825260209091200155808414611b43576001600160a01b038616600090815260018801602052604090208190555b50505050505050565b8054600090819060018111611ba8576040805162461bcd60e51b815260206004820152601860248201527f546865206865617020646f6573206e6f74206578697374730000000000000000604482015290519081900360640190fd5b611bbb84600001600181548110610c7057fe5b6001600160a01b038216600090815260018701602052604081205590935091506002811415611bf6576001611bf08582611f19565b50611c86565b6000846000016001830381548110611c0a57fe5b906000526020600020015490508085600001600181548110611c2857fe5b6000918252602090912001556000198201611c438682611f19565b506001611c5786828463ffffffff611d6e16565b905080866001016000611c6985611e81565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b60a01b6001600160a01b0391909116171990565b8160018114610819576000846002830481548110611cba57fe5b906000526020600020015490505b828110156107bf578281866002850481548110611ce157fe5b906000526020600020016000886000018681548110611cfc57fe5b6000918252602082200193909355509190915582906001870190611d1f84611e81565b6001600160a01b031681526020810191909152604001600020556002820491508160011415611d4d576107bf565b846002830481548110611d5c57fe5b90600052602060002001549050611cc8565b8254829060001981015b81836002021015611e785785546002840290600090889083908110611d9957fe5b90600052602060002001549050600082841115611df1576000896000018460010181548110611dc457fe5b9060005260206000200154905080831015611de757809150836001019350611deb565b8291505b50611df4565b50805b80871115611e0457505050611e78565b80878a6000018881548110611e1557fe5b9060005260206000200160008c6000018781548110611e3057fe5b60009182526020822001939093555091909155869060018b0190611e5384611e81565b6001600160a01b0316815260208101919091526040016000205550909350611d789050565b50509392505050565b196001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ecf5782800160ff19823516178555611efc565b82800160010185558215611efc579182015b82811115611efc578235825591602001919060010190611ee1565b50611f08929150611f39565b5090565b61012580611fb383390190565b815481835581811115610b7457600083815260209020610b749181019083015b610b9991905b80821115611f085760008155600101611f3f565b805415611f9d576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fe608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a723058200b58fb1458dee2154be81bbf2943459260ea5899282500cd3a343c4ea70e47f264736f6c634300050a0032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a7230582079b1fef37d08548c46965586994b4d21435797de3dfa540d157b39f4def9886164736f6c634300050a0032608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a723058200b58fb1458dee2154be81bbf2943459260ea5899282500cd3a343c4ea70e47f264736f6c634300050a0032b7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff9361072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e70000000000000000000000002c54036c505b762b6ca2873dfcfecb632f83fe2700000000000000000000000000000000000000000000d5e5af7b8e5a0ca57eb5

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a9059cbb11610097578063c57981b511610071578063c57981b5146104fa578063dd62ed3e14610502578063fa7e8dc714610530578063ff12bbf41461053857610173565b8063a9059cbb14610438578063b00cf04914610464578063c47f00271461048a57610173565b806370a082311461036f57806389535803146103955780638cec9993146103c15780638da5cb5b146103de57806395d89b4114610402578063a486309d1461040a57610173565b806323b872dd1161013057806323b872dd146102dd578063313ce5671461031357806331fb7127146103315780633767e3391461033957806343684b21146103415780634849f5c81461036757610173565b806306fdde031461017857806308eaae4d146101f5578063095ea7b31461023557806313af40351461027557806316b627d11461029d57806318160ddd146102c3575b600080fd5b610180610566565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102126004803603602081101561020b57600080fd5b50356105f4565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6102616004803603604081101561024b57600080fd5b506001600160a01b038135169060200135610612565b604080519115158252519081900360200190f35b61029b6004803603602081101561028b57600080fd5b50356001600160a01b031661066b565b005b610261600480360360208110156102b357600080fd5b50356001600160a01b0316610721565b6102cb610736565b60408051918252519081900360200190f35b610261600480360360608110156102f357600080fd5b506001600160a01b0381358116916020810135909116906040013561073c565b61031b6107c7565b6040805160ff9092168252519081900360200190f35b6102cb6107cc565b6102cb6107d2565b6102616004803603602081101561035757600080fd5b50356001600160a01b03166107d8565b6102126107ed565b6102cb6004803603602081101561038557600080fd5b50356001600160a01b0316610802565b6102cb600480360360408110156103ab57600080fd5b506001600160a01b03813516906020013561080d565b61029b600480360360208110156103d757600080fd5b5035610820565b6103e66108ae565b604080516001600160a01b039092168252519081900360200190f35b6101806108bd565b61029b6004803603604081101561042057600080fd5b506001600160a01b03813516906020013515156108dd565b6102616004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610999565b6102cb6004803603602081101561047a57600080fd5b50356001600160a01b0316610a23565b61029b600480360360208110156104a057600080fd5b8101906020810181356401000000008111156104bb57600080fd5b8201836020820111156104cd57600080fd5b803590602001918460018302840111640100000000831117156104ef57600080fd5b509092509050610a3e565b6102cb610b79565b6102cb6004803603604081101561051857600080fd5b506001600160a01b0381358116916020013516610b7e565b6102cb610b8a565b61029b6004803603604081101561054e57600080fd5b506001600160a01b0381351690602001351515610b9c565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105ec5780601f106105c1576101008083540402835291602001916105ec565b820191906000526020600020905b8154815290600101906020018083116105cf57829003601f168201915b505050505081565b60008061060860038463ffffffff610c5816565b915091505b915091565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a3610661338484610c8b565b5060015b92915050565b6000546001600160a01b031633146106b7576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60076020526000908152604090205460ff1681565b60025481565b60006008543a600014156107ae5760005a905061075b33878787610ceb565b6001925060005a820390506064838202045a92505b805a840310156107a657600180546040805160208082019390935281518082038401815290820190915280519101209055610770565b5050506107bf565b6107ba33868686610ceb565b600191505b509392505050565b601281565b61020081565b60085481565b60066020526000908152604090205460ff1681565b6000806107fa6003610fd1565b915091509091565b600061066582610ffe565b60006108198383611036565b9392505050565b6000546001600160a01b0316331461086c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600854604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600855565b6000546001600160a01b031681565b6040518060400160405280600481526020016329b43ab360e11b81525081565b6000546001600160a01b03163314610929576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60006008543a60001415610a0b5760005a90506109b833338787610ceb565b6001925060005a820390506064838202045a92505b805a84031015610a03576001805460408051602080820193909352815180820384018152908201909152805191012090556109cd565b505050610a1c565b610a1733338686610ceb565b600191505b5092915050565b6001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610a8a576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260058054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb1929091859185919081906020820190606083019087908015610b325780601f10610b0757610100808354040283529160200191610b32565b820191906000526020600020905b815481529060010190602001808311610b1557829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a1610b7460058383611e8e565b505050565b606481565b6000610819838361107b565b6000610b9660036110d9565b90505b90565b6000546001600160a01b03163314610be8576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600080610c80846000018460010181548110610c7057fe5b90600052602060002001546110e1565b915091509250929050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d9092019092528051910120610b749082610cde866110f6565b919063ffffffff61110216565b80610d2f57816001600160a01b0316836001600160a01b03166000805160206120d883398151915260006040518082815260200191505060405180910390a3610fcb565b6000610d3a84610ffe565b905081811015610d86576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b846001600160a01b0316846001600160a01b031614610e1e576000610dab858761107b565b90506000198114610e1c5782811015610e02576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b610e1c8587610e17848763ffffffff61125916565b610c8b565b505b81610e2985856112a6565b610f7e576000610e4084606463ffffffff6112e916565b9050600084600114610e525781610e55565b60005b9050610e77610e6a838363ffffffff61135216565b849063ffffffff61125916565b9250610e9287610e8d868863ffffffff61125916565b61139b565b600254610ea5908363ffffffff61125916565b6002556040805183815290516000916001600160a01b038a16916000805160206120d88339815191529181900360200190a36000610ee388876113d3565b9050610f0281610e8d84610ef685610ffe565b9063ffffffff61135216565b6040805183815290516001600160a01b038316917f9c2270628a9b29d30ae96b6c4c14ed646ee134febdce38a5b77f2bde9cea2e20919081900360200190a2806001600160a01b0316886001600160a01b03166000805160206120d8833981519152846040518082815260200191505060405180910390a35050505b610f8f84610e8d83610ef688610ffe565b836001600160a01b0316856001600160a01b03166000805160206120d8833981519152836040518082815260200191505060405180910390a350505b50505050565b8054600090819060021115610feb5750600090508061060d565b61060883600001600181548110610c7057fe5b604080516662616c616e636560c81b815290519081900360070190206000906106659061102a846110f6565b9063ffffffff61143016565b6000610819826040516020018080646e6f6e636560d81b8152506005018281526020019150506040516020818303038152906040528051906020012061102a856110f6565b600061081982604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012061102a856110f6565b546000190190565b196001600160a01b0381169160a09190911c90565b6001600160a01b031690565b600061110d8461159f565b90506111188161162a565b6111255761112584611661565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831061119d5780518252601f19909201916020918201910161117e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111ff576040519150601f19603f3d011682016040523d82523d6000602084013e611204565b606091505b5050905080611252576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b5050505050565b6000818310156112a0576040805162461bcd60e51b815260206004820152600d60248201526c53756220756e646572666c6f7760981b604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526006602052604081205460ff16806108195750506001600160a01b031660009081526007602052604090205460ff16919050565b60008161132b576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b600082848161133657fe5b04905082848161134257fe5b0615610819576001019392505050565b600082820183811015610819576040805162461bcd60e51b815260206004820152600c60248201526b416464206f766572666c6f7760a01b604482015290519081900360640190fd5b604080516662616c616e636560c81b815290519081900360070190206113c59082610cde856110f6565b6113cf8282611698565b5050565b6000806113df83611878565b905060006113ed8583611036565b90506113fd858383600101611896565b611426611418868385600161141260036110d9565b036118dd565b60039063ffffffff610c5816565b5095945050505050565b60008061143c8461159f565b90506114478161162a565b611455575060009050610665565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b602083106114ca5780518252601f1990920191602091820191016114ab565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461152a576040519150601f19603f3d011682016040523d82523d6000602084013e61152f565b606091505b50915091508161157e576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101561159357600080fd5b50519695505050505050565b600060ff60f81b3083604051806020016115b890611f0c565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159061081957507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b60606040518060200161167390611f0c565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b60006116a460036110d9565b90508061170657604080518381526000602082015281516001600160a01b038616927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a26117006003848463ffffffff61193916565b506113cf565b60006117126003610fd1565b9150611727905060038563ffffffff611a0416565b156117995761173e6003858563ffffffff611a2516565b826117945761174d6003611b4c565b505060408051600081526020810184905281516001600160a01b038716927f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e7928290030190a25b610fcb565b82158015906117b257506102008210806117b257508281105b15610fcb57610200821061181d576000806117cd6003611b4c565b91509150816001600160a01b03167f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e78286604051808381526020018281526020019250505060405180910390a250505b61182f6003858563ffffffff61193916565b604080518481526020810184905281516001600160a01b038716927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a250505050565b6000600019825b60019190910190600a90048061187f575092915050565b610b74826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b610cde866110f6565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818161192e57fe5b069695505050505050565b6001600160a01b0382166000908152600184016020526040902054156119a6576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006119b28383611c8c565b8454600181018655600086815260209020018190558454909150600019016119e185828463ffffffff611ca016565b6001600160a01b0390941660009081526001909501602052505060409092205550565b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b038216600090815260018401602052604090205480611a92576040805162461bcd60e51b815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b6000611a9e8484611c8c565b90506000856000018381548110611ab157fe5b90600052602060002001549050600081831015611ae057611ad987858563ffffffff611d6e16565b9050611b02565b81831115611af957611ad987858563ffffffff611ca016565b50505050610b74565b82876000018281548110611b1257fe5b600091825260209091200155808414611b43576001600160a01b038616600090815260018801602052604090208190555b50505050505050565b8054600090819060018111611ba8576040805162461bcd60e51b815260206004820152601860248201527f546865206865617020646f6573206e6f74206578697374730000000000000000604482015290519081900360640190fd5b611bbb84600001600181548110610c7057fe5b6001600160a01b038216600090815260018701602052604081205590935091506002811415611bf6576001611bf08582611f19565b50611c86565b6000846000016001830381548110611c0a57fe5b906000526020600020015490508085600001600181548110611c2857fe5b6000918252602090912001556000198201611c438682611f19565b506001611c5786828463ffffffff611d6e16565b905080866001016000611c6985611e81565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b60a01b6001600160a01b0391909116171990565b8160018114610819576000846002830481548110611cba57fe5b906000526020600020015490505b828110156107bf578281866002850481548110611ce157fe5b906000526020600020016000886000018681548110611cfc57fe5b6000918252602082200193909355509190915582906001870190611d1f84611e81565b6001600160a01b031681526020810191909152604001600020556002820491508160011415611d4d576107bf565b846002830481548110611d5c57fe5b90600052602060002001549050611cc8565b8254829060001981015b81836002021015611e785785546002840290600090889083908110611d9957fe5b90600052602060002001549050600082841115611df1576000896000018460010181548110611dc457fe5b9060005260206000200154905080831015611de757809150836001019350611deb565b8291505b50611df4565b50805b80871115611e0457505050611e78565b80878a6000018881548110611e1557fe5b9060005260206000200160008c6000018781548110611e3057fe5b60009182526020822001939093555091909155869060018b0190611e5384611e81565b6001600160a01b0316815260208101919091526040016000205550909350611d789050565b50509392505050565b196001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ecf5782800160ff19823516178555611efc565b82800160010185558215611efc579182015b82811115611efc578235825591602001919060010190611ee1565b50611f08929150611f39565b5090565b61012580611fb383390190565b815481835581811115610b7457600083815260209020610b749181019083015b610b9991905b80821115611f085760008155600101611f3f565b805415611f9d576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fe608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a723058200b58fb1458dee2154be81bbf2943459260ea5899282500cd3a343c4ea70e47f264736f6c634300050a0032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a7230582079b1fef37d08548c46965586994b4d21435797de3dfa540d157b39f4def9886164736f6c634300050a0032

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

0000000000000000000000002c54036c505b762b6ca2873dfcfecb632f83fe2700000000000000000000000000000000000000000000d5e5af7b8e5a0ca57eb5

-----Decoded View---------------
Arg [0] : _to (address): 0x2C54036c505B762B6cA2873dfcfEcB632f83fE27
Arg [1] : _amount (uint256): 1010101010101010101010101

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002c54036c505b762b6ca2873dfcfecb632f83fe27
Arg [1] : 00000000000000000000000000000000000000000000d5e5af7b8e5a0ca57eb5


Deployed Bytecode Sourcemap

13538:8639:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13538:8639:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14579:49;;;:::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;14579:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20924:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20924:112:0;;:::i;:::-;;;;-1:-1:-1;;;;;20924:112:0;;;;;;;;;;;;;;;;;;;;;21565:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21565:213:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;410:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;410:134:0;-1:-1:-1;;;;;410:134:0;;:::i;:::-;;14798:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14798:43:0;-1:-1:-1;;;;;14798:43:0;;:::i;14243:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;21977:197;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21977:197:0;;;;;;;;;;;;;;;;;:::i;14680:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14461:38;;;:::i;14867:23::-;;;:::i;14746:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14746:45:0;-1:-1:-1;;;;;14746:45:0;;:::i;21044:96::-;;;:::i;21303:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21303:109:0;-1:-1:-1;;;;;21303:109:0;;:::i;16442:124::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16442:124:0;;;;;;;;:::i;20643:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20643:131:0;;:::i;96:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;96:20:0;;;;;;;;;;;;;;14635:38;;;:::i;20129:179::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20129:179:0;;;;;;;;;;:::i;21786:183::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21786:183:0;;;;;;;;:::i;21148:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21148:109:0;-1:-1:-1;;;;;21148:109:0;;:::i;20509:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20509:126:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20509:126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20509: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;20509:126:0;;-1:-1:-1;20509:126:0;-1:-1:-1;20509:126:0;:::i;14421:33::-;;;:::i;21420:137::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21420:137:0;;;;;;;;;;:::i;20827:89::-;;;:::i;20316:185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20316:185:0;;;;;;;;;;:::i;14579:49::-;;;;;;;;;;;;;;;-1:-1:-1;;14579:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20924:112::-;20978:7;;21014:14;:4;21025:2;21014:14;:10;:14;:::i;:::-;21007:21;;;;20924:112;;;;:::o;21565:213::-;21656:38;;;;;;;;21634:4;;-1:-1:-1;;;;;21656:38:0;;;21665:10;;21656:38;;;;;;;;;;21705:43;21719:10;21731:8;21741:6;21705:13;:43::i;:::-;-1:-1:-1;21766:4:0;21565:213;;;;;:::o;410:134::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;497:5;;479:32;;;-1:-1:-1;;;;;497:5:0;;;479:32;;;;;;;;;;;;;;;;;;;;;522:5;:14;;-1:-1:-1;;;;;;522:14:0;-1:-1:-1;;;;;522:14:0;;;;;;;;;;410:134::o;14798:43::-;;;;;;;;;;;;;;;:::o;14243:26::-;;;;:::o;21977:197::-;22082:4;22063:8;;12297:11;12312:1;12297:16;12293:424;;;12330:16;12349:9;12330:28;;22099:45;22113:10;22125:5;22132:3;22137:6;22099:13;:45::i;:::-;22162:4;22155:11;;12389:13;12416:9;12405:20;;;-1:-1:-1;12477:3:0;12458:15;;;12457:23;12506:9;12495:20;;12530:142;12560:6;12548:9;12537:8;:20;:29;12530:142;;;12650:4;;;12633:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;12633:22:0;;;;;;12623:33;;;;;12616:40;;12530:142;;;12293:424;;;;;;22099:45;22113:10;22125:5;22132:3;22137:6;22099:13;:45::i;:::-;22162:4;22155:11;;12704:1;21977:197;;;;;;:::o;14680:35::-;14713:2;14680:35;:::o;14461:38::-;14496:3;14461:38;:::o;14867:23::-;;;;:::o;14746:45::-;;;;;;;;;;;;;;;:::o;21044:96::-;21086:7;21095;21122:10;:4;:8;:10::i;:::-;21115:17;;;;21044:96;;:::o;21303:109::-;21360:7;21387:17;21398:5;21387:10;:17::i;16442:124::-;16512:7;16539:19;16546:5;16553:4;16539:6;:19::i;:::-;16532:26;16442:124;-1:-1:-1;;;16442:124:0:o;20643:131::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;20725:8;;20713:27;;;;;;;;;;;;;;;;;;;;;;;;20751:8;:15;20643:131::o;96:20::-;;;-1:-1:-1;;;;;96:20:0;;:::o;14635:38::-;;;;;;;;;;;;;;-1:-1:-1;;;14635:38:0;;;;:::o;20129:179::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;20224:32;;;-1:-1:-1;;;;;20224:32:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20267:18:0;;;;;;;;:11;:18;;;;;:33;;-1:-1:-1;;20267:33:0;;;;;;;;;;20129:179::o;21786:183::-;21872:4;21853:8;;12297:11;12312:1;12297:16;12293:424;;;12330:16;12349:9;12330:28;;21889:50;21903:10;21915;21927:3;21932:6;21889:13;:50::i;:::-;21957:4;21950:11;;12389:13;12416:9;12405:20;;;-1:-1:-1;12477:3:0;12458:15;;;12457:23;12506:9;12495:20;;12530:142;12560:6;12548:9;12537:8;:20;:29;12530:142;;;12650:4;;;12633:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;12633:22:0;;;;;;12623:33;;;;;12616:40;;12530:142;;;12293:424;;;;;;21889:50;21903:10;21915;21927:3;21932:6;21889:13;:50::i;:::-;21957:4;21950:11;;12704:1;21786:183;;;;;:::o;21148:109::-;-1:-1:-1;;;;;21232:17:0;21205:7;21232:17;;;:10;:17;;;;;;;21148:109::o;20509:126::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;20584:20;;;;;;20592:4;20584:20;;;-1:-1:-1;;20584:20:0;;;;;;;;;;;;;;;;;;;20592:4;;20598:5;;;;20584:20;;;;;;;;;;;20592:4;;20584:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20584:20:0;;;;;;;;;;;;;;;1:33:-1;99:1;81:16;;;74:27;20584:20:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;20584:20:0;;;;-1:-1:-1;20584:20:0;;-1:-1:-1;;;;;;20584:20:0;20615:12;:4;20622:5;;20615:12;:::i;:::-;;20509:126;;:::o;14421:33::-;14451:3;14421:33;:::o;21420:137::-;21495:7;21522:27;21533:5;21540:8;21522:10;:27::i;20827:89::-;20870:7;20897:11;:4;:9;:11::i;:::-;20890:18;;20827:89;;:::o;20316:185::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;20413:34;;;-1:-1:-1;;;;;20413:34:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20458:20:0;;;;;;;;:13;:20;;;;;:35;;-1:-1:-1;;20458:35:0;;;;;;;;;;20316:185::o;2370:143::-;2440:7;2449;2476:29;2483:5;:13;;2497:2;2502:1;2497:6;2483:21;;;;;;;;;;;;;;;;2476:6;:29::i;:::-;2469:36;;;;2370:143;;;;;:::o;15885:188::-;16007:39;;;-1:-1:-1;;;16007:39:0;;;;;;;;-1:-1:-1;;;;;;16007:39:0;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;16007:39:0;;;;;;;15997:50;;;;;15977:88;;16057:6;15977:13;15984:5;15977:6;:13::i;:::-;:19;:88;;:19;:88;:::i;17480:1553::-;17590:11;17586:93;;17639:3;-1:-1:-1;;;;;17623:23:0;17632:5;-1:-1:-1;;;;;17623:23:0;-1:-1:-1;;;;;;;;;;;17644:1:0;17623:23;;;;;;;;;;;;;;;;;;17661:7;;17586:93;17691:19;17713:17;17724:5;17713:10;:17::i;:::-;17691:39;;17764:6;17749:11;:21;;17741:52;;;;;-1:-1:-1;;;17741:52:0;;;;;;;;;;;;-1:-1:-1;;;17741:52:0;;;;;;;;;;;;;;;17819:9;-1:-1:-1;;;;;17810:18:0;:5;-1:-1:-1;;;;;17810:18:0;;17806:316;;17845:21;17869:28;17880:5;17887:9;17869:10;:28::i;:::-;17845:52;;-1:-1:-1;;17916:13:0;:25;17912:199;;17987:6;17970:13;:23;;17962:56;;;;;-1:-1:-1;;;17962:56:0;;;;;;;;;;;;-1:-1:-1;;;17962:56:0;;;;;;;;;;;;;;;18037:58;18051:5;18058:9;18069:25;:13;18087:6;18069:25;:17;:25;:::i;:::-;18037:13;:58::i;:::-;17806:316;;18152:6;18176:26;18191:5;18198:3;18176:14;:26::i;:::-;18171:723;;18219:12;18234:20;:6;14451:3;18234:20;:15;:20;:::i;:::-;18219:35;;18269:12;18284:6;18294:1;18284:11;:22;;18302:4;18284:22;;;18298:1;18284:22;18269:37;-1:-1:-1;18331:27:0;18343:14;:4;18269:37;18343:14;:8;:14;:::i;:::-;18331:7;;:27;:11;:27;:::i;:::-;18321:37;-1:-1:-1;18375:43:0;18387:5;18394:23;:11;18410:6;18394:23;:15;:23;:::i;:::-;18375:11;:43::i;:::-;18477:11;;:21;;18493:4;18477:21;:15;:21;:::i;:::-;18463:11;:35;18518:33;;;;;;;;18542:1;;-1:-1:-1;;;;;18518:33:0;;;-1:-1:-1;;;;;;;;;;;18518:33:0;;;;;;;;18643:14;18660:26;18672:5;18679:6;18660:11;:26::i;:::-;18643:43;;18744:49;18756:6;18764:28;18787:4;18764:18;18775:6;18764:10;:18::i;:::-;:22;:28;:22;:28;:::i;18744:49::-;18813:20;;;;;;;;-1:-1:-1;;;;;18813:20:0;;;;;;;;;;;;;18869:6;-1:-1:-1;;;;;18853:29:0;18862:5;-1:-1:-1;;;;;18853:29:0;-1:-1:-1;;;;;;;;;;;18877:4:0;18853:29;;;;;;;;;;;;;;;;;;18171:723;;;;18934:46;18946:3;18951:28;18971:7;18951:15;18962:3;18951:10;:15::i;18934:46::-;19012:3;-1:-1:-1;;;;;18996:29:0;19005:5;-1:-1:-1;;;;;18996:29:0;-1:-1:-1;;;;;;;;;;;19017:7:0;18996:29;;;;;;;;;;;;;;;;;;17480:1553;;;;;;;:::o;1890:214::-;1978:20;;1945:7;;;;2001:1;-1:-1:-1;1974:79:0;;;-1:-1:-1;2035:1:0;;-1:-1:-1;2035:1:0;2019:22;;1974:79;2072:24;2079:5;:13;;2093:1;2079:16;;;;;;;15364:133;14317:20;;;-1:-1:-1;;;14317:20:0;;;;;;;;;;;;15422:7;;15457:31;;:13;15464:5;15457:6;:13::i;:::-;:18;:31;:18;:31;:::i;15703:174::-;15771:7;15806:62;15861:4;15835:31;;;;;;-1:-1:-1;;;15835:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15835:31:0;;;15825:42;;;;;;15806:13;15813:5;15806:6;:13::i;15505:190::-;15581:7;15616:70;15675:8;15645:39;;;;;;-1:-1:-1;;;15645:39:0;;;;;;-1:-1:-1;;;;;15645:39:0;-1:-1:-1;;;;;15645:39:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15645:39:0;;;15635:50;;;;;;15616:13;15623:5;15616:6;:13::i;2246:116::-;2330:20;-1:-1:-1;;2330:24:0;;2246:116::o;1316:319::-;1490:11;-1:-1:-1;;;;;1524:54:0;;;1606:3;1602:15;;;;;1462:166::o;15252:104::-;-1:-1:-1;;;;;15337:10:0;;15252:104::o;9339:569::-;9455:17;9487:21;9500:7;9487:12;:21::i;:::-;9455:54;;9525:37;9555:5;9525:21;:37::i;:::-;9520:86;;9579:15;9586:7;9579:6;:15::i;:::-;9711:124;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9711:124:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;9677:169:0;;;;9659:12;;-1:-1:-1;;;;;9677:19:0;;;9711:124;9677:169;;;25:18:-1;9677: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;;;9677: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;;9658:188:0;;;9867:7;9859:41;;;;;-1:-1:-1;;;9859:41:0;;;;;;;;;;;;-1:-1:-1;;;9859:41:0;;;;;;;;;;;;;;;9339:569;;;;;:::o;10800:141::-;10858:7;10891:1;10886;:6;;10878:32;;;;;-1:-1:-1;;;10878:32:0;;;;;;;;;;;;-1:-1:-1;;;10878:32:0;;;;;;;;;;;;;;;-1:-1:-1;10928:5:0;;;10800:141::o;16619:145::-;-1:-1:-1;;;;;16718:20:0;;16694:4;16718:20;;;:13;:20;;;;;;;;;:38;;-1:-1:-1;;;;;;;16740:16:0;;;;;:11;:16;;;;;;;;;16619:145;-1:-1:-1;16619:145:0:o;11333:232::-;11396:7;11424:6;11416:30;;;;;-1:-1:-1;;;11416:30:0;;;;;;;;;;;;-1:-1:-1;;;11416:30:0;;;;;;;;;;;;;;;11457:9;11473:1;11469;:5;;;;;;11457:17;;11493:1;11489;:5;;;;;;:10;11485:52;;11524:1;11520:5;11556:1;11333:232;-1:-1:-1;;;11333:232:0:o;10628:164::-;10686:7;10718:5;;;10742:6;;;;10734:31;;;;;-1:-1:-1;;;10734:31:0;;;;;;;;;;;;-1:-1:-1;;;10734:31:0;;;;;;;;;;;;;;16261:173;14317:20;;;-1:-1:-1;;;14317:20:0;;;;;;;;;;;;16335:51;;16376:8;16335:13;16342:5;16335:6;:13::i;:51::-;16397:29;16410:5;16417:8;16397:12;:29::i;:::-;16261:173;;:::o;17002:470::-;17072:14;17144:17;17164:29;17186:6;17164:21;:29::i;:::-;17144:49;;17258:13;17274:24;17281:5;17288:9;17274:6;:24::i;:::-;17258:40;;17309:38;17319:5;17326:9;17337:5;17345:1;17337:9;17309;:38::i;:::-;17403:61;17414:49;17422:5;17429;17436:9;17461:1;17447:11;:4;:9;:11::i;:::-;:15;17414:7;:49::i;:::-;17403:4;;:61;:10;:61;:::i;:::-;-1:-1:-1;17391:73:0;17002:470;-1:-1:-1;;;;;17002:470:0:o;9916:610::-;10009:7;10029:17;10061:21;10074:7;10061:12;:21::i;:::-;10029:54;;10099:37;10129:5;10099:21;:37::i;:::-;10094:88;;-1:-1:-1;10168:1:0;;-1:-1:-1;10153:17:0;;10094:88;10310:98;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10310:98:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;10270:149:0;;;;10235:12;;10249:17;;-1:-1:-1;;;;;10270:25:0;;;10310:98;;10270: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;;;10270: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;;10234:185:0;;;;10440:7;10432:41;;;;;-1:-1:-1;;;10432:41:0;;;;;;;;;;;;-1:-1:-1;;;10432:41:0;;;;;;;;;;;;;;;10502:4;10491:27;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10491:27:0;;9916:610;-1:-1:-1;;;;;;9916:610:0:o;8658:433::-;8716:7;8871:4;8866:10;;8911:4;8943;8984:30;;;;;;;;:::i;:::-;21:26:-1;;;-1:-1;;21:26;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;;;8974:41:0;;41:4:-1;30:16;;;8974:41:0;-1:-1:-1;;;;;;8823:215:0;;;;;;;;;;;;;-1:-1:-1;;;;;;8823:215:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8823:215:0;;;;;;;8791:266;;;;;;8658:433;-1:-1:-1;;8658:433:0:o;8209:323::-;8267:4;8374:18;;8411:22;;;;;:113;;-1:-1:-1;8457:66:0;8437:87;;;8404:120;-1:-1:-1;;8209:323:0:o;9099:232::-;9148:21;9172: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;9172:30:0;9148:54;;9316:4;9305:8;9299:15;9292:4;9282:8;9278:19;9275:1;9267:54;9263:59;9261:63;;:::o;19041:1042::-;19112:12;19127:11;:4;:9;:11::i;:::-;19112:26;-1:-1:-1;19153:9:0;19149:131;;19184:24;;;;;;19206:1;19184:24;;;;;;-1:-1:-1;;;;;19184:24:0;;;;;;;;;;;19223;:4;19235:5;19242:4;19223:24;:11;:24;:::i;:::-;19262:7;;;19149:131;19295:15;19314:10;:4;:8;:10::i;:::-;19292:32;-1:-1:-1;19341:15:0;;-1:-1:-1;19341:4:0;19350:5;19341:15;:8;:15;:::i;:::-;19337:739;;;19373:24;:4;19385:5;19392:4;19373:24;:11;:24;:::i;:::-;19416:9;19412:112;;19446:13;:4;:11;:13::i;:::-;-1:-1:-1;;19483:25:0;;;19500:1;19483:25;;;;;;;;;;-1:-1:-1;;;;;19483:25:0;;;;;;;;;;;19412:112;19337:739;;;19627:9;;;;;:48;;;14496:3;19641:4;:15;:33;;;;19670:4;19660:7;:14;19641:33;19623:442;;;14496:3;19745:4;:16;19741:176;;19787:14;19803:16;19823:13;:4;:11;:13::i;:::-;19786:50;;;;19874:6;-1:-1:-1;;;;;19864:33:0;;19882:8;19892:4;19864:33;;;;;;;;;;;;;;;;;;;;;;;;19741:176;;;19974:24;:4;19986:5;19993:4;19974:24;:11;:24;:::i;:::-;20022:27;;;;;;;;;;;;;;-1:-1:-1;;;;;20022:27:0;;;;;;;;;;;19041:1042;;;;:::o;11659:270::-;11723:7;-1:-1:-1;;11794:5:0;11812:83;11855:9;;;;;;11838:2;11830:10;;;11812:83;;-1:-1:-1;11914:7:0;11659:270;-1:-1:-1;;11659:270:0:o;16081:172::-;16165:80;16221:4;16195:31;;;;;;-1:-1:-1;;;16195:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16195:31:0;;;16185:42;;;;;;16237:6;16229:15;;16165:13;16172:5;16165:6;:13::i;16772:222::-;16918:31;;;-1:-1:-1;;;;;;16918:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16918:31:0;;;;;;;16908:42;;;;;16865:7;;16984:1;16977:8;;16908:42;16977:8;16969:17;;;;;;16772:222;-1:-1:-1;;;;;;16772:222:0:o;3658:555::-;-1:-1:-1;;;;;3753:18:0;;;;;;:11;;;:18;;;;;;:23;3745:60;;;;;-1:-1:-1;;;3745:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3868:15;3886:21;3893:5;3900:6;3886;:21::i;:::-;27:10:-1;;39:1;23:18;;45:23;;3918:13:0;:27;;;;;;;;;;4023:20;;3868:39;;-1:-1:-1;;;4023:24:0;4097:37;3918:5;4023:24;3868:39;4097:37;:14;:37;:::i;:::-;-1:-1:-1;;;;;4172:18:0;;;;;;;:11;;;;:18;;-1:-1:-1;;4172:18:0;;;;:33;-1:-1:-1;3658:555:0:o;2112:126::-;-1:-1:-1;;;;;2207:18:0;2183:4;2207:18;;;:11;;;;;:18;;;;;;:23;;;2112:126::o;4221:772::-;-1:-1:-1;;;;;4322:18:0;;4308:11;4322:18;;;:11;;;:18;;;;;;4359:8;4351:46;;;;;-1:-1:-1;;;4351:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4410:11;4424:21;4431:5;4438:6;4424;:21::i;:::-;4410:35;;4456:11;4470:5;:13;;4484:3;4470:18;;;;;;;;;;;;;;;;4456:32;;4499:14;4536:3;4530;:9;4526:285;;;4593:26;:5;4610:3;4615;4593:26;:16;:26;:::i;:::-;4584:35;;4526:285;;;4647:3;4641;:9;4637:174;;;4702:24;:5;4717:3;4722;4702:24;:14;:24;:::i;4637:174::-;4793:7;;;;;;4637:174;4872:3;4848:5;:13;;4862:6;4848:21;;;;;;;;;;;;;;;;;:27;4917:13;;;4913:73;;-1:-1:-1;;;;;4947:18:0;;;;;;:11;;;:18;;;;;:27;;;4913:73;4221:772;;;;;;;:::o;2626:979::-;2777:20;;2679:13;;;;2829:1;2816:14;;2808:51;;;;;-1:-1:-1;;;2808:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2934:24;2941:5;:13;;2955:1;2941:16;;;;;;;2934:24;-1:-1:-1;;;;;2969:18:0;;2990:1;2969:18;;;:11;;;:18;;;;;:22;2916:42;;-1:-1:-1;2916:42:0;-1:-1:-1;3022:1:0;3008:15;;3004:594;;;3063:1;3040:24;:5;3063:1;3040:24;:::i;:::-;;3004:594;;;3172:11;3186:5;:13;;3213:1;3200:10;:14;3186:29;;;;;;;;;;;;;;;;3172:43;;3249:3;3230:5;:13;;3244:1;3230:16;;;;;;;;;;;;;;;;;:22;-1:-1:-1;;3347:14:0;;3324:37;:5;3347:14;3324:37;:::i;:::-;-1:-1:-1;3425:1:0;3477:26;:5;3425:1;3499:3;3477:26;:16;:26;:::i;:::-;3471:32;;3583:3;3549:5;:11;;:31;3561:18;3575:3;3561:13;:18::i;:::-;-1:-1:-1;;;;;3549:31:0;;;;;;;;;;;;-1:-1:-1;3549:31:0;:37;-1:-1:-1;;3004:594:0;2626:979;;;;:::o;1038:270::-;1276:3;1272:16;-1:-1:-1;;;;;1216:54:0;;;;1213:76;1209:81;;1184:117::o;5001:824::-;5137:4;5163:1;5156:8;;5152:666;;5181:14;5198:5;5218:1;5212:3;:7;5198:22;;;;;;;;;;;;;;;;5181:39;;5235:572;5251:4;5242:6;:13;5235:572;;;5410:4;5416:6;5363:5;5383:1;5377:3;:7;5363:22;;;;;;;;;;;;;;;;5387:5;:13;;5401:3;5387:18;;;;;;;;;;;;;;;;5362:61;;;;-1:-1:-1;5362:61:0;;;;5520:3;;5483:11;;;;5495:21;5509:6;5495:13;:21::i;:::-;-1:-1:-1;;;;;5483:34:0;;;;;;;;;;;;-1:-1:-1;5483:34:0;:40;5624:1;5618:3;:7;5612:13;;5648:3;5655:1;5648:8;5644:62;;;5681:5;;5644:62;5769:5;5789:1;5783:3;:7;5769:22;;;;;;;;;;;;;;;;5760:31;;5235:572;;5833:1738;6007:20;;5973:4;;-1:-1:-1;;6055:10:0;;6078:1486;6095:6;6085:3;6091:1;6085:7;:16;6078:1486;;;6261:16;;6190:1;6184:7;;;6172:9;;6261:5;;6184:7;;6261:16;;;;;;;;;;;;;;6241:36;;6339:18;6387:1;6378:6;:10;6374:764;;;6519:18;6540:5;:13;;6554:1;6558;6554:5;6540:20;;;;;;;;;;;;;;;;6519:41;;6767:10;6755:9;:22;6751:247;;;6815:10;6802:23;;6852:1;6856;6852:5;6848:9;;6751:247;;;6969:9;6956:22;;6751:247;6374:764;;;;-1:-1:-1;7113:9:0;6374:764;7218:10;7211:4;:17;7207:63;;;7249:5;;;;;7207:63;7364:10;7376:4;7323:5;:13;;7337:3;7323:18;;;;;;;;;;;;;;;;7343:5;:13;;7357:1;7343:16;;;;;;;;;;;;;;;;7322:59;;;;-1:-1:-1;7322:59:0;;;;7474:3;;7433:11;;;;7445:25;7459:10;7445:13;:25::i;:::-;-1:-1:-1;;;;;7433:38:0;;;;;;;;;;;;-1:-1:-1;7433:38:0;:44;-1:-1:-1;7551:1:0;;-1:-1:-1;6078:1486:0;;-1:-1:-1;6078:1486:0;;5833:1738;;;;;;;:::o;1643:239::-;1808:11;-1:-1:-1;;;;;1804:60:0;;1780:95::o;13538:8639::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13538:8639:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13538:8639:0;;;-1:-1:-1;13538:8639:0;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:157;941:20;;:25;933:57;;;;;-1:-1:-1;;;933:57:0;;;;;;;;;;;;-1:-1:-1;;;933:57:0;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;45:23;;1001:13:0;:21;;;;;;;;873:157::o

Swarm Source

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