ETH Price: $3,606.72 (+4.51%)
 

Overview

Max Total Supply

8,888,888 LUCKY

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.460241386 LUCKY

Value
$0.00
0xcf29fae8a06a8168f4dabf0763e415a2b8670e25
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:
Lucky

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-29
*/

pragma solidity 0.8.13;
// SPDX-License-Identifier: Unlicensed

// twitter: https://twitter.com/luckycoin_eth
// telegram: https://t.me/+kQx7nIEXvk85YTZk
/*
.------..------..------..------..------.
|L.--. ||U.--. ||C.--. ||K.--. ||Y.--. |
| :/\: || (\/) || :/\: || :/\: || (\/) |
| (__) || :\/: || :\/: || :\/: || :\/: |
| '--'L|| '--'U|| '--'C|| '--'K|| '--'Y|
`------'`------'`------'`------'`------'
*/

/**
 * ERC20 standard interface.
 */


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }

    /**
     * Function modifier to require caller to be contract deployer
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!Owner"); _;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }
    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IUniswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

/*
* Lottery Interface
*/
interface ILottery{
    function checkLottery() external;
    function setTokens(address player, uint256 amount) external;
    function setTime(uint256 timeInHours) external;
    function getTotalWin() external returns (uint256);
    function getTotalWinOf(address player) external returns (uint256);
    event LotteryStart(uint256 startingTime, uint256 finishTime);
    event LotteryFinish(address winner, uint256 wonAmount);
}

contract Lottery is ILottery{
    struct Player{
        uint256 tokens;
        uint256 claimed;
    }

    struct Round{
        uint256 start;
        uint256 finish;
        uint256 won;
        address winner;
    }

    address owner;
    address _contract;
    uint256 totalTokens;
    uint256 totalWin;
    uint256 time = 24;
    bool started;
    mapping(address => Player) private playerStats;
    mapping(address => uint256) private playerIndex;
    address[] private players;
    Round[] rounds;

    constructor(address _owner) {
        _contract = msg.sender;
        owner = _owner;
    }

    modifier onlyContract{
        require(msg.sender == _contract, "Only Contract"); _;
    }

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

    function startLottery() internal onlyContract{
        require(!started, "Lottery alredy started");
        started = true;
        uint256 starting = block.timestamp;
        uint256 finish = starting + (60 * 60 * time); 
        Round memory new_round = Round({
            start: starting,
            finish:finish,
            won:0,
            winner:address(0)
            });

        rounds.push(new_round);
        emit LotteryStart(starting, finish);
    }

    function extractWinner() internal onlyContract{
        require(started, "Lottery not started");
        require(rounds[rounds.length - 1].finish <= block.timestamp, "Lottery not finished");
        uint256 number = (uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, msg.sender))) % totalTokens) + 1;
        for (uint256 i=0; i<players.length;i++){
            if (number <= playerStats[players[i]].tokens){
                address winner = players[i];
                uint256 claim = address(this).balance;
                playerStats[winner].claimed = playerStats[winner].claimed + claim;
                totalWin = totalWin + claim;
                rounds[rounds.length - 1].winner = winner;
                rounds[rounds.length - 1].won = claim;
                started = false;
                if(claim != 0){
                    payable(winner).transfer(claim);
                }       
                emit LotteryFinish(winner, claim);
                break;
            }
            number = number - playerStats[players[i]].tokens;
        }
    }

    function checkLottery() external override onlyContract{
        if (started){
            if (rounds[rounds.length - 1].finish <= block.timestamp){
                extractWinner();
            }            
        }else{
            startLottery();
        }
    }

    function setTokens(address player, uint256 amount) external override onlyContract{
        if(amount > 0 && playerStats[player].tokens == 0){
            addPlayer(player);
        }
        if(amount == 0){
            removePlayer(player);
        }
        totalTokens = (totalTokens - playerStats[player].tokens) + amount;
        playerStats[player].tokens = amount;
    }

    function addPlayer(address player) internal {
        playerIndex[player] = players.length;
        players.push(player);
    }

    function removePlayer(address player) internal {
        uint256 index = playerIndex[player];
        uint256 lastIndex = players.length - 1;
        players[index] = players[lastIndex];
        playerIndex[players[lastIndex]] = index;
        delete playerIndex[player];
        players.pop();

    } 

    function setTime(uint256 timeInHours) external onlyContract{
        require(timeInHours > 0);
        time = timeInHours;
    }

    function getTotalWin() external view override returns(uint256){
        return totalWin;
    }

    function getTotalWinOf(address player) external view override returns(uint256){
        return playerStats[player].claimed;
    }

    function getJackpot() external view returns(uint256){
        return address(this).balance;
    }

    function getFinish() external view returns(uint256){
        require(rounds.length > 0);
        return rounds[rounds.length - 1].finish;
    }

    function getLastRound() external view returns(uint256, uint256, uint256, address){
        require(rounds.length > 0);
        return (rounds[rounds.length - 1].start, rounds[rounds.length - 1].finish, rounds[rounds.length - 1].won, rounds[rounds.length - 1].winner);
    }

    function getRound(uint256 round) external view returns(uint256, uint256, uint256, address){
        require(rounds.length > 0);
        return (rounds[rounds.length - 1].start, rounds[round].finish, rounds[round].won, rounds[round].winner);
    }

    function getIsStarted() external view returns(bool){
        return started;
    }

    function getPartecipants() external view returns(uint256){
        return players.length;
    }

    function getLastWinner() external view returns(address, uint256){
        require(rounds.length > 0);
        Round memory last;
        if (started){
            last = rounds[rounds.length - 2];
        }else{
            last = rounds[rounds.length -1];
        }
        return (last.winner, last.won);
                
    }

    function getTotalTokens() external view returns(uint256){
        return totalTokens;
    }

    function getProbability(address player) external view returns(uint256){
        return (playerStats[player].tokens / totalTokens) * 100;
    }

    receive() external payable { }
}

contract Lucky is IERC20, Auth {
    address private WETH;
    address private DEAD = 0x000000000000000000000000000000000000dEaD;
    address private ZERO = 0x0000000000000000000000000000000000000000;

    string private constant  _name = "Lucky Coin";
    string private constant _symbol = "LUCKY";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 8888888 * (10 ** _decimals);
    uint256 private _maxTxAmountBuy = _totalSupply;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private isFeeExempt;
    mapping (address => bool) private isJackpotExempt;
            
    uint256 private totalFee = 8;
    uint256 private feeDenominator = 100;

    address payable public marketingWallet = payable(0xFAdf8aE4a2Eb67dEFab908D80Dec0BDa532e6Ae8);

    IDEXRouter public router;
    address public pair;

    bool private buyLimit = true;
    uint256 private maxBuy = 177777 * (10 ** _decimals);
    uint256 private swapLimit;
    Lottery private lottery;    
    
    bool private inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (
        address _owner
    ) Auth(_owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        lottery = new Lottery(_owner);
        swapLimit = 10000000000000000;
        isFeeExempt[_owner] = true;
        isFeeExempt[marketingWallet] = true;             
        isJackpotExempt[_owner] = true;
        isJackpotExempt[pair] = true;
        isJackpotExempt[address(this)] = true;
        isJackpotExempt[DEAD] = true;
        isJackpotExempt[ZERO] = true;        
        
        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }
    receive() external payable { }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (buyLimit) { 
            if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir");        
        }

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        uint256 token_price = currentTokenPriceInETH();
        if(token_price != 0 && token_price * balanceOf(address(this)) >= swapLimit && recipient==pair){ swapBack(); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = !(isFeeExempt[sender] || isFeeExempt[recipient]) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient] + amountReceived;

        if(sender != pair && !isJackpotExempt[sender]){ try lottery.setTokens(sender, _balances[sender]) {} catch {} }
        if(recipient != pair && !isJackpotExempt[recipient]){ try lottery.setTokens(recipient, _balances[recipient]) {} catch {} }
        lottery.checkLottery();

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount;
        address contractAddress = address(this);
        feeAmount = (amount * totalFee) / feeDenominator;
        _balances[contractAddress] = _balances[contractAddress] + feeAmount;
        emit Transfer(sender, contractAddress, feeAmount);   
        return amount - feeAmount;
    }

    function swapBack() internal swapping {
        // swap token for ETH
        uint256 amountToSwap = balanceOf(address(this));        
        swapTokensForEth(amountToSwap);

        // transfer ETH to marketing and lottery address
        uint256 currentEthBalance = address(this).balance;
        payable(marketingWallet).transfer(currentEthBalance / 2);        
        payable(address(lottery)).transfer(currentEthBalance / 2);
              
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function currentTokenPriceInETH() internal view returns (uint) {
        IUniswapV2Pair pool = IUniswapV2Pair(pair);
        (uint tokenReserve, uint ethReserve, ) = pool.getReserves();
        if (tokenReserve == 0){
            return 0;
        }
        uint tokenPriceInETH = (ethReserve * 1e18) / tokenReserve;
        return tokenPriceInETH;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = payable(_marketingWallet);
    }

    function removeBuyLimit() external onlyOwner {
        buyLimit = false;
    }

    function setSwapLimit(uint256 amount) external onlyOwner {
        require(amount > 0, "Swap limit have to be greater than 0");
        swapLimit = amount;
    }

    function setTime(uint256 timeInHours) external onlyOwner {
        lottery.setTime(timeInHours);        
    }

    function getTotalWin() external view returns (uint256) {
        return lottery.getTotalWin();
    }

     function getTotalWinOf(address shareholder) external view returns (uint256) {
        return lottery.getTotalWinOf(shareholder);
    }

    function getJackpot() external view returns (uint256) {
        return lottery.getJackpot();
    }

    function getFinish() external view returns (uint256) {
        return lottery.getFinish();
    }

    function getRound(uint256 round) external view returns(uint256, uint256, uint256, address){
        return lottery.getRound(round);
    }

    function getIsStarted() external view returns(bool){
        return lottery.getIsStarted();
    }

    function getLastRound() external view returns(uint256, uint256, uint256, address){
        return lottery.getLastRound();
    }

    function getPartecipants() external view returns(uint256){
        return lottery.getPartecipants();
    }

    function getLastWinner() external view returns(address, uint256){
        return lottery.getLastWinner();
    }

    function getCirculatingSupply() external view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function getTotalTokens() external view returns(uint256){
        return lottery.getTotalTokens();
    }

    function getProbability(address player) external view returns(uint256){
        return lottery.getProbability(player);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIsStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getJackpot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastWinner","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPartecipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getProbability","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"round","type":"uint256"}],"name":"getRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalWin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getTotalWinOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeInHours","type":"uint256"}],"name":"setTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326009600a6200051a565b62000041906287a23862000532565b60048190556005556008600a9081556064600b55600c80546001600160a01b03191673fadf8ae4a2eb67defab908d80dec0bda532e6ae8179055600e805460ff60a01b1916600160a01b1790556200009c906009906200051a565b620000ab906202b67162000532565b600f55348015620000bb57600080fd5b506040516200312938038062003129833981016040819052620000de9162000554565b600080546001600160a01b03199081166001600160a01b03841617909155600d8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000157573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017d919062000554565b600180546001600160a01b0319166001600160a01b03928316179055600d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000554565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000554565b600e80546001600160a01b0319166001600160a01b03928316179055306000908152600760209081526040808320600d5490941683529290528190206000199055518190620002c990620003f7565b6001600160a01b039091168152602001604051809103906000f080158015620002f6573d6000803e3d6000fd5b50601180546001600160a01b0319166001600160a01b03928316179055662386f26fc100006010558181166000818152600860209081526040808320805460ff199081166001908117909255600c54871685528285208054821683179055858552600984528285208054821683179055600e5487168552828520805482168317905530855282852080548216831790556002548716855282852080548216831790556003549096168452818420805490961617909455600454838352600682528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200057f565b6111348062001ff583390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200045c57816000190482111562000440576200044062000405565b808516156200044e57918102915b93841c939080029062000420565b509250929050565b600082620004755750600162000514565b81620004845750600062000514565b81600181146200049d5760028114620004a857620004c8565b600191505062000514565b60ff841115620004bc57620004bc62000405565b50506001821b62000514565b5060208310610133831016604e8410600b8410161715620004ed575081810a62000514565b620004f983836200041b565b806000190482111562000510576200051062000405565b0290505b92915050565b60006200052b60ff84168362000464565b9392505050565b60008160001904831182151516156200054f576200054f62000405565b500290565b6000602082840312156200056757600080fd5b81516001600160a01b03811681146200052b57600080fd5b611a66806200058f6000396000f3fe6080604052600436106101f25760003560e01c8063658d4b7f1161010d578063a8aa1b31116100a0578063f08b82e61161006f578063f08b82e6146105fb578063f2fde38b14610610578063f88649a114610630578063f887ea4014610664578063f9ceb3ea1461068457600080fd5b8063a8aa1b3114610560578063a9059cbb14610580578063c6adef88146105a0578063dd62ed3e146105b557600080fd5b80638f1327c0116100dc5780638f1327c0146104e85780639329066c1461050857806393b92bc71461051d57806395d89b411461053257600080fd5b8063658d4b7f1461043c57806370a082311461045c57806375f0a87414610492578063893d20e8146104ca57600080fd5b80633e07ce5b116101855780634b46e301116101545780634b46e301146103bc5780634bcf9ff9146103dc578063571ac8b0146103fc5780635d098b381461041c57600080fd5b80633e07ce5b146103345780633ec8ec5a146103495780634231a2c31461035e5780634a0c43621461039c57600080fd5b80632b112e49116101c15780632b112e49146102b25780632f54bf6e146102c7578063313ce567146102f65780633beb26c41461031257600080fd5b806306fdde03146101fe578063095ea7b31461024357806318160ddd1461027357806323b872dd1461029257600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600a815269263ab1b5bc9021b7b4b760b11b60208201525b60405161023a919061166d565b60405180910390f35b34801561024f57600080fd5b5061026361025e3660046116da565b610699565b604051901515815260200161023a565b34801561027f57600080fd5b506004545b60405190815260200161023a565b34801561029e57600080fd5b506102636102ad366004611706565b610705565b3480156102be57600080fd5b5061028461079a565b3480156102d357600080fd5b506102636102e2366004611747565b6000546001600160a01b0391821691161490565b34801561030257600080fd5b506040516009815260200161023a565b34801561031e57600080fd5b5061033261032d366004611764565b6107ec565b005b34801561034057600080fd5b50610332610880565b34801561035557600080fd5b506102846108b9565b34801561036a57600080fd5b50610373610927565b604080519485526020850193909352918301526001600160a01b0316606082015260800161023a565b3480156103a857600080fd5b506102846103b7366004611747565b6109b2565b3480156103c857600080fd5b506103326103d7366004611764565b610a28565b3480156103e857600080fd5b506102846103f7366004611747565b610ab3565b34801561040857600080fd5b50610263610417366004611747565b610ae6565b34801561042857600080fd5b50610332610437366004611747565b610af4565b34801561044857600080fd5b5061033261045736600461178b565b610b40565b34801561046857600080fd5b50610284610477366004611747565b6001600160a01b031660009081526006602052604090205490565b34801561049e57600080fd5b50600c546104b2906001600160a01b031681565b6040516001600160a01b03909116815260200161023a565b3480156104d657600080fd5b506000546001600160a01b03166104b2565b3480156104f457600080fd5b50610373610503366004611764565b610b95565b34801561051457600080fd5b50610284610c1a565b34801561052957600080fd5b50610263610c64565b34801561053e57600080fd5b506040805180820190915260058152644c55434b5960d81b602082015261022d565b34801561056c57600080fd5b50600e546104b2906001600160a01b031681565b34801561058c57600080fd5b5061026361059b3660046116da565b610cd2565b3480156105ac57600080fd5b50610284610cdf565b3480156105c157600080fd5b506102846105d03660046117c4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561060757600080fd5b50610284610d29565b34801561061c57600080fd5b5061033261062b366004611747565b610d73565b34801561063c57600080fd5b50610645610df1565b604080516001600160a01b03909316835260208301919091520161023a565b34801561067057600080fd5b50600d546104b2906001600160a01b031681565b34801561069057600080fd5b50610284610e67565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f49086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610785576001600160a01b0384166000908152600760209081526040808320338452909152902054610760908390611808565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610790848484610eb1565b90505b9392505050565b6003546001600160a01b03166000908152600660205260408120546002546001600160a01b03166000908152600660205260409020546004546107dd9190611808565b6107e79190611808565b905090565b6000546001600160a01b0316331461081f5760405162461bcd60e51b81526004016108169061181f565b60405180910390fd5b601154604051630efac9b160e21b8152600481018390526001600160a01b0390911690633beb26c490602401600060405180830381600087803b15801561086557600080fd5b505af1158015610879573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146108aa5760405162461bcd60e51b81526004016108169061181f565b600e805460ff60a01b19169055565b60115460408051631f64762d60e11b815290516000926001600160a01b031691633ec8ec5a9160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e7919061183f565b600080600080601160009054906101000a90046001600160a01b03166001600160a01b0316634231a2c36040518163ffffffff1660e01b8152600401608060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190611858565b935093509350935090919293565b60115460405163250621b160e11b81526001600160a01b0383811660048301526000921690634a0c4362906024015b602060405180830381865afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a22919061183f565b92915050565b6000546001600160a01b03163314610a525760405162461bcd60e51b81526004016108169061181f565b60008111610aae5760405162461bcd60e51b8152602060048201526024808201527f53776170206c696d6974206861766520746f20626520677265617465722074686044820152630616e20360e41b6064820152608401610816565b601055565b601154604051634bcf9ff960e01b81526001600160a01b0383811660048301526000921690634bcf9ff9906024016109e1565b6000610a2282600019610699565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b81526004016108169061181f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b81526004016108169061181f565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60115460405163023c4c9f60e61b8152600481018390526000918291829182916001600160a01b0390911690638f1327c090602401608060405180830381865afa158015610be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190611858565b93509350935093509193509193565b601154604080516324ca419b60e21b815290516000926001600160a01b031691639329066c9160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b601154604080516393b92bc760e01b815290516000926001600160a01b0316916393b92bc79160048083019260209291908290030181865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611899565b6000610793338484610eb1565b601154604080516318d5bdf160e31b815290516000926001600160a01b03169163c6adef889160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b60115460408051637845c17360e11b815290516000926001600160a01b03169163f08b82e69160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b6000546001600160a01b03163314610d9d5760405162461bcd60e51b81526004016108169061181f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6011546040805163f88649a160e01b8152815160009384936001600160a01b039091169263f88649a192600480830193928290030181865afa158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f91906118b6565b915091509091565b60115460408051637ce759f560e11b815290516000926001600160a01b03169163f9ceb3ea9160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b600e54600090600160a01b900460ff1615610f38576000546001600160a01b03858116911614801590610ef257506000546001600160a01b03848116911614155b15610f3857600f54821115610f385760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b6044820152606401610816565b601154600160a01b900460ff1615610f5c57610f55848484611295565b9050610793565b6000610f6661134f565b90508015801590610f92575060105430600090815260066020526040902054610f8f90836118e4565b10155b8015610fab5750600e546001600160a01b038581169116145b15610fb857610fb8611415565b6001600160a01b038516600090815260066020526040902054610fdc908490611808565b6001600160a01b038616600090815260066020908152604080832093909355600890529081205460ff168061102957506001600160a01b03851660009081526008602052604090205460ff165b15611034578361103e565b61103e86856114dc565b6001600160a01b038616600090815260066020526040902054909150611065908290611903565b6001600160a01b03808716600090815260066020526040902091909155600e548782169116148015906110b157506001600160a01b03861660009081526009602052604090205460ff16155b15611127576011546001600160a01b038781166000818152600660205260409081902054905163bac7965160e01b81526004810192909252602482015291169063bac7965190604401600060405180830381600087803b15801561111457600080fd5b505af1925050508015611125575060015b505b600e546001600160a01b0386811691161480159061115e57506001600160a01b03851660009081526009602052604090205460ff16155b156111d4576011546001600160a01b038681166000818152600660205260409081902054905163bac7965160e01b81526004810192909252602482015291169063bac7965190604401600060405180830381600087803b1580156111c157600080fd5b505af19250505080156111d2575060015b505b601160009054906101000a90046001600160a01b03166001600160a01b031663864f61196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561122457600080fd5b505af1158015611238573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161128191815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383166000908152600660205260408120546112b9908390611808565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546112e9908390611903565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061133d9086815260200190565b60405180910390a35060019392505050565b600e5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa1580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c49190611937565b506001600160701b031691506001600160701b03169150816000036113ed576000935050505090565b60008261140283670de0b6b3a76400006118e4565b61140c9190611987565b95945050505050565b6011805460ff60a01b1916600160a01b1790553060009081526006602052604081205490506114438161158c565b600c5447906001600160a01b03166108fc61145f600284611987565b6040518115909202916000818181858888f19350505050158015611487573d6000803e3d6000fd5b506011546001600160a01b03166108fc6114a2600284611987565b6040518115909202916000818181858888f193505050501580156114ca573d6000803e3d6000fd5b50506011805460ff60a01b1916905550565b6000806000309050600b54600a54856114f591906118e4565b6114ff9190611987565b6001600160a01b038216600090815260066020526040902054909250611526908390611903565b6001600160a01b0380831660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061157a9086815260200190565b60405180910390a361140c8285611808565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115c1576115c16119a9565b6001600160a01b03928316602091820292909201015260018054835192169183919081106115f1576115f16119a9565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac947906116379085906000908690309042906004016119bf565b600060405180830381600087803b15801561165157600080fd5b505af1158015611665573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561169a5785810183015185820160400152820161167e565b818111156116ac576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116d757600080fd5b50565b600080604083850312156116ed57600080fd5b82356116f8816116c2565b946020939093013593505050565b60008060006060848603121561171b57600080fd5b8335611726816116c2565b92506020840135611736816116c2565b929592945050506040919091013590565b60006020828403121561175957600080fd5b8135610793816116c2565b60006020828403121561177657600080fd5b5035919050565b80151581146116d757600080fd5b6000806040838503121561179e57600080fd5b82356117a9816116c2565b915060208301356117b98161177d565b809150509250929050565b600080604083850312156117d757600080fd5b82356117e2816116c2565b915060208301356117b9816116c2565b634e487b7160e01b600052601160045260246000fd5b60008282101561181a5761181a6117f2565b500390565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b60006020828403121561185157600080fd5b5051919050565b6000806000806080858703121561186e57600080fd5b845193506020850151925060408501519150606085015161188e816116c2565b939692955090935050565b6000602082840312156118ab57600080fd5b81516107938161177d565b600080604083850312156118c957600080fd5b82516118d4816116c2565b6020939093015192949293505050565b60008160001904831182151516156118fe576118fe6117f2565b500290565b60008219821115611916576119166117f2565b500190565b80516001600160701b038116811461193257600080fd5b919050565b60008060006060848603121561194c57600080fd5b6119558461191b565b92506119636020850161191b565b9150604084015163ffffffff8116811461197c57600080fd5b809150509250925092565b6000826119a457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a0f5784516001600160a01b0316835293830193918301916001016119ea565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212200181b8af3f51eae223ea413a8581686cb09f228bfc28fb6d4a2f1bc4f349096564736f6c634300080d00336080604052601860045534801561001557600080fd5b5060405161113438038061113483398101604081905261003491610067565b60018054336001600160a01b031991821617909155600080549091166001600160a01b0392909216919091179055610097565b60006020828403121561007957600080fd5b81516001600160a01b038116811461009057600080fd5b9392505050565b61108e806100a66000396000f3fe6080604052600436106100e15760003560e01c80639329066c1161007f578063c6adef8811610059578063c6adef8814610259578063f08b82e61461026e578063f88649a114610283578063f9ceb3ea146102b757600080fd5b80639329066c1461020357806393b92bc714610216578063bac796511461023957600080fd5b80634a0c4362116100bb5780634a0c4362146101755780634bcf9ff914610195578063864f6119146101ce5780638f1327c0146101e357600080fd5b80633beb26c4146100ed5780633ec8ec5a1461010f5780634231a2c31461013757600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610ec9565b6102cc565b005b34801561011b57600080fd5b50610124610311565b6040519081526020015b60405180910390f35b34801561014357600080fd5b5061014c610357565b604080519485526020850193909352918301526001600160a01b0316606082015260800161012e565b34801561018157600080fd5b50610124610190366004610efe565b610458565b3480156101a157600080fd5b506101246101b0366004610efe565b6001600160a01b031660009081526006602052604090206001015490565b3480156101da57600080fd5b5061010d610490565b3480156101ef57600080fd5b5061014c6101fe366004610ec9565b610511565b34801561020f57600080fd5b5047610124565b34801561022257600080fd5b5060055460ff16604051901515815260200161012e565b34801561024557600080fd5b5061010d610254366004610f20565b6105e5565b34801561026557600080fd5b50600354610124565b34801561027a57600080fd5b50600254610124565b34801561028f57600080fd5b506102986106f8565b604080516001600160a01b03909316835260208301919091520161012e565b3480156102c357600080fd5b50600854610124565b6001546001600160a01b031633146102ff5760405162461bcd60e51b81526004016102f690610f4a565b60405180910390fd5b6000811161030c57600080fd5b600455565b60095460009061032057600080fd5b6009805461033090600190610f87565b8154811061034057610340610f9e565b906000526020600020906004020160010154905090565b60008060008060006009805490501161036f57600080fd5b6009805461037f90600190610f87565b8154811061038f5761038f610f9e565b6000918252602090912060049091020154600980546103b090600190610f87565b815481106103c0576103c0610f9e565b906000526020600020906004020160010154600960016009805490506103e69190610f87565b815481106103f6576103f6610f9e565b9060005260206000209060040201600201546009600160098054905061041c9190610f87565b8154811061042c5761042c610f9e565b6000918252602090912060049091020160030154929791965094506001600160a01b0390911692509050565b6002546001600160a01b038216600090815260066020526040812054909161047f91610fca565b61048a906064610fde565b92915050565b6001546001600160a01b031633146104ba5760405162461bcd60e51b81526004016102f690610f4a565b60055460ff161561050957600980544291906104d890600190610f87565b815481106104e8576104e8610f9e565b9060005260206000209060040201600101541161050757610507610839565b565b610507610bda565b60008060008060006009805490501161052957600080fd5b6009805461053990600190610f87565b8154811061054957610549610f9e565b9060005260206000209060040201600001546009868154811061056e5761056e610f9e565b9060005260206000209060040201600101546009878154811061059357610593610f9e565b906000526020600020906004020160020154600988815481106105b8576105b8610f9e565b6000918252602090912060049091020160030154929891975095506001600160a01b039091169350915050565b6001546001600160a01b0316331461060f5760405162461bcd60e51b81526004016102f690610f4a565b60008111801561063557506001600160a01b038216600090815260066020526040902054155b1561069757600880546001600160a01b0384166000818152600760205260408120839055600183018455929092527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b806000036106a8576106a882610da4565b6001600160a01b03821660009081526006602052604090205460025482916106cf91610f87565b6106d99190610ffd565b6002556001600160a01b03909116600090815260066020526040902055565b600954600090819061070957600080fd5b61073d604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b60055460ff16156107b9576009805461075890600290610f87565b8154811061076857610768610f9e565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529050610826565b600980546107c990600190610f87565b815481106107d9576107d9610f9e565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b0316606082015290505b8060600151816040015192509250509091565b6001546001600160a01b031633146108635760405162461bcd60e51b81526004016102f690610f4a565b60055460ff166108ab5760405162461bcd60e51b8152602060048201526013602482015272131bdd1d195c9e481b9bdd081cdd185c9d1959606a1b60448201526064016102f6565b600980544291906108be90600190610f87565b815481106108ce576108ce610f9e565b90600052602060002090600402016001015411156109255760405162461bcd60e51b8152602060048201526014602482015273131bdd1d195c9e481b9bdd08199a5b9a5cda195960621b60448201526064016102f6565b600060025442443360405160200161096293929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c6109859190611015565b610990906001610ffd565b905060005b600854811015610bd65760066000600883815481106109b6576109b6610f9e565b60009182526020808320909101546001600160a01b031683528201929092526040019020548211610b7c576000600882815481106109f6576109f6610f9e565b60009182526020808320909101546001600160a01b031680835260069091526040909120600101549091504790610a2e908290610ffd565b6001600160a01b038316600090815260066020526040902060010155600354610a58908290610ffd565b60035560098054839190610a6e90600190610f87565b81548110610a7e57610a7e610f9e565b906000526020600020906004020160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060096001600980549050610ac89190610f87565b81548110610ad857610ad8610f9e565b60009182526020909120600260049092020101556005805460ff191690558015610b34576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b32573d6000803e3d6000fd5b505b604080516001600160a01b0384168152602081018390527f720f8a4b5060e2495652328c1717661d05099a1b68f8f2519a7ce3df8e601a5f910160405180910390a150505050565b6006600060088381548110610b9357610b93610f9e565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610bc29083610f87565b915080610bce81611029565b915050610995565b5050565b6001546001600160a01b03163314610c045760405162461bcd60e51b81526004016102f690610f4a565b60055460ff1615610c505760405162461bcd60e51b8152602060048201526016602482015275131bdd1d195c9e48185b1c99591e481cdd185c9d195960521b60448201526064016102f6565b6005805460ff191660011790556004544290600090610c7190610e10610fde565b610c7b9083610ffd565b60408051608081018252848152602080820184815260008385018181526060850182815260098054600181018255935285517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af60049094029384015592517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b0830155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b182015590517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b290910180546001600160a01b0319166001600160a01b039092169190911790558251868152908101849052929350917f2e7055f455cac78d8c21bf86866616fcff1cd6f77bc9a99739b67b5874ac7c15910160405180910390a1505050565b6001600160a01b038116600090815260076020526040812054600854909190610dcf90600190610f87565b905060088181548110610de457610de4610f9e565b600091825260209091200154600880546001600160a01b039092169184908110610e1057610e10610f9e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816007600060088481548110610e5657610e56610f9e565b60009182526020808320909101546001600160a01b03908116845283820194909452604092830182209490945591861682526007909252908120556008805480610ea257610ea2611042565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b600060208284031215610edb57600080fd5b5035919050565b80356001600160a01b0381168114610ef957600080fd5b919050565b600060208284031215610f1057600080fd5b610f1982610ee2565b9392505050565b60008060408385031215610f3357600080fd5b610f3c83610ee2565b946020939093013593505050565b6020808252600d908201526c13db9b1e4810dbdb9d1c9858dd609a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015610f9957610f99610f71565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082610fd957610fd9610fb4565b500490565b6000816000190483118215151615610ff857610ff8610f71565b500290565b6000821982111561101057611010610f71565b500190565b60008261102457611024610fb4565b500690565b60006001820161103b5761103b610f71565b5060010190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122007024c8182541c66a0c0a09cf0a7392d1f92a4ed9a8cd51a9bfe8412b266942e64736f6c634300080d003300000000000000000000000042048ee968e78dfa75433379639ecc05067e7342

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063658d4b7f1161010d578063a8aa1b31116100a0578063f08b82e61161006f578063f08b82e6146105fb578063f2fde38b14610610578063f88649a114610630578063f887ea4014610664578063f9ceb3ea1461068457600080fd5b8063a8aa1b3114610560578063a9059cbb14610580578063c6adef88146105a0578063dd62ed3e146105b557600080fd5b80638f1327c0116100dc5780638f1327c0146104e85780639329066c1461050857806393b92bc71461051d57806395d89b411461053257600080fd5b8063658d4b7f1461043c57806370a082311461045c57806375f0a87414610492578063893d20e8146104ca57600080fd5b80633e07ce5b116101855780634b46e301116101545780634b46e301146103bc5780634bcf9ff9146103dc578063571ac8b0146103fc5780635d098b381461041c57600080fd5b80633e07ce5b146103345780633ec8ec5a146103495780634231a2c31461035e5780634a0c43621461039c57600080fd5b80632b112e49116101c15780632b112e49146102b25780632f54bf6e146102c7578063313ce567146102f65780633beb26c41461031257600080fd5b806306fdde03146101fe578063095ea7b31461024357806318160ddd1461027357806323b872dd1461029257600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5060408051808201909152600a815269263ab1b5bc9021b7b4b760b11b60208201525b60405161023a919061166d565b60405180910390f35b34801561024f57600080fd5b5061026361025e3660046116da565b610699565b604051901515815260200161023a565b34801561027f57600080fd5b506004545b60405190815260200161023a565b34801561029e57600080fd5b506102636102ad366004611706565b610705565b3480156102be57600080fd5b5061028461079a565b3480156102d357600080fd5b506102636102e2366004611747565b6000546001600160a01b0391821691161490565b34801561030257600080fd5b506040516009815260200161023a565b34801561031e57600080fd5b5061033261032d366004611764565b6107ec565b005b34801561034057600080fd5b50610332610880565b34801561035557600080fd5b506102846108b9565b34801561036a57600080fd5b50610373610927565b604080519485526020850193909352918301526001600160a01b0316606082015260800161023a565b3480156103a857600080fd5b506102846103b7366004611747565b6109b2565b3480156103c857600080fd5b506103326103d7366004611764565b610a28565b3480156103e857600080fd5b506102846103f7366004611747565b610ab3565b34801561040857600080fd5b50610263610417366004611747565b610ae6565b34801561042857600080fd5b50610332610437366004611747565b610af4565b34801561044857600080fd5b5061033261045736600461178b565b610b40565b34801561046857600080fd5b50610284610477366004611747565b6001600160a01b031660009081526006602052604090205490565b34801561049e57600080fd5b50600c546104b2906001600160a01b031681565b6040516001600160a01b03909116815260200161023a565b3480156104d657600080fd5b506000546001600160a01b03166104b2565b3480156104f457600080fd5b50610373610503366004611764565b610b95565b34801561051457600080fd5b50610284610c1a565b34801561052957600080fd5b50610263610c64565b34801561053e57600080fd5b506040805180820190915260058152644c55434b5960d81b602082015261022d565b34801561056c57600080fd5b50600e546104b2906001600160a01b031681565b34801561058c57600080fd5b5061026361059b3660046116da565b610cd2565b3480156105ac57600080fd5b50610284610cdf565b3480156105c157600080fd5b506102846105d03660046117c4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561060757600080fd5b50610284610d29565b34801561061c57600080fd5b5061033261062b366004611747565b610d73565b34801561063c57600080fd5b50610645610df1565b604080516001600160a01b03909316835260208301919091520161023a565b34801561067057600080fd5b50600d546104b2906001600160a01b031681565b34801561069057600080fd5b50610284610e67565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f49086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610785576001600160a01b0384166000908152600760209081526040808320338452909152902054610760908390611808565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610790848484610eb1565b90505b9392505050565b6003546001600160a01b03166000908152600660205260408120546002546001600160a01b03166000908152600660205260409020546004546107dd9190611808565b6107e79190611808565b905090565b6000546001600160a01b0316331461081f5760405162461bcd60e51b81526004016108169061181f565b60405180910390fd5b601154604051630efac9b160e21b8152600481018390526001600160a01b0390911690633beb26c490602401600060405180830381600087803b15801561086557600080fd5b505af1158015610879573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146108aa5760405162461bcd60e51b81526004016108169061181f565b600e805460ff60a01b19169055565b60115460408051631f64762d60e11b815290516000926001600160a01b031691633ec8ec5a9160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e7919061183f565b600080600080601160009054906101000a90046001600160a01b03166001600160a01b0316634231a2c36040518163ffffffff1660e01b8152600401608060405180830381865afa158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190611858565b935093509350935090919293565b60115460405163250621b160e11b81526001600160a01b0383811660048301526000921690634a0c4362906024015b602060405180830381865afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a22919061183f565b92915050565b6000546001600160a01b03163314610a525760405162461bcd60e51b81526004016108169061181f565b60008111610aae5760405162461bcd60e51b8152602060048201526024808201527f53776170206c696d6974206861766520746f20626520677265617465722074686044820152630616e20360e41b6064820152608401610816565b601055565b601154604051634bcf9ff960e01b81526001600160a01b0383811660048301526000921690634bcf9ff9906024016109e1565b6000610a2282600019610699565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b81526004016108169061181f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b81526004016108169061181f565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60115460405163023c4c9f60e61b8152600481018390526000918291829182916001600160a01b0390911690638f1327c090602401608060405180830381865afa158015610be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190611858565b93509350935093509193509193565b601154604080516324ca419b60e21b815290516000926001600160a01b031691639329066c9160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b601154604080516393b92bc760e01b815290516000926001600160a01b0316916393b92bc79160048083019260209291908290030181865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611899565b6000610793338484610eb1565b601154604080516318d5bdf160e31b815290516000926001600160a01b03169163c6adef889160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b60115460408051637845c17360e11b815290516000926001600160a01b03169163f08b82e69160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b6000546001600160a01b03163314610d9d5760405162461bcd60e51b81526004016108169061181f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6011546040805163f88649a160e01b8152815160009384936001600160a01b039091169263f88649a192600480830193928290030181865afa158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f91906118b6565b915091509091565b60115460408051637ce759f560e11b815290516000926001600160a01b03169163f9ceb3ea9160048083019260209291908290030181865afa158015610903573d6000803e3d6000fd5b600e54600090600160a01b900460ff1615610f38576000546001600160a01b03858116911614801590610ef257506000546001600160a01b03848116911614155b15610f3857600f54821115610f385760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b6044820152606401610816565b601154600160a01b900460ff1615610f5c57610f55848484611295565b9050610793565b6000610f6661134f565b90508015801590610f92575060105430600090815260066020526040902054610f8f90836118e4565b10155b8015610fab5750600e546001600160a01b038581169116145b15610fb857610fb8611415565b6001600160a01b038516600090815260066020526040902054610fdc908490611808565b6001600160a01b038616600090815260066020908152604080832093909355600890529081205460ff168061102957506001600160a01b03851660009081526008602052604090205460ff165b15611034578361103e565b61103e86856114dc565b6001600160a01b038616600090815260066020526040902054909150611065908290611903565b6001600160a01b03808716600090815260066020526040902091909155600e548782169116148015906110b157506001600160a01b03861660009081526009602052604090205460ff16155b15611127576011546001600160a01b038781166000818152600660205260409081902054905163bac7965160e01b81526004810192909252602482015291169063bac7965190604401600060405180830381600087803b15801561111457600080fd5b505af1925050508015611125575060015b505b600e546001600160a01b0386811691161480159061115e57506001600160a01b03851660009081526009602052604090205460ff16155b156111d4576011546001600160a01b038681166000818152600660205260409081902054905163bac7965160e01b81526004810192909252602482015291169063bac7965190604401600060405180830381600087803b1580156111c157600080fd5b505af19250505080156111d2575060015b505b601160009054906101000a90046001600160a01b03166001600160a01b031663864f61196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561122457600080fd5b505af1158015611238573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161128191815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383166000908152600660205260408120546112b9908390611808565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546112e9908390611903565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061133d9086815260200190565b60405180910390a35060019392505050565b600e5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa1580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c49190611937565b506001600160701b031691506001600160701b03169150816000036113ed576000935050505090565b60008261140283670de0b6b3a76400006118e4565b61140c9190611987565b95945050505050565b6011805460ff60a01b1916600160a01b1790553060009081526006602052604081205490506114438161158c565b600c5447906001600160a01b03166108fc61145f600284611987565b6040518115909202916000818181858888f19350505050158015611487573d6000803e3d6000fd5b506011546001600160a01b03166108fc6114a2600284611987565b6040518115909202916000818181858888f193505050501580156114ca573d6000803e3d6000fd5b50506011805460ff60a01b1916905550565b6000806000309050600b54600a54856114f591906118e4565b6114ff9190611987565b6001600160a01b038216600090815260066020526040902054909250611526908390611903565b6001600160a01b0380831660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061157a9086815260200190565b60405180910390a361140c8285611808565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115c1576115c16119a9565b6001600160a01b03928316602091820292909201015260018054835192169183919081106115f1576115f16119a9565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac947906116379085906000908690309042906004016119bf565b600060405180830381600087803b15801561165157600080fd5b505af1158015611665573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561169a5785810183015185820160400152820161167e565b818111156116ac576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116d757600080fd5b50565b600080604083850312156116ed57600080fd5b82356116f8816116c2565b946020939093013593505050565b60008060006060848603121561171b57600080fd5b8335611726816116c2565b92506020840135611736816116c2565b929592945050506040919091013590565b60006020828403121561175957600080fd5b8135610793816116c2565b60006020828403121561177657600080fd5b5035919050565b80151581146116d757600080fd5b6000806040838503121561179e57600080fd5b82356117a9816116c2565b915060208301356117b98161177d565b809150509250929050565b600080604083850312156117d757600080fd5b82356117e2816116c2565b915060208301356117b9816116c2565b634e487b7160e01b600052601160045260246000fd5b60008282101561181a5761181a6117f2565b500390565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b60006020828403121561185157600080fd5b5051919050565b6000806000806080858703121561186e57600080fd5b845193506020850151925060408501519150606085015161188e816116c2565b939692955090935050565b6000602082840312156118ab57600080fd5b81516107938161177d565b600080604083850312156118c957600080fd5b82516118d4816116c2565b6020939093015192949293505050565b60008160001904831182151516156118fe576118fe6117f2565b500290565b60008219821115611916576119166117f2565b500190565b80516001600160701b038116811461193257600080fd5b919050565b60008060006060848603121561194c57600080fd5b6119558461191b565b92506119636020850161191b565b9150604084015163ffffffff8116811461197c57600080fd5b809150509250925092565b6000826119a457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a0f5784516001600160a01b0316835293830193918301916001016119ea565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212200181b8af3f51eae223ea413a8581686cb09f228bfc28fb6d4a2f1bc4f349096564736f6c634300080d0033

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

00000000000000000000000042048ee968e78dfa75433379639ecc05067e7342

-----Decoded View---------------
Arg [0] : _owner (address): 0x42048Ee968e78DFA75433379639ecC05067e7342

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000042048ee968e78dfa75433379639ecc05067e7342


Deployed Bytecode Sourcemap

8902:8887:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11276:80;;;;;;;;;;-1:-1:-1;11348:5:0;;;;;;;;;;;;-1:-1:-1;;;11348:5:0;;;;11276:80;;;;;;;:::i;:::-;;;;;;;;11698:216;;;;;;;;;;-1:-1:-1;11698:216:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;11698:216:0;1072:187:1;11006:88:0;;;;;;;;;;-1:-1:-1;11079:12:0;;11006:88;;;1410:25:1;;;1398:2;1383:18;11006:88:0;1264:177:1;12216:339:0;;;;;;;;;;-1:-1:-1;12216:339:0;;;;;:::i;:::-;;:::i;17400:138::-;;;;;;;;;;;;;:::i;1817:103::-;;;;;;;;;;-1:-1:-1;1817:103:0;;;;;:::i;:::-;1872:4;1907:5;-1:-1:-1;;;;;1896:16:0;;;1907:5;;1896:16;;1817:103;11100:80;;;;;;;;;;-1:-1:-1;11100:80:0;;9248:1;2301:36:1;;2289:2;2274:18;11100:80:0;2159:184:1;16183:112:0;;;;;;;;;;-1:-1:-1;16183:112:0;;;;;:::i;:::-;;:::i;:::-;;15923:80;;;;;;;;;;;;;:::i;16666:98::-;;;;;;;;;;;;;:::i;17026:129::-;;;;;;;;;;;;;:::i;:::-;;;;2764:25:1;;;2820:2;2805:18;;2798:34;;;;2848:18;;;2841:34;-1:-1:-1;;;;;2911:32:1;2906:2;2891:18;;2884:60;2751:3;2736:19;17026:129:0;2533:417:1;17660:126:0;;;;;;;;;;-1:-1:-1;17660:126:0;;;;;:::i;:::-;;:::i;16011:164::-;;;;;;;;;;-1:-1:-1;16011:164:0;;;;;:::i;:::-;;:::i;16414:136::-;;;;;;;;;;-1:-1:-1;16414:136:0;;;;;:::i;:::-;;:::i;11922:122::-;;;;;;;;;;-1:-1:-1;11922:122:0;;;;;:::i;:::-;;:::i;15780:135::-;;;;;;;;;;-1:-1:-1;15780:135:0;;;;;:::i;:::-;;:::i;15653:119::-;;;;;;;;;;-1:-1:-1;15653:119:0;;;;;:::i;:::-;;:::i;11446:105::-;;;;;;;;;;-1:-1:-1;11446:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11530:18:0;11512:7;11530:18;;;:9;:18;;;;;;;11446:105;9711:92;;;;;;;;;;-1:-1:-1;9711:92:0;;;;-1:-1:-1;;;;;9711:92:0;;;;;;-1:-1:-1;;;;;3645:32:1;;;3627:51;;3615:2;3600:18;9711:92:0;3465:219:1;11362:78:0;;;;;;;;;;-1:-1:-1;11414:7:0;11432:5;-1:-1:-1;;;;;11432:5:0;11362:78;;16772:139;;;;;;;;;;-1:-1:-1;16772:139:0;;;;;:::i;:::-;;:::i;16558:100::-;;;;;;;;;;;;;:::i;16919:99::-;;;;;;;;;;;;;:::i;11186:84::-;;;;;;;;;;-1:-1:-1;11260:7:0;;;;;;;;;;;;-1:-1:-1;;;11260:7:0;;;;11186:84;;9843:19;;;;;;;;;;-1:-1:-1;9843:19:0;;;;-1:-1:-1;;;;;9843:19:0;;;12052:156;;;;;;;;;;-1:-1:-1;12052:156:0;;;;;:::i;:::-;;:::i;16303:102::-;;;;;;;;;;;;;:::i;11557:133::-;;;;;;;;;;-1:-1:-1;11557:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11659:19:0;;;11641:7;11659:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11557:133;17546:106;;;;;;;;;;;;;:::i;2045:136::-;;;;;;;;;;-1:-1:-1;2045:136:0;;;;;:::i;:::-;;:::i;17279:113::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;4742:32:1;;;4724:51;;4806:2;4791:18;;4784:34;;;;4697:18;17279:113:0;4550:274:1;9812:24:0;;;;;;;;;;-1:-1:-1;9812:24:0;;;;-1:-1:-1;;;;;9812:24:0;;;17163:108;;;;;;;;;;;;;:::i;11698:216::-;11802:10;11773:4;11790:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11790:32:0;;;;;;;;;;:41;;;11847:37;11773:4;;11790:32;;11847:37;;;;11825:6;1410:25:1;;1398:2;1383:18;;1264:177;11847:37:0;;;;;;;;-1:-1:-1;11902:4:0;11698:216;;;;:::o;12216:339::-;-1:-1:-1;;;;;12336:19:0;;12316:4;12336:19;;;:11;:19;;;;;;;;12356:10;12336:31;;;;;;;;-1:-1:-1;;12336:52:0;12333:157;;-1:-1:-1;;;;;12438:19:0;;;;;;:11;:19;;;;;;;;12458:10;12438:31;;;;;;;;:40;;12472:6;;12438:40;:::i;:::-;-1:-1:-1;;;;;12404:19:0;;;;;;:11;:19;;;;;;;;12424:10;12404:31;;;;;;;:74;12333:157;12507:40;12521:6;12529:9;12540:6;12507:13;:40::i;:::-;12500:47;;12216:339;;;;;;:::o;17400:138::-;17525:4;;-1:-1:-1;;;;;17525:4:0;17455:7;11530:18;;;:9;:18;;;;;;17507:4;;-1:-1:-1;;;;;17507:4:0;11512:7;11530:18;;;:9;:18;;;;;;17482:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;17475:55;;17400:138;:::o;16183:112::-;1872:4;1907:5;-1:-1:-1;;;;;1907:5:0;1724:10;1896:16;1708:38;;;;-1:-1:-1;;;1708:38:0;;;;;;;:::i;:::-;;;;;;;;;16251:7:::1;::::0;:28:::1;::::0;-1:-1:-1;;;16251:28:0;;::::1;::::0;::::1;1410:25:1::0;;;-1:-1:-1;;;;;16251:7:0;;::::1;::::0;:15:::1;::::0;1383:18:1;;16251:28:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16183:112:::0;:::o;15923:80::-;1872:4;1907:5;-1:-1:-1;;;;;1907:5:0;1724:10;1896:16;1708:38;;;;-1:-1:-1;;;1708:38:0;;;;;;;:::i;:::-;15979:8:::1;:16:::0;;-1:-1:-1;;;;15979:16:0::1;::::0;;15923:80::o;16666:98::-;16737:7;;:19;;;-1:-1:-1;;;16737:19:0;;;;16710:7;;-1:-1:-1;;;;;16737:7:0;;:17;;:19;;;;;;;;;;;;;;:7;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17026:129::-;17072:7;17081;17090;17099;17125;;;;;;;;;-1:-1:-1;;;;;17125:7:0;-1:-1:-1;;;;;17125:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17118:29;;;;;;;;17026:129;;;;:::o;17660:126::-;17748:7;;:30;;-1:-1:-1;;;17748:30:0;;-1:-1:-1;;;;;3645:32:1;;;17748:30:0;;;3627:51:1;17722:7:0;;17748;;:22;;3600:18:1;;17748:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17741:37;17660:126;-1:-1:-1;;17660:126:0:o;16011:164::-;1872:4;1907:5;-1:-1:-1;;;;;1907:5:0;1724:10;1896:16;1708:38;;;;-1:-1:-1;;;1708:38:0;;;;;;;:::i;:::-;16096:1:::1;16087:6;:10;16079:59;;;::::0;-1:-1:-1;;;16079:59:0;;6482:2:1;16079:59:0::1;::::0;::::1;6464:21:1::0;6521:2;6501:18;;;6494:30;6560:34;6540:18;;;6533:62;-1:-1:-1;;;6611:18:1;;;6604:34;6655:19;;16079:59:0::1;6280:400:1::0;16079:59:0::1;16149:9;:18:::0;16011:164::o;16414:136::-;16508:7;;:34;;-1:-1:-1;;;16508:34:0;;-1:-1:-1;;;;;3645:32:1;;;16508:34:0;;;3627:51:1;16481:7:0;;16508;;:21;;3600:18:1;;16508:34:0;3465:219:1;11922:122:0;11977:4;12001:35;12009:7;-1:-1:-1;;12001:7:0;:35::i;15780:135::-;1872:4;1907:5;-1:-1:-1;;;;;1907:5:0;1724:10;1896:16;1708:38;;;;-1:-1:-1;;;1708:38:0;;;;;;;:::i;:::-;15864:15:::1;:43:::0;;-1:-1:-1;;;;;;15864:43:0::1;-1:-1:-1::0;;;;;15864:43:0;;;::::1;::::0;;;::::1;::::0;;15780:135::o;15653:119::-;1872:4;1907:5;-1:-1:-1;;;;;1907:5:0;1724:10;1896:16;1708:38;;;;-1:-1:-1;;;1708:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15736:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15736:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15653:119::o;16772:139::-;16880:7;;:23;;-1:-1:-1;;;16880:23:0;;;;;1410:25:1;;;16827:7:0;;;;;;;;-1:-1:-1;;;;;16880:7:0;;;;:16;;1383:18:1;;16880:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16873:30;;;;;;;;16772:139;;;;;:::o;16558:100::-;16630:7;;:20;;;-1:-1:-1;;;16630:20:0;;;;16603:7;;-1:-1:-1;;;;;16630:7:0;;:18;;:20;;;;;;;;;;;;;;:7;:20;;;;;;;;;;;;;;16919:99;16988:7;;:22;;;-1:-1:-1;;;16988:22:0;;;;16965:4;;-1:-1:-1;;;;;16988:7:0;;:20;;:22;;;;;;;;;;;;;;:7;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12052:156::-;12132:4;12156:44;12170:10;12182:9;12193:6;12156:13;:44::i;16303:102::-;16376:7;;:21;;;-1:-1:-1;;;16376:21:0;;;;16349:7;;-1:-1:-1;;;;;16376:7:0;;:19;;:21;;;;;;;;;;;;;;:7;:21;;;;;;;;;;;;;;17546:106;17620:7;;:24;;;-1:-1:-1;;;17620:24:0;;;;17594:7;;-1:-1:-1;;;;;17620:7:0;;:22;;:24;;;;;;;;;;;;;;:7;:24;;;;;;;;;;;;;;2045:136;1872:4;1907:5;-1:-1:-1;;;;;1907:5:0;1724:10;1896:16;1708:38;;;;-1:-1:-1;;;1708:38:0;;;;;;;:::i;:::-;2121:5:::1;:11:::0;;-1:-1:-1;;;;;;2121:11:0::1;-1:-1:-1::0;;;;;2121:11:0;::::1;::::0;;::::1;::::0;;;2148:25:::1;::::0;3627:51:1;;;2148:25:0::1;::::0;3615:2:1;3600:18;2148:25:0::1;;;;;;;2045:136:::0;:::o;17279:113::-;17361:7;;:23;;;-1:-1:-1;;;17361:23:0;;;;17326:7;;;;-1:-1:-1;;;;;17361:7:0;;;;:21;;:23;;;;;;;;;;;:7;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17354:30;;;;17279:113;;:::o;17163:108::-;17238:7;;:25;;;-1:-1:-1;;;17238:25:0;;;;17212:7;;-1:-1:-1;;;;;17238:7:0;;:23;;:25;;;;;;;;;;;;;;:7;:25;;;;;;;;;;;;;;12563:1120;12676:8;;12655:4;;-1:-1:-1;;;12676:8:0;;;;12672:130;;;12714:5;;-1:-1:-1;;;;;12706:13:0;;;12714:5;;12706:13;;;;:34;;-1:-1:-1;12735:5:0;;-1:-1:-1;;;;;12723:17:0;;;12735:5;;12723:17;;12706:34;12702:80;;;12759:6;;12751;:14;;12742:40;;;;-1:-1:-1;;;12742:40:0;;7670:2:1;12742:40:0;;;7652:21:1;7709:2;7689:18;;;7682:30;-1:-1:-1;;;7728:18:1;;;7721:42;7780:18;;12742:40:0;7468:336:1;12742:40:0;12817:6;;-1:-1:-1;;;12817:6:0;;;;12814:63;;;12833:41;12848:6;12856:9;12867:6;12833:14;:41::i;:::-;12826:48;;;;12814:63;12889:19;12911:24;:22;:24::i;:::-;12889:46;-1:-1:-1;12949:16:0;;;;;:71;;-1:-1:-1;13011:9:0;;13001:4;11512:7;11530:18;;;:9;:18;;;;;;12969:38;;:11;:38;:::i;:::-;:51;;12949:71;:90;;;;-1:-1:-1;13035:4:0;;-1:-1:-1;;;;;13024:15:0;;;13035:4;;13024:15;12949:90;12946:109;;;13042:10;:8;:10::i;:::-;-1:-1:-1;;;;;13087:17:0;;;;;;:9;:17;;;;;;:26;;13107:6;;13087:26;:::i;:::-;-1:-1:-1;;;;;13067:17:0;;;;;;:9;:17;;;;;;;;:46;;;;13153:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;13176:22:0;;;;;;:11;:22;;;;;;;;13153:45;13151:48;:83;;13228:6;13151:83;;;13202:23;13210:6;13218;13202:7;:23::i;:::-;-1:-1:-1;;;;;13268:20:0;;;;;;:9;:20;;;;;;13126:108;;-1:-1:-1;13268:37:0;;13126:108;;13268:37;:::i;:::-;-1:-1:-1;;;;;13245:20:0;;;;;;;:9;:20;;;;;:60;;;;13331:4;;13321:14;;;13331:4;;13321:14;;;;:42;;-1:-1:-1;;;;;;13340:23:0;;;;;;:15;:23;;;;;;;;13339:24;13321:42;13318:110;;;13370:7;;-1:-1:-1;;;;;13396:17:0;;;13370:7;13396:17;;;:9;:17;;;;;;;;13370:44;;-1:-1:-1;;;13370:44:0;;;;;4724:51:1;;;;4791:18;;;4784:34;13370:7:0;;;:17;;4697:18:1;;13370:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13366:60;;13454:4;;-1:-1:-1;;;;;13441:17:0;;;13454:4;;13441:17;;;;:48;;-1:-1:-1;;;;;;13463:26:0;;;;;;:15;:26;;;;;;;;13462:27;13441:48;13438:122;;;13496:7;;-1:-1:-1;;;;;13525:20:0;;;13496:7;13525:20;;;:9;:20;;;;;;;;13496:50;;-1:-1:-1;;;13496:50:0;;;;;4724:51:1;;;;4791:18;;;4784:34;13496:7:0;;;:17;;4697:18:1;;13496:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13492:66;;13570:7;;;;;;;;;-1:-1:-1;;;;;13570:7:0;-1:-1:-1;;;;;13570:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13627:9;-1:-1:-1;;;;;13610:43:0;13619:6;-1:-1:-1;;;;;13610:43:0;;13638:14;13610:43;;;;1410:25:1;;1398:2;1383:18;;1264:177;13610:43:0;;;;;;;;-1:-1:-1;13671:4:0;;12563:1120;-1:-1:-1;;;;;12563:1120:0:o;13691:300::-;-1:-1:-1;;;;;13821:17:0;;13784:4;13821:17;;;:9;:17;;;;;;:26;;13841:6;;13821:26;:::i;:::-;-1:-1:-1;;;;;13801:17:0;;;;;;;:9;:17;;;;;;:46;;;;13881:20;;;;;;;:29;;13904:6;;13881:29;:::i;:::-;-1:-1:-1;;;;;13858:20:0;;;;;;;:9;:20;;;;;;;:52;;;;13926:35;;;;;;;;;;13954:6;1410:25:1;;1398:2;1383:18;;1264:177;13926:35:0;;;;;;;;-1:-1:-1;13979:4:0;13691:300;;;;;:::o;15283:362::-;15394:4;;15451:18;;;-1:-1:-1;;;15451:18:0;;;;15340:4;;-1:-1:-1;;;;;15394:4:0;;15340;;;;15394;;15451:16;;:18;;;;;;;;;;;;;;;15394:4;15451:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15410:59;-1:-1:-1;;;;;15410:59:0;;;-1:-1:-1;;;;;15410:59:0;;;15484:12;15500:1;15484:17;15480:57;;15524:1;15517:8;;;;;15283:362;:::o;15480:57::-;15547:20;15592:12;15571:17;:10;15584:4;15571:17;:::i;:::-;15570:34;;;;:::i;:::-;15547:57;15283:362;-1:-1:-1;;;;;15283:362:0:o;14405:463::-;10084:6;:13;;-1:-1:-1;;;;10084:13:0;-1:-1:-1;;;10084:13:0;;;14526:4:::1;-1:-1:-1::0;11530:18:0;;;:9;:18;;;;;;14485:47:::1;;14551:30;14568:12;14551:16;:30::i;:::-;14720:15;::::0;14680:21:::1;::::0;-1:-1:-1;;;;;14720:15:0::1;14712:56;14746:21;14766:1;14680:21:::0;14746::::1;:::i;:::-;14712:56;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14803:7:0::1;::::0;-1:-1:-1;;;;;14803:7:0::1;14787:57;14822:21;14842:1;14822:17:::0;:21:::1;:::i;:::-;14787:57;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10102:6:0;:14;;-1:-1:-1;;;;10102:14:0;;;-1:-1:-1;14405:463:0:o;13999:398::-;14066:7;14086:17;14114:23;14148:4;14114:39;;14198:14;;14186:8;;14177:6;:17;;;;:::i;:::-;14176:36;;;;:::i;:::-;-1:-1:-1;;;;;14252:26:0;;;;;;:9;:26;;;;;;14164:48;;-1:-1:-1;14252:38:0;;14164:48;;14252:38;:::i;:::-;-1:-1:-1;;;;;14223:26:0;;;;;;;:9;:26;;;;;;;:67;;;;14306:44;;;;;;;;;;14340:9;1410:25:1;;1398:2;1383:18;;1264:177;14306:44:0;;;;;;;;14371:18;14380:9;14371:6;:18;:::i;14876:399::-;14966:16;;;14980:1;14966:16;;;;;;;;14942:21;;14966:16;;;;;;;;;;-1:-1:-1;14966:16:0;14942:40;;15011:4;14993;14998:1;14993:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14993:23:0;;;:7;;;;;;;;;:23;15037:4;;;15027:7;;15037:4;;;15027;;15037;15027:7;;;;;;:::i;:::-;-1:-1:-1;;;;;15027:14:0;;;:7;;;;;;;;;:14;15052:6;;:215;;-1:-1:-1;;;15052:215:0;;:6;;;:57;;:215;;15124:11;;15052:6;;15194:4;;15221;;15241:15;;15052:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14931:344;14876:399;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;1907:247::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;2074:9;2061:23;2093:31;2118:5;2093:31;:::i;2348:180::-;2407:6;2460:2;2448:9;2439:7;2435:23;2431:32;2428:52;;;2476:1;2473;2466:12;2428:52;-1:-1:-1;2499:23:1;;2348:180;-1:-1:-1;2348:180:1:o;2955:118::-;3041:5;3034:13;3027:21;3020:5;3017:32;3007:60;;3063:1;3060;3053:12;3078:382;3143:6;3151;3204:2;3192:9;3183:7;3179:23;3175:32;3172:52;;;3220:1;3217;3210:12;3172:52;3259:9;3246:23;3278:31;3303:5;3278:31;:::i;:::-;3328:5;-1:-1:-1;3385:2:1;3370:18;;3357:32;3398:30;3357:32;3398:30;:::i;:::-;3447:7;3437:17;;;3078:382;;;;;:::o;3897:388::-;3965:6;3973;4026:2;4014:9;4005:7;4001:23;3997:32;3994:52;;;4042:1;4039;4032:12;3994:52;4081:9;4068:23;4100:31;4125:5;4100:31;:::i;:::-;4150:5;-1:-1:-1;4207:2:1;4192:18;;4179:32;4220:33;4179:32;4220:33;:::i;5055:127::-;5116:10;5111:3;5107:20;5104:1;5097:31;5147:4;5144:1;5137:15;5171:4;5168:1;5161:15;5187:125;5227:4;5255:1;5252;5249:8;5246:34;;;5260:18;;:::i;:::-;-1:-1:-1;5297:9:1;;5187:125::o;5317:329::-;5519:2;5501:21;;;5558:1;5538:18;;;5531:29;-1:-1:-1;;;5591:2:1;5576:18;;5569:36;5637:2;5622:18;;5317:329::o;5651:184::-;5721:6;5774:2;5762:9;5753:7;5749:23;5745:32;5742:52;;;5790:1;5787;5780:12;5742:52;-1:-1:-1;5813:16:1;;5651:184;-1:-1:-1;5651:184:1:o;5840:435::-;5937:6;5945;5953;5961;6014:3;6002:9;5993:7;5989:23;5985:33;5982:53;;;6031:1;6028;6021:12;5982:53;6060:9;6054:16;6044:26;;6110:2;6099:9;6095:18;6089:25;6079:35;;6154:2;6143:9;6139:18;6133:25;6123:35;;6201:2;6190:9;6186:18;6180:25;6214:31;6239:5;6214:31;:::i;:::-;5840:435;;;;-1:-1:-1;5840:435:1;;-1:-1:-1;;5840:435:1:o;6685:245::-;6752:6;6805:2;6793:9;6784:7;6780:23;6776:32;6773:52;;;6821:1;6818;6811:12;6773:52;6853:9;6847:16;6872:28;6894:5;6872:28;:::i;7151:312::-;7230:6;7238;7291:2;7279:9;7270:7;7266:23;7262:32;7259:52;;;7307:1;7304;7297:12;7259:52;7339:9;7333:16;7358:31;7383:5;7358:31;:::i;:::-;7453:2;7438:18;;;;7432:25;7408:5;;7432:25;;-1:-1:-1;;;7151:312:1:o;7809:168::-;7849:7;7915:1;7911;7907:6;7903:14;7900:1;7897:21;7892:1;7885:9;7878:17;7874:45;7871:71;;;7922:18;;:::i;:::-;-1:-1:-1;7962:9:1;;7809:168::o;7982:128::-;8022:3;8053:1;8049:6;8046:1;8043:13;8040:39;;;8059:18;;:::i;:::-;-1:-1:-1;8095:9:1;;7982:128::o;8115:188::-;8194:13;;-1:-1:-1;;;;;8236:42:1;;8226:53;;8216:81;;8293:1;8290;8283:12;8216:81;8115:188;;;:::o;8308:450::-;8395:6;8403;8411;8464:2;8452:9;8443:7;8439:23;8435:32;8432:52;;;8480:1;8477;8470:12;8432:52;8503:40;8533:9;8503:40;:::i;:::-;8493:50;;8562:49;8607:2;8596:9;8592:18;8562:49;:::i;:::-;8552:59;;8654:2;8643:9;8639:18;8633:25;8698:10;8691:5;8687:22;8680:5;8677:33;8667:61;;8724:1;8721;8714:12;8667:61;8747:5;8737:15;;;8308:450;;;;;:::o;8763:217::-;8803:1;8829;8819:132;;8873:10;8868:3;8864:20;8861:1;8854:31;8908:4;8905:1;8898:15;8936:4;8933:1;8926:15;8819:132;-1:-1:-1;8965:9:1;;8763:217::o;9117:127::-;9178:10;9173:3;9169:20;9166:1;9159:31;9209:4;9206:1;9199:15;9233:4;9230:1;9223:15;9249:980;9511:4;9559:3;9548:9;9544:19;9590:6;9579:9;9572:25;9616:2;9654:6;9649:2;9638:9;9634:18;9627:34;9697:3;9692:2;9681:9;9677:18;9670:31;9721:6;9756;9750:13;9787:6;9779;9772:22;9825:3;9814:9;9810:19;9803:26;;9864:2;9856:6;9852:15;9838:29;;9885:1;9895:195;9909:6;9906:1;9903:13;9895:195;;;9974:13;;-1:-1:-1;;;;;9970:39:1;9958:52;;10065:15;;;;10030:12;;;;10006:1;9924:9;9895:195;;;-1:-1:-1;;;;;;;10146:32:1;;;;10141:2;10126:18;;10119:60;-1:-1:-1;;;10210:3:1;10195:19;10188:35;10107:3;9249:980;-1:-1:-1;;;9249:980:1:o

Swarm Source

ipfs://07024c8182541c66a0c0a09cf0a7392d1f92a4ed9a8cd51a9bfe8412b266942e
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.