ETH Price: $2,494.84 (-0.68%)

Token

VolumePEPE (VEPE)
 

Overview

Max Total Supply

1,000,000,000 VEPE

Holders

231

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,117,417.859252181224206142 VEPE

Value
$0.00
0x7bcc6c284d5d42d13d3c9e76c2e21bf53a17e668
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:
VolumePEPE

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

/** VEPE, VOLUMIZER + PEPE

Combining the hype of PEPE with a volumizer contract.
For every sell our volumizer sells and buys back - creating tremendous volume

tg:  https://t.me/VolumePepePortal

Our decentralized website deployed on IPFS

web:  https://volumepepe.eth.limo/

**/

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

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(msg.sender);
    }

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

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IVolume {
    function addVolume() external;

    function isActive() external view returns (bool);

    function setActive(bool status) external;

    function setSwapPercentage(uint256 perc) external;

    function setMaxWeiSwap(uint256 amount) external;

    function weiVolume() external view returns(uint256);
}

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract VolumePEPE is IERC20, Ownable {
    // Constant addresses
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public immutable pair;

    string constant _name = "VolumePEPE";
    string constant _symbol = "VEPE";
    uint8 constant _decimals = 18;

    // 1 billion
    uint256 _totalSupply = 1 * (10**9) * (10**_decimals);

    // Divide tax by 1_000, so we can use decimal tax, like 1.5%
    uint256 constant taxDivisor = 1_000;

    // 10 / 1000 = 0.01 = 1%
    uint256 public _maxTxAmount = (_totalSupply * 10) / taxDivisor;
    uint256 public _maxWalletToken = (_totalSupply * 10) / taxDivisor;

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

    // No fee at all
    mapping(address => bool) isFeeExempt;

    // max Wallet + max TX exempt
    mapping(address => bool) isTxLimitExempt;

    // We charge lp fee and volume fee.
    // volume fees goes directly to the volumizer contract
    uint256 liquidityFee = 10;
    uint256 volumeFee = 15;
    uint256 public totalFee = liquidityFee + volumeFee;

    uint256 private sniperTaxTill;

    // We control the fees and limits in case something would go wrong
    bool feesEnabled = true;
    bool limits = true;

    // To keep track of the tokens collected to swap
    uint256 public tokensForLiquidity;

    // Wallets used to send the fees to
    address public liquidityWallet;

    // One time trade lock (before lp)
    bool tradeBlock = true;
    bool lockUsed = false;

    // When to swap contract tokens, and how many to swap
    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply * 10) / 100_000; // 0.01%
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // Volumizer
    IVolume Volume;
    uint256 public addedVolume;
    uint256 public skippedVolume;
    uint256 public volPerc;
    address public volumizerDev;
    uint256 maxGas = 500_000;

    // Volumizer modifier, eventhough we renounce all basic contract
    // functions we should be able to adjust the volumizer to increase
    // or decrease volume. Hence a seperate modifier for this 
    modifier onlyVolumizerDev() {
        require(volumizerDev == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    constructor() {
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        volumizerDev = msg.sender;
        address volumeContract = 0xb48AeB68A8C575E78313814049acDdED7D79Ee59;

        // Init volumizer and exempt it
        Volume = IVolume(volumeContract);
        isFeeExempt[volumeContract] = true;
        isTxLimitExempt[volumeContract] = true;

        // Exclude token contract itself
        isFeeExempt[address(this)] = true;
        isTxLimitExempt[address(this)] = true;

        // Exclude owner
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        // Exclude pair and router
        isTxLimitExempt[address(pair)] = true;
        isTxLimitExempt[address(router)] = true;

        // Set fee receivers
        liquidityWallet = msg.sender;

        // Arrange approvals
        _approve(address(this), address(router), _totalSupply);
        _approve(msg.sender, address(pair), _totalSupply);

        // Mint the tokens:
        // 90% to contract (to add to LP)
        // 10% to volumizer
        _balances[address(this)] = (_totalSupply * 90) / 100;
        emit Transfer(address(0), msg.sender, (_totalSupply * 90) / 100);

        // We add 10% to the volumizer contract
        _balances[volumeContract] = (_totalSupply * 10) / 100;
        emit Transfer(address(0), msg.sender, (_totalSupply * 10) / 100);
    }

    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 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 startTrading() external payable onlyOwner {
        inSwap = true;
        addLiquidity(balanceOf(address(this)), msg.value, msg.sender);
        tradeBlock = false;
        inSwap = false;
        sniperTaxTill = block.number + 2;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

    function checkLimits(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (isTxLimitExempt[sender] && isTxLimitExempt[recipient]) {
            return;
        }

        // buy
        if (sender == pair && !isTxLimitExempt[recipient]) {
            require(amount <= _maxTxAmount, "Max tx limit");

        // sell
        } else if (recipient == pair && !isTxLimitExempt[sender]) {
            require(amount <= _maxTxAmount, "Max tx limit");
        }

        // Max wallet
        if (!isTxLimitExempt[recipient]) {
            require(amount + balanceOf(recipient) <= _maxWalletToken, "Max wallet");
        }
    }
    
    // Apply tx and max wallet limits (these can't be restricted to < 1%)
    function disableLimits() external onlyOwner {
        limits = false;
    }

    function shouldTokenSwap(address recipient) internal view returns (bool) {
        return
            recipient == pair && // i.e. is sell
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function takeFee(
        address from,
        address to,
        uint256 amount
    ) internal returns (uint256) {
        // Don't charge fees for exemept sender and recipient
        if (isFeeExempt[from] || isFeeExempt[to]) {
            return amount;
        }

        uint256 fees;
        uint256 volumeFeeTokens;

        // Sniper tax for first 2 blocks
        if (block.number < sniperTaxTill) {
            fees = (amount * 98) / 100;
            tokensForLiquidity += fees;
        }
        // Regular fee
        else if (totalFee > 0) {
            fees = (amount * totalFee) / taxDivisor;
            tokensForLiquidity += (fees * liquidityFee) / totalFee;
            volumeFeeTokens = (fees * volumeFee) / totalFee;
        }

        // If we collected fees, send them to the contract
        if (fees > 0) {
            // The fees we swap later (lp)
            _basicTransfer(from, address(this), fees - volumeFeeTokens);
            emit Transfer(from, address(this), fees - volumeFeeTokens);

            // The fees that go to the volumizer, we can send them directly
            _basicTransfer(from, address(Volume), volumeFeeTokens);
            emit Transfer(from, address(Volume), volumeFeeTokens);
        }

        return amount - fees;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // Swap path token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        // Make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount, address sendTo) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            sendTo,
            block.timestamp
        );
    }

    function swapBack() internal swapping {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity;
       
        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;

        uint256 initialETHBalance = address(this).balance;

        // Swap the tokens for ETH
        swapTokensForEth(amountToSwapForETH);

        uint256 ethForLiquidity = address(this).balance - initialETHBalance;

        // Reset token fee
        tokensForLiquidity = 0;

        // Add liquidty
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity, liquidityWallet);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if (_allowances[sender][msg.sender] != _totalSupply) {
            // Get the current allowance
            uint256 curAllowance = _allowances[sender][msg.sender];
            require(curAllowance >= amount, "Insufficient Allowance");
            _allowances[sender][msg.sender] -= amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function addVolume() internal swapping {
        try Volume.addVolume{gas: maxGas}() {
            addedVolume += 1;
        } catch {
            skippedVolume += 1;
        }
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        // These transfers are always feeless and limitless
        if (sender == owner() || recipient == owner() || inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        // In any other case, check if trading is open already
        require(tradeBlock == false, "Trading not open yet");

        // If limits are enabled we check the max wallet and max tx.
        if (limits) {
            checkLimits(sender, recipient, amount);
        }

        // Charge transaction fees (only swaps) when enabled
        // These are our basic/regular fees (i.e. the ones we swap to ETH)
        if (feesEnabled) {
            amount = (recipient == pair || sender == pair)
                ? takeFee(sender, recipient, amount)
                : amount;
        }

        // Add volume if volumizer is active ( = enabled, enough balance, lp check)
        if (recipient == pair && Volume.isActive()) {
            addVolume(); // uses inswap to not charge token fees
        }

        // Check how much feess are accumulated in the contract, if > threshold, swap
        if (shouldTokenSwap(recipient)) {
            swapBack();
        }

        // Send the remaining tokens, after fee
        _basicTransfer(sender, recipient, amount);
        emit Transfer(sender, recipient, amount);

        return true;
    }

    function clearStuckWETH(uint256 perc) external  {
        require(msg.sender == volumizerDev);
        uint256 amountWETH = address(this).balance;
        payable(volumizerDev).transfer((amountWETH * perc) / 100);
    }

    ///////////////////////////////////////////////////////////////////
    // Volumizer settings
    // These can be controlled after renounce to adjust accordingly
    // via onlyVolumizerDev modifier
    ///////////////////////////////////////////////////////////////////

    function volumizer_setMaxWeiSwap(uint weiAmount) external onlyVolumizerDev {
        Volume.setMaxWeiSwap(weiAmount);
    }

    function volumizer_setSwapPercentage(uint256 perc) external onlyVolumizerDev {
        Volume.setSwapPercentage(perc);
    }

    function volumizer_setEnabled(bool enabled) external onlyVolumizerDev {
        Volume.setActive(enabled);
    }

    function volumizer_changeGasLimit(uint newGasLim) external onlyVolumizerDev {
        maxGas = newGasLim;
    }

    function volumizer_addedVolume() external view returns(uint256) {
        return Volume.weiVolume();
    }

    ///////////////////////////////////////////////////////////////////

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addedVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"clearStuckWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"skippedVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"volPerc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerDev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizer_addedVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGasLim","type":"uint256"}],"name":"volumizer_changeGasLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"volumizer_setEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"volumizer_setMaxWeiSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"volumizer_setSwapPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620000126012600a620006af565b6200002290633b9aca00620006c7565b6001556103e8600154600a620000399190620006c7565b620000459190620006e1565b6002556103e8600154600a6200005c9190620006c7565b620000689190620006e1565b600355600a6008819055600f6009819055620000849162000704565b600a908155600c805461ffff1916610101179055600e805462ffffff60a01b19166201000160a01b179055600154620186a091620000c39190620006c7565b620000cf9190620006e1565b600f556207a120601555348015620000e657600080fd5b50620000f233620004e9565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016b91906200071a565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f291906200071a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200071a565b6001600160a01b0316608081905260148054336001600160a01b0319918216811790925560108054610100600160a81b03191674b48aeb68a8c575e78313814049acdded7d79ee59001790557f28011028450c706bf42a614b9bf0524c53cd7a094752a2e3324bb02ca70b23f7805460ff1990811660019081179092557fd41c941c69b1d80f562b3a43d69e211d6d5e026c9c99cab404377567bca55a998054821683179055306000818152600660208181526040808420805487168817905560078083528185208054881689179055898552928252808420805487168817905591905280822080548516861790559681529586208054831684179055737a250d5630b4cf539739df2c5dacb4c659f2488d958690527ffd21a1ac9a14dff647460ce8ad2ccecb794a59a4cfbb8678b1f9900a6a99551f80549092168317909155600e80549093169093179091555473b48aeb68a8c575e78313814049acdded7d79ee5992620003d6929162000539565b620003ed336080516001546200053960201b60201c565b6064600154605a620004009190620006c7565b6200040c9190620006e1565b306000908152600460205260408120919091556001543391906000805160206200234b833981519152906064906200044690605a620006c7565b620004529190620006e1565b60405190815260200160405180910390a36064600154600a620004769190620006c7565b620004829190620006e1565b6001600160a01b0382166000908152600460205260408120919091556001543391906000805160206200234b83398151915290606490620004c590600a620006c7565b620004d19190620006e1565b60405190815260200160405180910390a35062000745565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005f1578160001904821115620005d557620005d56200059a565b80851615620005e357918102915b93841c9390800290620005b5565b509250929050565b6000826200060a57506001620006a9565b816200061957506000620006a9565b81600181146200063257600281146200063d576200065d565b6001915050620006a9565b60ff8411156200065157620006516200059a565b50506001821b620006a9565b5060208310610133831016604e8410600b841016171562000682575081810a620006a9565b6200068e8383620005b0565b8060001904821115620006a557620006a56200059a565b0290505b92915050565b6000620006c060ff841683620005f9565b9392505050565b8082028115828204841417620006a957620006a96200059a565b600082620006ff57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620006a957620006a96200059a565b6000602082840312156200072d57600080fd5b81516001600160a01b0381168114620006c057600080fd5b608051611bc06200078b600039600081816104d901528181610c9c01528181610cd701528181610d25015281816110980152818161113d01526114d80152611bc06000f3fe6080604052600436106101e75760003560e01c80637cecffce11610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610571578063df7389e9146105b7578063f887ea40146105d7578063f928364c146105ff57600080fd5b8063a9059cbb146104fb578063aac76f4f1461051b578063b15a2dd11461053b578063d46980161461055157600080fd5b80638da5cb5b116100d15780638da5cb5b1461045257806395d89b4114610484578063981b0955146104b1578063a8aa1b31146104c757600080fd5b80637cecffce146103dc5780637d1db4a5146103fc5780637fa6a4b614610412578063866275081461043257600080fd5b806323b872dd1161017a5780636ddd1713116101495780636ddd17131461035a57806370a082311461037b578063715018a6146103b157806378109e54146103c657600080fd5b806323b872dd14610300578063293230b8146103205780632eb80a4a14610328578063313ce5671461033e57600080fd5b806318160ddd116101b657806318160ddd146102aa5780631a8145bb146102bf5780631df4ccfc146102d55780631e9ce868146102eb57600080fd5b80630445b667146101f357806304fda8ff1461021c57806306fdde031461023e578063095ea7b31461027a57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610209600f5481565b6040519081526020015b60405180910390f35b34801561022857600080fd5b5061023c6102373660046117c3565b610614565b005b34801561024a57600080fd5b5060408051808201909152600a815269566f6c756d655045504560b01b60208201525b60405161021391906117dc565b34801561028657600080fd5b5061029a610295366004611842565b61067f565b6040519015158152602001610213565b3480156102b657600080fd5b50600154610209565b3480156102cb57600080fd5b50610209600d5481565b3480156102e157600080fd5b50610209600a5481565b3480156102f757600080fd5b506102096106ec565b34801561030c57600080fd5b5061029a61031b36600461186e565b61076a565b61023c6108a9565b34801561033457600080fd5b5061020960125481565b34801561034a57600080fd5b5060405160128152602001610213565b34801561036657600080fd5b50600e5461029a90600160b01b900460ff1681565b34801561038757600080fd5b506102096103963660046118af565b6001600160a01b031660009081526004602052604090205490565b3480156103bd57600080fd5b5061023c61093f565b3480156103d257600080fd5b5061020960035481565b3480156103e857600080fd5b5061023c6103f73660046118da565b610984565b34801561040857600080fd5b5061020960025481565b34801561041e57600080fd5b5061023c61042d3660046117c3565b610a15565b34801561043e57600080fd5b5061023c61044d3660046117c3565b610a44565b34801561045e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610213565b34801561049057600080fd5b506040805180820190915260048152635645504560e01b602082015261026d565b3480156104bd57600080fd5b5061020960135481565b3480156104d357600080fd5b5061046c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050757600080fd5b5061029a610516366004611842565b610aa3565b34801561052757600080fd5b5060145461046c906001600160a01b031681565b34801561054757600080fd5b5061020960115481565b34801561055d57600080fd5b50600e5461046c906001600160a01b031681565b34801561057d57600080fd5b5061020961058c3660046118f7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105c357600080fd5b5061023c6105d23660046117c3565b610ae3565b3480156105e357600080fd5b5061046c737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561060b57600080fd5b5061023c610b42565b6014546001600160a01b0316331461062b57600080fd5b60145447906001600160a01b03166108fc60646106488585611946565b610652919061195d565b6040518115909202916000818181858888f1935050505015801561067a573d6000803e3d6000fd5b505050565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106da9086815260200190565b60405180910390a35060015b92915050565b6000601060019054906101000a90046001600160a01b03166001600160a01b031663142a42686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610741573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610765919061197f565b905090565b60006001600160a01b03841661079b5760405162461bcd60e51b815260040161079290611998565b60405180910390fd5b6001600160a01b0383166107c15760405162461bcd60e51b8152600401610792906119dd565b6001546001600160a01b038516600090815260056020908152604080832033845290915290205414610894576001600160a01b03841660009081526005602090815260408083203384529091529020548281101561085a5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610792565b6001600160a01b03851660009081526005602090815260408083203384529091528120805485929061088d908490611a20565b9091555050505b61089f848484610b88565b90505b9392505050565b336108bc6000546001600160a01b031690565b6001600160a01b0316146108e25760405162461bcd60e51b815260040161079290611a33565b6010805460ff19166001179055610918610911306001600160a01b031660009081526004602052604090205490565b3433610e4a565b600e805460ff60a01b191690556010805460ff1916905561093a436002611a68565b600b55565b336109526000546001600160a01b031690565b6001600160a01b0316146109785760405162461bcd60e51b815260040161079290611a33565b6109826000610ef3565b565b6014546001600160a01b031633146109ae5760405162461bcd60e51b815260040161079290611a33565b60105460405163567619c560e11b815282151560048201526101009091046001600160a01b03169063acec338a906024015b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b5050505050565b6014546001600160a01b03163314610a3f5760405162461bcd60e51b815260040161079290611a33565b601555565b6014546001600160a01b03163314610a6e5760405162461bcd60e51b815260040161079290611a33565b601054604051633c0ada4160e01b8152600481018390526101009091046001600160a01b031690633c0ada41906024016109e0565b600033610ab86000546001600160a01b031690565b6001600160a01b031603610ad857610ad1338484610f43565b90506106e6565b610ad1338484610b88565b6014546001600160a01b03163314610b0d5760405162461bcd60e51b815260040161079290611a33565b601054604051632b8ed29560e11b8152600481018390526101009091046001600160a01b03169063571da52a906024016109e0565b33610b556000546001600160a01b031690565b6001600160a01b031614610b7b5760405162461bcd60e51b815260040161079290611a33565b600c805461ff0019169055565b60006001600160a01b038416610bb05760405162461bcd60e51b815260040161079290611998565b6001600160a01b038316610bd65760405162461bcd60e51b8152600401610792906119dd565b6000546001600160a01b0385811691161480610bff57506000546001600160a01b038481169116145b80610c0c575060105460ff165b15610c2357610c1c848484610f43565b90506108a2565b600e54600160a01b900460ff1615610c745760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610792565b600c54610100900460ff1615610c8f57610c8f84848461104c565b600c5460ff1615610d23577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480610d0b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b610d155781610d20565b610d2084848461125c565b91505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015610dd65750601060019054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd69190611a7b565b15610de357610de361141f565b610dec836114d4565b15610df957610df9611551565b610e04848484610f43565b50826001600160a01b0316846001600160a01b0316600080516020611b6b83398151915284604051610e3891815260200190565b60405180910390a35060019392505050565b60405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b03821660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990849060c40160606040518083038185885af1158015610ec6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eeb9190611a98565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526004602052604081205482811015610fa35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610792565b6001600160a01b038516600090815260046020526040902054610fc7908490611a20565b6001600160a01b038087166000908152600460205260408082209390935590861681522054610ff7908490611a68565b6001600160a01b038086166000818152600460205260409081902093909355915190871690600080516020611b6b833981519152906110399087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526007602052604090205460ff16801561108c57506001600160a01b03821660009081526007602052604090205460ff165b1561109657505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156110f057506001600160a01b03821660009081526007602052604090205460ff16155b1561113b576002548111156111365760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401610792565b6111db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614801561119557506001600160a01b03831660009081526007602052604090205460ff16155b156111db576002548111156111db5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401610792565b6001600160a01b03821660009081526007602052604090205460ff1661067a576003546001600160a01b0383166000908152600460205260409020546112219083611a68565b111561067a5760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b6044820152606401610792565b6001600160a01b03831660009081526006602052604081205460ff168061129b57506001600160a01b03831660009081526006602052604090205460ff165b156112a75750806108a2565b600080600b544310156112ea5760646112c1856062611946565b6112cb919061195d565b915081600d60008282546112df9190611a68565b9091555061135d9050565b600a541561135d576103e8600a54856113039190611946565b61130d919061195d565b9150600a54600854836113209190611946565b61132a919061195d565b600d600082825461133b9190611a68565b9091555050600a546009546113509084611946565b61135a919061195d565b90505b811561140b5761137786306113728486611a20565b610f43565b50306001600160a01b038716600080516020611b6b83398151915261139c8486611a20565b60405190815260200160405180910390a36010546113ca90879061010090046001600160a01b031683610f43565b506010546040516001600160a01b03610100909204821691881690600080516020611b6b833981519152906114029085815260200190565b60405180910390a35b6114158285611a20565b9695505050505050565b60108054600160ff1990911617908190556015546040805163317b483760e01b815290516101009093046001600160a01b03169263317b4837929160048082019260009290919082900301818388803b15801561147b57600080fd5b5087f19350505050801561148d575060015b6114af576001601260008282546114a49190611a68565b909155506114c89050565b6001601160008282546114c29190611a68565b90915550505b6010805460ff19169055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614801561151a575060105460ff16155b801561152f5750600e54600160b01b900460ff165b80156106e65750600f5430600090815260046020526040902054101592915050565b6010805460ff1916600117905530600090815260046020526040902054600d5481158061157c575080155b156115885750506114c8565b6000600282600d548561159b9190611946565b6115a5919061195d565b6115af919061195d565b905060006115bd8285611a20565b9050476115c98261165f565b60006115d58247611a20565b6000600d55905083158015906115eb5750600081115b1561164d57600e5461160990859083906001600160a01b0316610e4a565b600d54604080518581526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b5050505050506010805460ff19169055565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061169457611694611ac6565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190611adc565b8160018151811061173d5761173d611ac6565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611795908590600090869030904290600401611af9565b600060405180830381600087803b1580156117af57600080fd5b505af1158015610eeb573d6000803e3d6000fd5b6000602082840312156117d557600080fd5b5035919050565b600060208083528351808285015260005b81811015611809578581018301518582016040015282016117ed565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461183f57600080fd5b50565b6000806040838503121561185557600080fd5b82356118608161182a565b946020939093013593505050565b60008060006060848603121561188357600080fd5b833561188e8161182a565b9250602084013561189e8161182a565b929592945050506040919091013590565b6000602082840312156118c157600080fd5b81356108a28161182a565b801515811461183f57600080fd5b6000602082840312156118ec57600080fd5b81356108a2816118cc565b6000806040838503121561190a57600080fd5b82356119158161182a565b915060208301356119258161182a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106e6576106e6611930565b60008261197a57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561199157600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156106e6576106e6611930565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106e6576106e6611930565b600060208284031215611a8d57600080fd5b81516108a2816118cc565b600080600060608486031215611aad57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611aee57600080fd5b81516108a28161182a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b495784516001600160a01b031683529383019391830191600101611b24565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122032eb7523fb20baa9a1e41c61d762eeb9141f9d16658484cc4e7cdd297d4e850364736f6c63430008120033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80637cecffce11610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610571578063df7389e9146105b7578063f887ea40146105d7578063f928364c146105ff57600080fd5b8063a9059cbb146104fb578063aac76f4f1461051b578063b15a2dd11461053b578063d46980161461055157600080fd5b80638da5cb5b116100d15780638da5cb5b1461045257806395d89b4114610484578063981b0955146104b1578063a8aa1b31146104c757600080fd5b80637cecffce146103dc5780637d1db4a5146103fc5780637fa6a4b614610412578063866275081461043257600080fd5b806323b872dd1161017a5780636ddd1713116101495780636ddd17131461035a57806370a082311461037b578063715018a6146103b157806378109e54146103c657600080fd5b806323b872dd14610300578063293230b8146103205780632eb80a4a14610328578063313ce5671461033e57600080fd5b806318160ddd116101b657806318160ddd146102aa5780631a8145bb146102bf5780631df4ccfc146102d55780631e9ce868146102eb57600080fd5b80630445b667146101f357806304fda8ff1461021c57806306fdde031461023e578063095ea7b31461027a57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610209600f5481565b6040519081526020015b60405180910390f35b34801561022857600080fd5b5061023c6102373660046117c3565b610614565b005b34801561024a57600080fd5b5060408051808201909152600a815269566f6c756d655045504560b01b60208201525b60405161021391906117dc565b34801561028657600080fd5b5061029a610295366004611842565b61067f565b6040519015158152602001610213565b3480156102b657600080fd5b50600154610209565b3480156102cb57600080fd5b50610209600d5481565b3480156102e157600080fd5b50610209600a5481565b3480156102f757600080fd5b506102096106ec565b34801561030c57600080fd5b5061029a61031b36600461186e565b61076a565b61023c6108a9565b34801561033457600080fd5b5061020960125481565b34801561034a57600080fd5b5060405160128152602001610213565b34801561036657600080fd5b50600e5461029a90600160b01b900460ff1681565b34801561038757600080fd5b506102096103963660046118af565b6001600160a01b031660009081526004602052604090205490565b3480156103bd57600080fd5b5061023c61093f565b3480156103d257600080fd5b5061020960035481565b3480156103e857600080fd5b5061023c6103f73660046118da565b610984565b34801561040857600080fd5b5061020960025481565b34801561041e57600080fd5b5061023c61042d3660046117c3565b610a15565b34801561043e57600080fd5b5061023c61044d3660046117c3565b610a44565b34801561045e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610213565b34801561049057600080fd5b506040805180820190915260048152635645504560e01b602082015261026d565b3480156104bd57600080fd5b5061020960135481565b3480156104d357600080fd5b5061046c7f0000000000000000000000009702cec9376fa50f33b20db23c976567b39d0b4481565b34801561050757600080fd5b5061029a610516366004611842565b610aa3565b34801561052757600080fd5b5060145461046c906001600160a01b031681565b34801561054757600080fd5b5061020960115481565b34801561055d57600080fd5b50600e5461046c906001600160a01b031681565b34801561057d57600080fd5b5061020961058c3660046118f7565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105c357600080fd5b5061023c6105d23660046117c3565b610ae3565b3480156105e357600080fd5b5061046c737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561060b57600080fd5b5061023c610b42565b6014546001600160a01b0316331461062b57600080fd5b60145447906001600160a01b03166108fc60646106488585611946565b610652919061195d565b6040518115909202916000818181858888f1935050505015801561067a573d6000803e3d6000fd5b505050565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106da9086815260200190565b60405180910390a35060015b92915050565b6000601060019054906101000a90046001600160a01b03166001600160a01b031663142a42686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610741573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610765919061197f565b905090565b60006001600160a01b03841661079b5760405162461bcd60e51b815260040161079290611998565b60405180910390fd5b6001600160a01b0383166107c15760405162461bcd60e51b8152600401610792906119dd565b6001546001600160a01b038516600090815260056020908152604080832033845290915290205414610894576001600160a01b03841660009081526005602090815260408083203384529091529020548281101561085a5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610792565b6001600160a01b03851660009081526005602090815260408083203384529091528120805485929061088d908490611a20565b9091555050505b61089f848484610b88565b90505b9392505050565b336108bc6000546001600160a01b031690565b6001600160a01b0316146108e25760405162461bcd60e51b815260040161079290611a33565b6010805460ff19166001179055610918610911306001600160a01b031660009081526004602052604090205490565b3433610e4a565b600e805460ff60a01b191690556010805460ff1916905561093a436002611a68565b600b55565b336109526000546001600160a01b031690565b6001600160a01b0316146109785760405162461bcd60e51b815260040161079290611a33565b6109826000610ef3565b565b6014546001600160a01b031633146109ae5760405162461bcd60e51b815260040161079290611a33565b60105460405163567619c560e11b815282151560048201526101009091046001600160a01b03169063acec338a906024015b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b5050505050565b6014546001600160a01b03163314610a3f5760405162461bcd60e51b815260040161079290611a33565b601555565b6014546001600160a01b03163314610a6e5760405162461bcd60e51b815260040161079290611a33565b601054604051633c0ada4160e01b8152600481018390526101009091046001600160a01b031690633c0ada41906024016109e0565b600033610ab86000546001600160a01b031690565b6001600160a01b031603610ad857610ad1338484610f43565b90506106e6565b610ad1338484610b88565b6014546001600160a01b03163314610b0d5760405162461bcd60e51b815260040161079290611a33565b601054604051632b8ed29560e11b8152600481018390526101009091046001600160a01b03169063571da52a906024016109e0565b33610b556000546001600160a01b031690565b6001600160a01b031614610b7b5760405162461bcd60e51b815260040161079290611a33565b600c805461ff0019169055565b60006001600160a01b038416610bb05760405162461bcd60e51b815260040161079290611998565b6001600160a01b038316610bd65760405162461bcd60e51b8152600401610792906119dd565b6000546001600160a01b0385811691161480610bff57506000546001600160a01b038481169116145b80610c0c575060105460ff165b15610c2357610c1c848484610f43565b90506108a2565b600e54600160a01b900460ff1615610c745760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610792565b600c54610100900460ff1615610c8f57610c8f84848461104c565b600c5460ff1615610d23577f0000000000000000000000009702cec9376fa50f33b20db23c976567b39d0b446001600160a01b0316836001600160a01b03161480610d0b57507f0000000000000000000000009702cec9376fa50f33b20db23c976567b39d0b446001600160a01b0316846001600160a01b0316145b610d155781610d20565b610d2084848461125c565b91505b7f0000000000000000000000009702cec9376fa50f33b20db23c976567b39d0b446001600160a01b0316836001600160a01b0316148015610dd65750601060019054906101000a90046001600160a01b03166001600160a01b03166322f3e2d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd69190611a7b565b15610de357610de361141f565b610dec836114d4565b15610df957610df9611551565b610e04848484610f43565b50826001600160a01b0316846001600160a01b0316600080516020611b6b83398151915284604051610e3891815260200190565b60405180910390a35060019392505050565b60405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b03821660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990849060c40160606040518083038185885af1158015610ec6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610eeb9190611a98565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526004602052604081205482811015610fa35760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610792565b6001600160a01b038516600090815260046020526040902054610fc7908490611a20565b6001600160a01b038087166000908152600460205260408082209390935590861681522054610ff7908490611a68565b6001600160a01b038086166000818152600460205260409081902093909355915190871690600080516020611b6b833981519152906110399087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526007602052604090205460ff16801561108c57506001600160a01b03821660009081526007602052604090205460ff165b1561109657505050565b7f0000000000000000000000009702cec9376fa50f33b20db23c976567b39d0b446001600160a01b0316836001600160a01b03161480156110f057506001600160a01b03821660009081526007602052604090205460ff16155b1561113b576002548111156111365760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401610792565b6111db565b7f0000000000000000000000009702cec9376fa50f33b20db23c976567b39d0b446001600160a01b0316826001600160a01b031614801561119557506001600160a01b03831660009081526007602052604090205460ff16155b156111db576002548111156111db5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b6044820152606401610792565b6001600160a01b03821660009081526007602052604090205460ff1661067a576003546001600160a01b0383166000908152600460205260409020546112219083611a68565b111561067a5760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b6044820152606401610792565b6001600160a01b03831660009081526006602052604081205460ff168061129b57506001600160a01b03831660009081526006602052604090205460ff165b156112a75750806108a2565b600080600b544310156112ea5760646112c1856062611946565b6112cb919061195d565b915081600d60008282546112df9190611a68565b9091555061135d9050565b600a541561135d576103e8600a54856113039190611946565b61130d919061195d565b9150600a54600854836113209190611946565b61132a919061195d565b600d600082825461133b9190611a68565b9091555050600a546009546113509084611946565b61135a919061195d565b90505b811561140b5761137786306113728486611a20565b610f43565b50306001600160a01b038716600080516020611b6b83398151915261139c8486611a20565b60405190815260200160405180910390a36010546113ca90879061010090046001600160a01b031683610f43565b506010546040516001600160a01b03610100909204821691881690600080516020611b6b833981519152906114029085815260200190565b60405180910390a35b6114158285611a20565b9695505050505050565b60108054600160ff1990911617908190556015546040805163317b483760e01b815290516101009093046001600160a01b03169263317b4837929160048082019260009290919082900301818388803b15801561147b57600080fd5b5087f19350505050801561148d575060015b6114af576001601260008282546114a49190611a68565b909155506114c89050565b6001601160008282546114c29190611a68565b90915550505b6010805460ff19169055565b60007f0000000000000000000000009702cec9376fa50f33b20db23c976567b39d0b446001600160a01b0316826001600160a01b031614801561151a575060105460ff16155b801561152f5750600e54600160b01b900460ff165b80156106e65750600f5430600090815260046020526040902054101592915050565b6010805460ff1916600117905530600090815260046020526040902054600d5481158061157c575080155b156115885750506114c8565b6000600282600d548561159b9190611946565b6115a5919061195d565b6115af919061195d565b905060006115bd8285611a20565b9050476115c98261165f565b60006115d58247611a20565b6000600d55905083158015906115eb5750600081115b1561164d57600e5461160990859083906001600160a01b0316610e4a565b600d54604080518581526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b5050505050506010805460ff19169055565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061169457611694611ac6565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190611adc565b8160018151811061173d5761173d611ac6565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611795908590600090869030904290600401611af9565b600060405180830381600087803b1580156117af57600080fd5b505af1158015610eeb573d6000803e3d6000fd5b6000602082840312156117d557600080fd5b5035919050565b600060208083528351808285015260005b81811015611809578581018301518582016040015282016117ed565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461183f57600080fd5b50565b6000806040838503121561185557600080fd5b82356118608161182a565b946020939093013593505050565b60008060006060848603121561188357600080fd5b833561188e8161182a565b9250602084013561189e8161182a565b929592945050506040919091013590565b6000602082840312156118c157600080fd5b81356108a28161182a565b801515811461183f57600080fd5b6000602082840312156118ec57600080fd5b81356108a2816118cc565b6000806040838503121561190a57600080fd5b82356119158161182a565b915060208301356119258161182a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106e6576106e6611930565b60008261197a57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561199157600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156106e6576106e6611930565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156106e6576106e6611930565b600060208284031215611a8d57600080fd5b81516108a2816118cc565b600080600060608486031215611aad57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611aee57600080fd5b81516108a28161182a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b495784516001600160a01b031683529383019391830191600101611b24565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122032eb7523fb20baa9a1e41c61d762eeb9141f9d16658484cc4e7cdd297d4e850364736f6c63430008120033

Deployed Bytecode Sourcemap

3342:14668:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5202:60;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5202:60:0;;;;;;;;16764:223;;;;;;;;;;-1:-1:-1;16764:223:0;;;;;:::i;:::-;;:::i;:::-;;7890:94;;;;;;;;;;-1:-1:-1;7971:5:0;;;;;;;;;;;;-1:-1:-1;;;7971:5:0;;;;7890:94;;;;;;;:::i;8805:248::-;;;;;;;;;;-1:-1:-1;8805:248:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;8805:248:0;1390:187:1;7572:102:0;;;;;;;;;;-1:-1:-1;7654:12:0;;7572:102;;4885:33;;;;;;;;;;;;;;;;4605:50;;;;;;;;;;;;;;;;17787:108;;;;;;;;;;;;;:::i;14188:683::-;;;;;;;;;;-1:-1:-1;14188:683:0;;;;;:::i;:::-;;:::i;8317:252::-;;;:::i;5601:28::-;;;;;;;;;;;;;;;;7682:94;;;;;;;;;;-1:-1:-1;7682:94:0;;3807:2;2185:36:1;;2173:2;2158:18;7682:94:0;2043:184:1;5165:30:0;;;;;;;;;;-1:-1:-1;5165:30:0;;;;-1:-1:-1;;;5165:30:0;;;;;;7992:119;;;;;;;;;;-1:-1:-1;7992:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8085:18:0;8058:7;8085:18;;;:9;:18;;;;;;;7992:119;1812:103;;;;;;;;;;;;;:::i;4106:65::-;;;;;;;;;;;;;;;;17544:114;;;;;;;;;;-1:-1:-1;17544:114:0;;;;;:::i;:::-;;:::i;4037:62::-;;;;;;;;;;;;;;;;17666:113;;;;;;;;;;-1:-1:-1;17666:113:0;;;;;:::i;:::-;;:::i;17410:126::-;;;;;;;;;;-1:-1:-1;17410:126:0;;;;;:::i;:::-;;:::i;1591:87::-;;;;;;;;;;-1:-1:-1;1637:7:0;1664:6;-1:-1:-1;;;;;1664:6:0;1591:87;;;-1:-1:-1;;;;;3017:32:1;;;2999:51;;2987:2;2972:18;1591:87:0;2853:203:1;7784:98:0;;;;;;;;;;-1:-1:-1;7867:7:0;;;;;;;;;;;;-1:-1:-1;;;7867:7:0;;;;7784:98;;5636:22;;;;;;;;;;;;;;;;3660:29;;;;;;;;;;;;;;;13854:326;;;;;;;;;;-1:-1:-1;13854:326:0;;;;;:::i;:::-;;:::i;5665:27::-;;;;;;;;;;-1:-1:-1;5665:27:0;;;;-1:-1:-1;;;;;5665:27:0;;;5568:26;;;;;;;;;;;;;;;;4968:30;;;;;;;;;;-1:-1:-1;4968:30:0;;;;-1:-1:-1;;;;;4968:30:0;;;8119:188;;;;;;;;;;-1:-1:-1;8119:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;8271:19:0;;;8239:7;8271:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8119:188;17277:125;;;;;;;;;;-1:-1:-1;17277:125:0;;;;;:::i;:::-;;:::i;3561:90::-;;;;;;;;;;;;3608:42;3561:90;;10308:77;;;;;;;;;;;;;:::i;16764:223::-;16845:12;;-1:-1:-1;;;;;16845:12:0;16831:10;:26;16823:35;;;;;;16930:12;;16890:21;;-1:-1:-1;;;;;16930:12:0;16922:57;16975:3;16954:17;16967:4;16890:21;16954:17;:::i;:::-;16953:25;;;;:::i;:::-;16922:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16812:175;16764:223;:::o;8805:248::-;8941:10;8907:4;8929:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8929:32:0;;;;;;;;;;:41;;;8986:37;8907:4;;8929:32;;8986:37;;;;8964:6;160:25:1;;148:2;133:18;;14:177;8986:37:0;;;;;;;;-1:-1:-1;9041:4:0;8805:248;;;;;:::o;17787:108::-;17842:7;17869:6;;;;;;;;;-1:-1:-1;;;;;17869:6:0;-1:-1:-1;;;;;17869:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17862:25;;17787:108;:::o;14188:683::-;14322:4;-1:-1:-1;;;;;14347:20:0;;14339:70;;;;-1:-1:-1;;;14339:70:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14428:23:0;;14420:71;;;;-1:-1:-1;;;14420:71:0;;;;;;;:::i;:::-;14541:12;;-1:-1:-1;;;;;14506:19:0;;;;;;:11;:19;;;;;;;;14526:10;14506:31;;;;;;;;:47;14502:304;;-1:-1:-1;;;;;14635:19:0;;14612:20;14635:19;;;:11;:19;;;;;;;;14655:10;14635:31;;;;;;;;14689:22;;;;14681:57;;;;-1:-1:-1;;;14681:57:0;;5408:2:1;14681:57:0;;;5390:21:1;5447:2;5427:18;;;5420:30;-1:-1:-1;;;5466:18:1;;;5459:52;5528:18;;14681:57:0;5206:346:1;14681:57:0;-1:-1:-1;;;;;14753:19:0;;;;;;:11;:19;;;;;;;;14773:10;14753:31;;;;;;;:41;;14788:6;;14753:19;:41;;14788:6;;14753:41;:::i;:::-;;;;-1:-1:-1;;;14502:304:0;14823:40;14837:6;14845:9;14856:6;14823:13;:40::i;:::-;14816:47;;14188:683;;;;;;:::o;8317:252::-;1737:10;1726:7;1637;1664:6;-1:-1:-1;;;;;1664:6:0;;1591:87;1726:7;-1:-1:-1;;;;;1726:21:0;;1718:66;;;;-1:-1:-1;;;1718:66:0;;;;;;;:::i;:::-;8379:6:::1;:13:::0;;-1:-1:-1;;8379:13:0::1;8388:4;8379:13;::::0;;8403:61:::1;8416:24;8434:4;-1:-1:-1::0;;;;;8085:18:0;8058:7;8085:18;;;:9;:18;;;;;;;7992:119;8416:24:::1;8442:9;8453:10;8403:12;:61::i;:::-;8475:10;:18:::0;;-1:-1:-1;;;;8475:18:0::1;::::0;;8504:6:::1;:14:::0;;-1:-1:-1;;8504:14:0::1;::::0;;8545:16:::1;:12;8560:1;8545:16;:::i;:::-;8529:13;:32:::0;8317:252::o;1812:103::-;1737:10;1726:7;1637;1664:6;-1:-1:-1;;;;;1664:6:0;;1591:87;1726:7;-1:-1:-1;;;;;1726:21:0;;1718:66;;;;-1:-1:-1;;;1718:66:0;;;;;;;:::i;:::-;1877:30:::1;1904:1;1877:18;:30::i;:::-;1812:103::o:0;17544:114::-;5985:12;;-1:-1:-1;;;;;5985:12:0;6001:10;5985:26;5977:71;;;;-1:-1:-1;;;5977:71:0;;;;;;;:::i;:::-;17625:6:::1;::::0;:25:::1;::::0;-1:-1:-1;;;17625:25:0;;1555:14:1;;1548:22;17625:25:0::1;::::0;::::1;1530:41:1::0;17625:6:0::1;::::0;;::::1;-1:-1:-1::0;;;;;17625:6:0::1;::::0;:16:::1;::::0;1503:18:1;;17625:25:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17544:114:::0;:::o;17666:113::-;5985:12;;-1:-1:-1;;;;;5985:12:0;6001:10;5985:26;5977:71;;;;-1:-1:-1;;;5977:71:0;;;;;;;:::i;:::-;17753:6:::1;:18:::0;17666:113::o;17410:126::-;5985:12;;-1:-1:-1;;;;;5985:12:0;6001:10;5985:26;5977:71;;;;-1:-1:-1;;;5977:71:0;;;;;;;:::i;:::-;17498:6:::1;::::0;:30:::1;::::0;-1:-1:-1;;;17498:30:0;;::::1;::::0;::::1;160:25:1::0;;;17498:6:0::1;::::0;;::::1;-1:-1:-1::0;;;;;17498:6:0::1;::::0;:24:::1;::::0;133:18:1;;17498:30:0::1;14:177:1::0;13854:326:0;13961:4;13998:10;13987:7;1637;1664:6;-1:-1:-1;;;;;1664:6:0;;1591:87;13987:7;-1:-1:-1;;;;;13987:21:0;;13983:190;;14032:45;14047:10;14059:9;14070:6;14032:14;:45::i;:::-;14025:52;;;;13983:190;14117:44;14131:10;14143:9;14154:6;14117:13;:44::i;17277:125::-;5985:12;;-1:-1:-1;;;;;5985:12:0;6001:10;5985:26;5977:71;;;;-1:-1:-1;;;5977:71:0;;;;;;;:::i;:::-;17363:6:::1;::::0;:31:::1;::::0;-1:-1:-1;;;17363:31:0;;::::1;::::0;::::1;160:25:1::0;;;17363:6:0::1;::::0;;::::1;-1:-1:-1::0;;;;;17363:6:0::1;::::0;:20:::1;::::0;133:18:1;;17363:31:0::1;14:177:1::0;10308:77:0;1737:10;1726:7;1637;1664:6;-1:-1:-1;;;;;1664:6:0;;1591:87;1726:7;-1:-1:-1;;;;;1726:21:0;;1718:66;;;;-1:-1:-1;;;1718:66:0;;;;;;;:::i;:::-;10363:6:::1;:14:::0;;-1:-1:-1;;10363:14:0::1;::::0;;10308:77::o;15075:1681::-;15201:4;-1:-1:-1;;;;;15226:20:0;;15218:70;;;;-1:-1:-1;;;15218:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15307:23:0;;15299:71;;;;-1:-1:-1;;;15299:71:0;;;;;;;:::i;:::-;1637:7;1664:6;-1:-1:-1;;;;;15448:17:0;;;1664:6;;15448:17;;:41;;-1:-1:-1;1637:7:0;1664:6;-1:-1:-1;;;;;15469:20:0;;;1664:6;;15469:20;15448:41;:51;;;-1:-1:-1;15493:6:0;;;;15448:51;15444:132;;;15523:41;15538:6;15546:9;15557:6;15523:14;:41::i;:::-;15516:48;;;;15444:132;15660:10;;-1:-1:-1;;;15660:10:0;;;;:19;15652:52;;;;-1:-1:-1;;;15652:52:0;;6383:2:1;15652:52:0;;;6365:21:1;6422:2;6402:18;;;6395:30;-1:-1:-1;;;6441:18:1;;;6434:50;6501:18;;15652:52:0;6181:344:1;15652:52:0;15791:6;;;;;;;15787:77;;;15814:38;15826:6;15834:9;15845:6;15814:11;:38::i;:::-;16018:11;;;;16014:170;;;16069:4;-1:-1:-1;;;;;16056:17:0;:9;-1:-1:-1;;;;;16056:17:0;;:35;;;;16087:4;-1:-1:-1;;;;;16077:14:0;:6;-1:-1:-1;;;;;16077:14:0;;16056:35;16055:117;;16166:6;16055:117;;;16112:34;16120:6;16128:9;16139:6;16112:7;:34::i;:::-;16046:126;;16014:170;16298:4;-1:-1:-1;;;;;16285:17:0;:9;-1:-1:-1;;;;;16285:17:0;;:38;;;;;16306:6;;;;;;;;;-1:-1:-1;;;;;16306:6:0;-1:-1:-1;;;;;16306:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16281:122;;;16340:11;:9;:11::i;:::-;16506:26;16522:9;16506:15;:26::i;:::-;16502:69;;;16549:10;:8;:10::i;:::-;16632:41;16647:6;16655:9;16666:6;16632:14;:41::i;:::-;;16706:9;-1:-1:-1;;;;;16689:35:0;16698:6;-1:-1:-1;;;;;16689:35:0;-1:-1:-1;;;;;;;;;;;16717:6:0;16689:35;;;;160:25:1;;148:2;133:18;;14:177;16689:35:0;;;;;;;;-1:-1:-1;16744:4:0;15075:1681;;;;;:::o;12432:293::-;12529:188;;-1:-1:-1;;;12529:188:0;;12592:4;12529:188;;;7121:34:1;7171:18;;;7164:34;;;12638:1:0;7214:18:1;;;7207:34;;;7257:18;;;7250:34;-1:-1:-1;;;;;7321:15:1;;7300:19;;;7293:44;12691:15:0;7353:19:1;;;7346:35;3608:42:0;;12529:22;;12559:9;;7055:19:1;;12529:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12432:293;;;:::o;1923:191::-;1997:16;2016:6;;-1:-1:-1;;;;;2033:17:0;;;-1:-1:-1;;;;;;2033:17:0;;;;;;2066:40;;2016:6;;;;;;;2066:40;;1997:16;2066:40;1986:128;1923:191;:::o;9061:453::-;-1:-1:-1;;;;;9229:17:0;;9188:4;9229:17;;;:9;:17;;;;;;9265:23;;;;9257:56;;;;-1:-1:-1;;;9257:56:0;;7905:2:1;9257:56:0;;;7887:21:1;7944:2;7924:18;;;7917:30;-1:-1:-1;;;7963:18:1;;;7956:50;8023:18;;9257:56:0;7703:344:1;9257:56:0;-1:-1:-1;;;;;9344:17:0;;;;;;:9;:17;;;;;;:26;;9364:6;;9344:26;:::i;:::-;-1:-1:-1;;;;;9324:17:0;;;;;;;:9;:17;;;;;;:46;;;;9404:20;;;;;;;:29;;9427:6;;9404:29;:::i;:::-;-1:-1:-1;;;;;9381:20:0;;;;;;;:9;:20;;;;;;;:52;;;;9449:35;;;;;;-1:-1:-1;;;;;;;;;;;9449:35:0;;;9477:6;160:25:1;;148:2;133:18;;14:177;9449:35:0;;;;;;;;-1:-1:-1;9502:4:0;;9061:453;-1:-1:-1;;;;9061:453:0:o;9522:699::-;-1:-1:-1;;;;;9657:23:0;;;;;;:15;:23;;;;;;;;:53;;;;-1:-1:-1;;;;;;9684:26:0;;;;;;:15;:26;;;;;;;;9657:53;9653:92;;;9522:699;;;:::o;9653:92::-;9787:4;-1:-1:-1;;;;;9777:14:0;:6;-1:-1:-1;;;;;9777:14:0;;:45;;;;-1:-1:-1;;;;;;9796:26:0;;;;;;:15;:26;;;;;;;;9795:27;9777:45;9773:275;;;9857:12;;9847:6;:22;;9839:47;;;;-1:-1:-1;;;9839:47:0;;8254:2:1;9839:47:0;;;8236:21:1;8293:2;8273:18;;;8266:30;-1:-1:-1;;;8312:18:1;;;8305:42;8364:18;;9839:47:0;8052:336:1;9839:47:0;9773:275;;;9940:4;-1:-1:-1;;;;;9927:17:0;:9;-1:-1:-1;;;;;9927:17:0;;:45;;;;-1:-1:-1;;;;;;9949:23:0;;;;;;:15;:23;;;;;;;;9948:24;9927:45;9923:125;;;10007:12;;9997:6;:22;;9989:47;;;;-1:-1:-1;;;9989:47:0;;8254:2:1;9989:47:0;;;8236:21:1;8293:2;8273:18;;;8266:30;-1:-1:-1;;;8312:18:1;;;8305:42;8364:18;;9989:47:0;8052:336:1;9989:47:0;-1:-1:-1;;;;;10088:26:0;;;;;;:15;:26;;;;;;;;10083:131;;10172:15;;-1:-1:-1;;;;;8085:18:0;;8058:7;8085:18;;;:9;:18;;;;;;10139:29;;:6;:29;:::i;:::-;:48;;10131:71;;;;-1:-1:-1;;;10131:71:0;;8595:2:1;10131:71:0;;;8577:21:1;8634:2;8614:18;;;8607:30;-1:-1:-1;;;8653:18:1;;;8646:40;8703:18;;10131:71:0;8393:334:1;10656:1316:0;-1:-1:-1;;;;;10854:17:0;;10767:7;10854:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;10875:15:0;;;;;;:11;:15;;;;;;;;10854:36;10850:82;;;-1:-1:-1;10914:6:0;10907:13;;10850:82;10944:12;10967:23;11064:13;;11049:12;:28;11045:382;;;11117:3;11102:11;:6;11111:2;11102:11;:::i;:::-;11101:19;;;;:::i;:::-;11094:26;;11157:4;11135:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;11045:382:0;;-1:-1:-1;11045:382:0;;11216:8;;:12;11212:215;;3993:5;11262:8;;11253:6;:17;;;;:::i;:::-;11252:32;;;;:::i;:::-;11245:39;;11345:8;;11329:12;;11322:4;:19;;;;:::i;:::-;11321:32;;;;:::i;:::-;11299:18;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;11407:8:0;;11394:9;;11387:16;;:4;:16;:::i;:::-;11386:29;;;;:::i;:::-;11368:47;;11212:215;11503:8;;11499:433;;11572:59;11587:4;11601;11608:22;11615:15;11608:4;:22;:::i;:::-;11572:14;:59::i;:::-;-1:-1:-1;11674:4:0;-1:-1:-1;;;;;11651:53:0;;-1:-1:-1;;;;;;;;;;;11681:22:0;11688:15;11681:4;:22;:::i;:::-;11651:53;;160:25:1;;;148:2;133:18;11651:53:0;;;;;;;11827:6;;11798:54;;11813:4;;11827:6;;;-1:-1:-1;;;;;11827:6:0;11836:15;11798:14;:54::i;:::-;-1:-1:-1;11895:6:0;;11872:48;;-1:-1:-1;;;;;11895:6:0;;;;;;;11872:48;;;-1:-1:-1;;;;;;;;;;;11872:48:0;;;11904:15;160:25:1;;148:2;133:18;;14:177;11872:48:0;;;;;;;;11499:433;11951:13;11960:4;11951:6;:13;:::i;:::-;11944:20;10656:1316;-1:-1:-1;;;;;;10656:1316:0:o;14879:188::-;5463:6;:13;;5472:4;-1:-1:-1;;5463:13:0;;;;;;;;14955:6:::1;::::0;14933:31:::1;::::0;;-1:-1:-1;;;14933:31:0;;;;5463:13;14933:6;;::::1;-1:-1:-1::0;;;;;14933:6:0::1;::::0;:16:::1;::::0;14955:6;14933:31:::1;::::0;;::::1;::::0;-1:-1:-1;;14933:31:0;;;;;;;;-1:-1:-1;14933:6:0;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;14929:131;;15047:1;15030:13;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;14929:131:0::1;::::0;-1:-1:-1;14929:131:0::1;;14995:1;14980:11;;:16;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;14929:131:0::1;5499:6:::0;:14;;-1:-1:-1;;5499:14:0;;;14879:188::o;10393:255::-;10460:4;10510;-1:-1:-1;;;;;10497:17:0;:9;-1:-1:-1;;;;;10497:17:0;;:57;;;;-1:-1:-1;10548:6:0;;;;10547:7;10497:57;:85;;;;-1:-1:-1;10571:11:0;;-1:-1:-1;;;10571:11:0;;;;10497:85;:143;;;;-1:-1:-1;10627:13:0;;10617:4;10599:24;;;;:9;:24;;;;;;:41;;10477:163;10393:255;-1:-1:-1;;10393:255:0:o;12733:1113::-;5463:6;:13;;-1:-1:-1;;5463:13:0;5472:4;5463:13;;;12826:4:::1;-1:-1:-1::0;8085:18:0;;;:9;:18;;;;;;12871::::1;::::0;12913:20;;;:46:::1;;-1:-1:-1::0;12937:22:0;;12913:46:::1;12909:85;;;12976:7;;;;12909:85;13055:23;13142:1;13122:17;13100:18;;13082:15;:36;;;;:::i;:::-;13081:58;;;;:::i;:::-;:62;;;;:::i;:::-;13055:88:::0;-1:-1:-1;13154:26:0::1;13183:33;13055:88:::0;13183:15;:33:::1;:::i;:::-;13154:62:::0;-1:-1:-1;13257:21:0::1;13327:36;13154:62:::0;13327:16:::1;:36::i;:::-;13376:23;13402:41;13426:17:::0;13402:21:::1;:41;:::i;:::-;13505:1;13484:18;:22:::0;13376:67;-1:-1:-1;13548:19:0;;;;;:42:::1;;;13589:1;13571:15;:19;13548:42;13544:295;;;13654:15;::::0;13607:63:::1;::::0;13620:15;;13637;;-1:-1:-1;;;;;13654:15:0::1;13607:12;:63::i;:::-;13794:18;::::0;13690:137:::1;::::0;;8934:25:1;;;8990:2;8975:18;;8968:34;;;9018:18;;;9011:34;;;;13690:137:0;::::1;::::0;;;;8922:2:1;13690:137:0;;::::1;13544:295;12771:1075;;;;;;5499:6:::0;:14;;-1:-1:-1;;5499:14:0;;;12733:1113::o;11980:444::-;12106:16;;;12120:1;12106:16;;;;;;;;12082:21;;12106:16;;;;;;;;;;-1:-1:-1;12106:16:0;12082:40;;12151:4;12133;12138:1;12133:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12133:23:0;;;-1:-1:-1;;;;;12133:23:0;;;;;3608:42;-1:-1:-1;;;;;12177:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12167:4;12172:1;12167:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12167:23:0;;;:7;;;;;;;;;;;:23;12229:187;;-1:-1:-1;;;12229:187:0;;3608:42;;12229:57;;:187;;12301:11;;12327:1;;12343:4;;12370;;12390:15;;12229:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;196:180:1;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:548::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;665:3;850:1;845:2;836:6;825:9;821:22;817:31;810:42;920:2;913;909:7;904:2;896:6;892:15;888:29;877:9;873:45;869:54;861:62;;;;381:548;;;;:::o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;989:70;934:131;:::o;1070:315::-;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:456::-;1659:6;1667;1675;1728:2;1716:9;1707:7;1703:23;1699:32;1696:52;;;1744:1;1741;1734:12;1696:52;1783:9;1770:23;1802:31;1827:5;1802:31;:::i;:::-;1852:5;-1:-1:-1;1909:2:1;1894:18;;1881:32;1922:33;1881:32;1922:33;:::i;:::-;1582:456;;1974:7;;-1:-1:-1;;;2028:2:1;2013:18;;;;2000:32;;1582:456::o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2484:118::-;2570:5;2563:13;2556:21;2549:5;2546:32;2536:60;;2592:1;2589;2582:12;2607:241;2663:6;2716:2;2704:9;2695:7;2691:23;2687:32;2684:52;;;2732:1;2729;2722:12;2684:52;2771:9;2758:23;2790:28;2812:5;2790:28;:::i;3061:388::-;3129:6;3137;3190:2;3178:9;3169:7;3165:23;3161:32;3158:52;;;3206:1;3203;3196:12;3158:52;3245:9;3232:23;3264:31;3289:5;3264:31;:::i;:::-;3314:5;-1:-1:-1;3371:2:1;3356:18;;3343:32;3384:33;3343:32;3384:33;:::i;:::-;3436:7;3426:17;;;3061:388;;;;;:::o;3680:127::-;3741:10;3736:3;3732:20;3729:1;3722:31;3772:4;3769:1;3762:15;3796:4;3793:1;3786:15;3812:168;3885:9;;;3916;;3933:15;;;3927:22;;3913:37;3903:71;;3954:18;;:::i;3985:217::-;4025:1;4051;4041:132;;4095:10;4090:3;4086:20;4083:1;4076:31;4130:4;4127:1;4120:15;4158:4;4155:1;4148:15;4041:132;-1:-1:-1;4187:9:1;;3985:217::o;4207:184::-;4277:6;4330:2;4318:9;4309:7;4305:23;4301:32;4298:52;;;4346:1;4343;4336:12;4298:52;-1:-1:-1;4369:16:1;;4207:184;-1:-1:-1;4207:184:1:o;4396:401::-;4598:2;4580:21;;;4637:2;4617:18;;;4610:30;4676:34;4671:2;4656:18;;4649:62;-1:-1:-1;;;4742:2:1;4727:18;;4720:35;4787:3;4772:19;;4396:401::o;4802:399::-;5004:2;4986:21;;;5043:2;5023:18;;;5016:30;5082:34;5077:2;5062:18;;5055:62;-1:-1:-1;;;5148:2:1;5133:18;;5126:33;5191:3;5176:19;;4802:399::o;5557:128::-;5624:9;;;5645:11;;;5642:37;;;5659:18;;:::i;5690:356::-;5892:2;5874:21;;;5911:18;;;5904:30;5970:34;5965:2;5950:18;;5943:62;6037:2;6022:18;;5690:356::o;6051:125::-;6116:9;;;6137:10;;;6134:36;;;6150:18;;:::i;6530:245::-;6597:6;6650:2;6638:9;6629:7;6625:23;6621:32;6618:52;;;6666:1;6663;6656:12;6618:52;6698:9;6692:16;6717:28;6739:5;6717:28;:::i;7392:306::-;7480:6;7488;7496;7549:2;7537:9;7528:7;7524:23;7520:32;7517:52;;;7565:1;7562;7555:12;7517:52;7594:9;7588:16;7578:26;;7644:2;7633:9;7629:18;7623:25;7613:35;;7688:2;7677:9;7673:18;7667:25;7657:35;;7392:306;;;;;:::o;9188:127::-;9249:10;9244:3;9240:20;9237:1;9230:31;9280:4;9277:1;9270:15;9304:4;9301:1;9294:15;9320:251;9390:6;9443:2;9431:9;9422:7;9418:23;9414:32;9411:52;;;9459:1;9456;9449:12;9411:52;9491:9;9485:16;9510:31;9535:5;9510:31;:::i;9576:980::-;9838:4;9886:3;9875:9;9871:19;9917:6;9906:9;9899:25;9943:2;9981:6;9976:2;9965:9;9961:18;9954:34;10024:3;10019:2;10008:9;10004:18;9997:31;10048:6;10083;10077:13;10114:6;10106;10099:22;10152:3;10141:9;10137:19;10130:26;;10191:2;10183:6;10179:15;10165:29;;10212:1;10222:195;10236:6;10233:1;10230:13;10222:195;;;10301:13;;-1:-1:-1;;;;;10297:39:1;10285:52;;10392:15;;;;10357:12;;;;10333:1;10251:9;10222:195;;;-1:-1:-1;;;;;;;10473:32:1;;;;10468:2;10453:18;;10446:60;-1:-1:-1;;;10537:3:1;10522:19;10515:35;10434:3;9576:980;-1:-1:-1;;;9576:980:1:o

Swarm Source

ipfs://32eb7523fb20baa9a1e41c61d762eeb9141f9d16658484cc4e7cdd297d4e8503
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.