ETH Price: $3,050.12 (+2.34%)
Gas: 1 Gwei

Token

Alea (ALEA)
 

Overview

Max Total Supply

1,000,000 ALEA

Holders

926 (0.00%)

Market

Price

$2.19 @ 0.000718 ETH (+6.42%)

Onchain Market Cap

$2,190,000.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,000 ALEA

Value
$4,380.00 ( ~1.4360 Eth) [0.2000%]
0x583a9538A95798379eaE3654Be83c1D49Ae61870
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Alea is the ultimate competitive, hero-based arena brawler that brings the thrill of ancient gladiatorial combat into the digital realm.

# Exchange Pair Price  24H Volume % Volume
1
Matcha (Ethereum)
0X24BFF4FE25B5807BAD49B2C08D79BB271766E68A-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$2.09
0.0006023 Eth
$9,756.59
4,905.209 0X24BFF4FE25B5807BAD49B2C08D79BB271766E68A
59.0439%
2
Uniswap V2 (Ethereum)
0X24BFF4FE25B5807BAD49B2C08D79BB271766E68A-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$2.18
0.0007127 Eth
$7,228.73
3,402.525 0X24BFF4FE25B5807BAD49B2C08D79BB271766E68A
40.9561%

Contract Source Code Verified (Exact Match)

Contract Name:
Alea

Compiler Version
v0.8.8+commit.dddeac2f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-10
*/

//SPDX-License-Identifier: UNLICENSED

//Website: https:https://alea.gg
//Telegram: https://t.me/aleaeth

pragma solidity ^0.8.8;

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

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

    constructor() {
        _setOwner(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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

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

contract ERC20 is IERC20 {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_
    ) {
        _name = name_;
        _symbol = symbol_;
        _totalSupply = totalSupply_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, msg.sender, currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        _approve(msg.sender, spender, currentAllowance - subtractedValue);

        return true;
    }

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

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

interface IRouter {
    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 Alea is ERC20, Ownable {
    using Address for address payable;

    uint256 private launchFeeBlocks = 1;
    uint256 private launchFee = 99;

    uint256 public buyLimit = 2e4 * 10 ** 18;
    uint256 public sellLimit = 2e4 * 10 ** 18;
    uint256 public walletLimit = 2e4 * 10 ** 18;

    address public marketingWallet = 0x6Ba5Ea74374Ca22194Fb8882B741C1af90cA83a3;
    address public devWallet = 0x42582B97651d2Cb9941626e9431a66c12cC5563A;
    address public dev2Wallet = 0xD5f7288e24D1a6b9129D3210f592E2471d2f4b60;
    address public ecosystemWallet = 0xf1a5BfF4fdd5a17bE56A0dE932952f9455768620;

    struct Fees {
        uint256 marketing;
        uint256 liquidity;
        uint256 ecosystem;
        uint256 dev;
        uint256 dev2;
    }

    Fees public fees = Fees(0, 0, 0, 0, 0);
    Fees public sellFees = Fees(0, 0, 0, 0, 0);

    mapping(address => bool) public feeExempts;

    IRouter public router;
    address public pair;

    constructor() ERC20("Alea", "ALEA", 1e6 * 10 ** decimals()) {
        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        _balances[msg.sender] = totalSupply();

        feeExempts[msg.sender] = true;
        feeExempts[address(this)] = true;

        feeExempts[deadWallet] = true;

        feeExempts[marketingWallet] = true;
        feeExempts[ecosystemWallet] = true;
        feeExempts[devWallet] = true;
        feeExempts[dev2Wallet] = true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, msg.sender, currentAllowance - amount);

        return true;
    }

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

    address public constant deadWallet =
        0x000000000000000000000000000000000000dEaD;

    bool public tradingEnabled = false;
    uint256 public tradingStartBlock;

    bool public liquificationEnabled = false;
    uint256 public liquificationThreshold = 5e3 * 10 ** 18;

    bool public transferRateLimitEnabled = true;
    uint256 public transferRateLimit = 5 seconds;
    mapping(address => uint256) private _sellTimestamps;

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        if (!feeExempts[sender] && !feeExempts[recipient]) {
            require(tradingEnabled, "Trading is not started yet");
        }
        if (sender == pair && !feeExempts[recipient] && !_reentrantLock) {
            require(amount <= buyLimit, "Buy limit exceeded");
            require(
                balanceOf(recipient) + amount <= walletLimit,
                "Per wallet limit exceeded"
            );
        }
        if (
            sender != pair &&
            !feeExempts[recipient] &&
            !feeExempts[sender] &&
            !_reentrantLock
        ) {
            require(amount <= sellLimit, "Sell limit exceeded");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= walletLimit,
                    "Per wallet limit exceeded"
                );
            }
            if (transferRateLimitEnabled) {
                uint256 delta = block.timestamp - _sellTimestamps[sender];
                require(
                    delta >= transferRateLimit,
                    "Transfer rate limit exceeded"
                );
                _sellTimestamps[sender] = block.timestamp;
            }
        }
        uint256 liquificationFee;
        uint256 totalFee;
        uint256 fee;
        Fees memory currentFees;
        bool useLaunchFee = !feeExempts[sender] &&
            !feeExempts[recipient] &&
            block.number < tradingStartBlock + launchFeeBlocks;
        if (_reentrantLock || feeExempts[sender] || feeExempts[recipient])
            fee = 0;
        else if (recipient == pair && !useLaunchFee) {
            liquificationFee =
                sellFees.liquidity +
                sellFees.marketing +
                sellFees.ecosystem +
                sellFees.dev +
                sellFees.dev2;
            totalFee = liquificationFee;
            currentFees = sellFees;
        } else if (!useLaunchFee) {
            liquificationFee =
                fees.liquidity +
                fees.marketing +
                fees.ecosystem +
                fees.dev +
                fees.dev2;
            totalFee = liquificationFee;
            currentFees = fees;
        } else {
            liquificationFee = launchFee;
            totalFee = launchFee;
        }
        fee = (amount * totalFee) / 100;
        if (liquificationEnabled && sender != pair)
            liquify(liquificationFee, currentFees);
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            if (liquificationFee > 0) {
                uint256 feeAmount = (amount * liquificationFee) / 100;
                super._transfer(sender, address(this), feeAmount);
            }
        }
    }

    bool private _reentrantLock = false;

    modifier reentrantLock() {
        if (!_reentrantLock) {
            _reentrantLock = true;
            _;
            _reentrantLock = false;
        }
    }

    function liquify(
        uint256 liquificationFee,
        Fees memory swapFees
    ) private reentrantLock {
        if (liquificationFee == 0) {
            return;
        }
        uint256 balance = balanceOf(address(this));
        if (balance >= liquificationThreshold) {
            if (liquificationThreshold > 1) {
                balance = liquificationThreshold;
            }

            uint256 d = liquificationFee * 2;
            uint256 liquifyAmount = (balance * swapFees.liquidity) / d;
            uint256 swapAmount = balance - liquifyAmount;
            uint256 initialBalance = address(this).balance;

            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = router.WETH();
            _approve(address(this), address(router), swapAmount);
            router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                swapAmount,
                0,
                path,
                address(this),
                block.timestamp
            );

            uint256 delta = address(this).balance - initialBalance;
            uint256 unitBalance = delta / (d - swapFees.liquidity);
            uint256 liquidityETH = unitBalance * swapFees.liquidity;
            if (liquidityETH > 0) {
                addLiquidity(liquifyAmount, liquidityETH);
            }
            uint256 marketing = unitBalance * 2 * swapFees.marketing;
            if (marketing > 0) {
                payable(marketingWallet).sendValue(marketing);
            }
            uint256 ecosystem = unitBalance * 2 * swapFees.ecosystem;
            if (ecosystem > 0) {
                payable(ecosystemWallet).sendValue(ecosystem);
            }
            uint256 dev = unitBalance * 2 * swapFees.dev;
            if (dev > 0) {
                payable(devWallet).sendValue(dev);
            }
            uint256 dev2 = unitBalance * 2 * swapFees.dev2;
            if (dev2 > 0) {
                payable(dev2Wallet).sendValue(dev2);
            }
        }
    }

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

    function setLaunchFeeBlocksNumber(uint256 _blocks) external onlyOwner {
        require(!tradingEnabled, "Trading is already started");
        require(_blocks < 5, "Launch fee blocks number should not exceed 4");
        launchFeeBlocks = _blocks;
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already started");
        tradingEnabled = true;
        liquificationEnabled = true;
        tradingStartBlock = block.number;
    }

    function setLimits(
        uint256 buy,
        uint256 sell,
        uint256 wallet
    ) external onlyOwner {
        require(buy >= 1e4, "Buy limit should be at least 1%");
        require(sell >= 1e4, "Sell limit should be at least 1%");
        require(wallet >= 1e4, "Per wallet limit should be at least 1%");
        buyLimit = buy * 10 ** decimals();
        sellLimit = sell * 10 ** decimals();
        walletLimit = wallet * 10 ** decimals();
    }

    function setTransferFees(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _ecosystem,
        uint256 _dev,
        uint256 _dev2
    ) external onlyOwner {
        fees = Fees(_marketing, _liquidity, _ecosystem, _dev, _dev2);
        require(
            (_marketing + _liquidity + _ecosystem + _dev + _dev2) <= 25,
            "Total fee should not exceed 25%"
        );
    }

    function setSellFees(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _ecosystem,
        uint256 _dev,
        uint256 _dev2
    ) external onlyOwner {
        sellFees = Fees(_marketing, _liquidity, _ecosystem, _dev, _dev2);
        require(
            (_marketing + _liquidity + _ecosystem + _dev + _dev2) <= 25,
            "Total fee should not exceed 25%"
        );
    }

    function setFeeExempt(address _address, bool state) external onlyOwner {
        feeExempts[_address] = state;
    }

    function setFeeExempts(
        address[] memory _addresses,
        bool state
    ) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            feeExempts[_addresses[i]] = state;
        }
    }

    function setMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Address cannot be zero");
        marketingWallet = newWallet;
    }

    function setEcosystemWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Address cannot be zero");
        ecosystemWallet = newWallet;
    }

    function setDevWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Address cannot be zero");
        devWallet = newWallet;
    }

    function setDev2Wallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Address cannot be zero");
        dev2Wallet = newWallet;
    }

    function enableLiquification(bool state) external onlyOwner {
        liquificationEnabled = state;
    }

    function setLiquificationThreshold(uint256 threshold) external onlyOwner {
        require(
            threshold <= 1e4,
            "Liquification threshold should not exceed 1%"
        );
        liquificationThreshold = threshold * 10 ** decimals();
    }

    function setTransferRateLimit(bool state, uint256 time) external onlyOwner {
        transferRateLimit = time * 1 seconds;
        transferRateLimitEnabled = state;
        require(time <= 300, "Transfer rate limit should not exceed 5 minutes");
    }

    function retreiveETH() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }

    function retreiveERC20(
        address erc20address,
        uint256 amount
    ) external onlyOwner {
        require(
            erc20address != address(this),
            "Should provide other ERC20 contract address"
        );
        IERC20(erc20address).transfer(owner(), amount);
    }

    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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"dev2Wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"enableLiquification","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"feeExempts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"dev2","type":"uint256"}],"stateMutability":"view","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":[],"name":"liquificationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquificationThreshold","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":"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc20address","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"retreiveERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retreiveETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"ecosystem","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"dev2","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDev2Wallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setEcosystemWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeExempts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"name":"setLaunchFeeBlocksNumber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"wallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setLiquificationThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_ecosystem","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_dev2","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_ecosystem","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_dev2","type":"uint256"}],"name":"setTransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setTransferRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferRateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferRateLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60016006819055606360075569043c33c193756480000060088190556009819055600a55600b80546001600160a01b0319908116736ba5ea74374ca22194fb8882b741c1af90ca83a317909155600c805482167342582b97651d2cb9941626e9431a66c12cc5563a179055600d8054821673d5f7288e24d1a6b9129d3210f592e2471d2f4b60179055600e805490911673f1a5bff4fdd5a17be56a0de932952f94557686201790556000608081905260a081905260c081905260e0819052610100819052600f81905560108190556011819055601281905560138190556101c06040526101208190526101408190526101608190526101808190526101a08190526014819055601581905560168190556017819055601855601b805460ff60a01b19169055601d805460ff1990811690915569010f0cf064dd59200000601e55601f8054821690921790915560056020556022805490911690553480156200016657600080fd5b5060405180604001604052806004815260200163416c656160e01b81525060405180604001604052806004815260200163414c454160e01b815250620001b1620004a460201b60201c565b620001be90600a620006b6565b620001cd90620f4240620006ce565b8251620001e2906003906020860190620004fb565b508151620001f8906004906020850190620004fb565b50600255506200020a905033620004a9565b601a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200026a57600080fd5b505afa1580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a59190620006f0565b6001600160a01b031663c9c6539630601a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030357600080fd5b505afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e9190620006f0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200038757600080fd5b505af11580156200039c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c29190620006f0565b601b80546001600160a01b0319166001600160a01b0392909216919091179055620003ec60025490565b3360009081526020818152604080832093909355601990528181208054600160ff19918216811790925530835283832080548216831790557fc73b1d6eda13a615b81c31830292dbbbf5fbb07f472982e223002bd83d5c3dc48054821683179055600b546001600160a01b0390811684528484208054831684179055600e54811684528484208054831684179055600c54811684528484208054831684179055600d5416835292909120805490921617905562000758565b601290565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000509906200071b565b90600052602060002090601f0160209004810192826200052d576000855562000578565b82601f106200054857805160ff191683800117855562000578565b8280016001018555821562000578579182015b82811115620005785782518255916020019190600101906200055b565b50620005869291506200058a565b5090565b5b808211156200058657600081556001016200058b565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005f8578160001904821115620005dc57620005dc620005a1565b80851615620005ea57918102915b93841c9390800290620005bc565b509250929050565b6000826200061157506001620006b0565b816200062057506000620006b0565b8160018114620006395760028114620006445762000664565b6001915050620006b0565b60ff841115620006585762000658620005a1565b50506001821b620006b0565b5060208310610133831016604e8410600b841016171562000689575081810a620006b0565b620006958383620005b7565b8060001904821115620006ac57620006ac620005a1565b0290505b92915050565b6000620006c760ff84168362000600565b9392505050565b6000816000190483118215151615620006eb57620006eb620005a1565b500290565b6000602082840312156200070357600080fd5b81516001600160a01b0381168114620006c757600080fd5b600181811c908216806200073057607f821691505b602082108114156200075257634e487b7160e01b600052602260045260246000fd5b50919050565b612d2e80620007686000396000f3fe6080604052600436106102b25760003560e01c8063715018a6116101755780639b8741c0116100dc578063d798cbd211610095578063e0f3ccf51161006f578063e0f3ccf51461088e578063f2fde38b146108b5578063f3ff43da146108d5578063f887ea40146108f557600080fd5b8063d798cbd214610802578063dd62ed3e14610818578063ddf10b7f1461085e57600080fd5b80639b8741c014610748578063a457c2d714610762578063a8aa1b3114610782578063a9059cbb146107a2578063bd10e58f146107c2578063c1cf53c4146107e257600080fd5b80638da5cb5b1161012e5780638da5cb5b146106665780638ea5220f146106845780638ebfc796146106a457806395d89b41146106c457806399e45804146106d95780639af1d35a146106f957600080fd5b8063715018a6146105d057806375f0a874146105e557806380c4e1b11461060557806384ded6c71461061b57806385141a771461063b5780638a8c523c1461065157600080fd5b80633fc051ea1161021957806358d3098e116101d257806358d3098e146104fa57806359ee780e1461051a5780635d098b381461053a57806361809cf41461055a5780637037a33d1461057a57806370a082311461059a57600080fd5b80633fc051ea14610440578063435263ef14610455578063476fa4ad1461048d5780634ada218b146104ad5780634f91e48c146104ce578063589210d9146104e457600080fd5b806321fc7b351161026b57806321fc7b351461039457806323b872dd146103ae578063313ce567146103ce578063338ccd0e146103ea578063395093511461040a5780633c8463a11461042a57600080fd5b806306fdde03146102be578063095ea7b3146102e95780630ecf20d51461031957806318160ddd1461033d578063189ae5f2146103525780631f53ac021461037457600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610915565b6040516102e091906126a2565b60405180910390f35b3480156102f557600080fd5b5061030961030436600461271c565b6109a7565b60405190151581526020016102e0565b34801561032557600080fd5b5061032f601e5481565b6040519081526020016102e0565b34801561034957600080fd5b5060025461032f565b34801561035e57600080fd5b5061037261036d366004612748565b6109be565b005b34801561038057600080fd5b5061037261038f366004612774565b610b55565b3480156103a057600080fd5b50601f546103099060ff1681565b3480156103ba57600080fd5b506103096103c9366004612798565b610bd6565b3480156103da57600080fd5b50604051601281526020016102e0565b3480156103f657600080fd5b506103726104053660046127d9565b610c87565b34801561041657600080fd5b5061030961042536600461271c565b610d82565b34801561043657600080fd5b5061032f600a5481565b34801561044c57600080fd5b50610372610db9565b34801561046157600080fd5b50600e54610475906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561049957600080fd5b506103726104a836600461282d565b610e2e565b3480156104b957600080fd5b50601b5461030990600160a01b900460ff1681565b3480156104da57600080fd5b5061032f60095481565b3480156104f057600080fd5b5061032f60085481565b34801561050657600080fd5b5061037261051536600461271c565b610e7a565b34801561052657600080fd5b50610372610535366004612774565b610fc6565b34801561054657600080fd5b50610372610555366004612774565b611047565b34801561056657600080fd5b50610372610575366004612860565b6110c8565b34801561058657600080fd5b50610372610595366004612937565b611168565b3480156105a657600080fd5b5061032f6105b5366004612774565b6001600160a01b031660009081526020819052604090205490565b3480156105dc57600080fd5b5061037261122b565b3480156105f157600080fd5b50600b54610475906001600160a01b031681565b34801561061157600080fd5b5061032f60205481565b34801561062757600080fd5b50600d54610475906001600160a01b031681565b34801561064757600080fd5b5061047561dead81565b34801561065d57600080fd5b50610372611270565b34801561067257600080fd5b506005546001600160a01b0316610475565b34801561069057600080fd5b50600c54610475906001600160a01b031681565b3480156106b057600080fd5b506103726106bf366004612955565b611329565b3480156106d057600080fd5b506102d361138d565b3480156106e557600080fd5b506103726106f436600461298e565b61139c565b34801561070557600080fd5b50600f54601054601154601254601354610720949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016102e0565b34801561075457600080fd5b50601d546103099060ff1681565b34801561076e57600080fd5b5061030961077d36600461271c565b611499565b34801561078e57600080fd5b50601b54610475906001600160a01b031681565b3480156107ae57600080fd5b506103096107bd36600461271c565b611534565b3480156107ce57600080fd5b506103726107dd36600461298e565b611541565b3480156107ee57600080fd5b506103726107fd3660046127d9565b6115fd565b34801561080e57600080fd5b5061032f601c5481565b34801561082457600080fd5b5061032f6108333660046129a7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561086a57600080fd5b50610309610879366004612774565b60196020526000908152604090205460ff1681565b34801561089a57600080fd5b50601454601554601654601754601854610720949392919085565b3480156108c157600080fd5b506103726108d0366004612774565b611685565b3480156108e157600080fd5b506103726108f0366004612774565b61172c565b34801561090157600080fd5b50601a54610475906001600160a01b031681565b606060038054610924906129d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610950906129d5565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b60006109b43384846117ad565b5060015b92915050565b336109d16005546001600160a01b031690565b6001600160a01b031614610a005760405162461bcd60e51b81526004016109f790612a10565b60405180910390fd5b612710831015610a525760405162461bcd60e51b815260206004820152601f60248201527f427579206c696d69742073686f756c64206265206174206c656173742031250060448201526064016109f7565b612710821015610aa45760405162461bcd60e51b815260206004820181905260248201527f53656c6c206c696d69742073686f756c64206265206174206c6561737420312560448201526064016109f7565b612710811015610b055760405162461bcd60e51b815260206004820152602660248201527f5065722077616c6c6574206c696d69742073686f756c64206265206174206c6560448201526561737420312560d01b60648201526084016109f7565b610b116012600a612b3f565b610b1b9084612b4e565b600855610b2a6012600a612b3f565b610b349083612b4e565b600955610b436012600a612b3f565b610b4d9082612b4e565b600a55505050565b33610b686005546001600160a01b031690565b6001600160a01b031614610b8e5760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b038116610bb45760405162461bcd60e51b81526004016109f790612b6d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610be38484846118d1565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109f7565b610c7c8533610c778685612b9d565b6117ad565b506001949350505050565b33610c9a6005546001600160a01b031690565b6001600160a01b031614610cc05760405162461bcd60e51b81526004016109f790612a10565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052600f85905560108490556011839055601282905560138190556019818385610d0f888a612bb4565b610d199190612bb4565b610d239190612bb4565b610d2d9190612bb4565b1115610d7b5760405162461bcd60e51b815260206004820152601f60248201527f546f74616c206665652073686f756c64206e6f7420657863656564203235250060448201526064016109f7565b5050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109b4918590610c77908690612bb4565b33610dcc6005546001600160a01b031690565b6001600160a01b031614610df25760405162461bcd60e51b81526004016109f790612a10565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610e2b573d6000803e3d6000fd5b50565b33610e416005546001600160a01b031690565b6001600160a01b031614610e675760405162461bcd60e51b81526004016109f790612a10565b601d805460ff1916911515919091179055565b33610e8d6005546001600160a01b031690565b6001600160a01b031614610eb35760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b038216301415610f205760405162461bcd60e51b815260206004820152602b60248201527f53686f756c642070726f76696465206f7468657220455243323020636f6e747260448201526a616374206164647265737360a81b60648201526084016109f7565b816001600160a01b031663a9059cbb610f416005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190612bcc565b505050565b33610fd96005546001600160a01b031690565b6001600160a01b031614610fff5760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b0381166110255760405162461bcd60e51b81526004016109f790612b6d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3361105a6005546001600160a01b031690565b6001600160a01b0316146110805760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b0381166110a65760405162461bcd60e51b81526004016109f790612b6d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b336110db6005546001600160a01b031690565b6001600160a01b0316146111015760405162461bcd60e51b81526004016109f790612a10565b60005b8251811015610fc157816019600085848151811061112457611124612be9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061116081612bff565b915050611104565b3361117b6005546001600160a01b031690565b6001600160a01b0316146111a15760405162461bcd60e51b81526004016109f790612a10565b6111ac816001612b4e565b602055601f805460ff191683151517905561012c8111156112275760405162461bcd60e51b815260206004820152602f60248201527f5472616e736665722072617465206c696d69742073686f756c64206e6f74206560448201526e78636565642035206d696e7574657360881b60648201526084016109f7565b5050565b3361123e6005546001600160a01b031690565b6001600160a01b0316146112645760405162461bcd60e51b81526004016109f790612a10565b61126e6000611f5f565b565b336112836005546001600160a01b031690565b6001600160a01b0316146112a95760405162461bcd60e51b81526004016109f790612a10565b601b54600160a01b900460ff16156113035760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c7265616479207374617274656400000000000060448201526064016109f7565b601b805460ff60a01b1916600160a01b179055601d805460ff1916600117905543601c55565b3361133c6005546001600160a01b031690565b6001600160a01b0316146113625760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b606060048054610924906129d5565b336113af6005546001600160a01b031690565b6001600160a01b0316146113d55760405162461bcd60e51b81526004016109f790612a10565b601b54600160a01b900460ff161561142f5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c7265616479207374617274656400000000000060448201526064016109f7565b600581106114945760405162461bcd60e51b815260206004820152602c60248201527f4c61756e63682066656520626c6f636b73206e756d6265722073686f756c642060448201526b1b9bdd08195e18d95959080d60a21b60648201526084016109f7565b600655565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561151b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109f7565b61152a3385610c778685612b9d565b5060019392505050565b60006109b43384846118d1565b336115546005546001600160a01b031690565b6001600160a01b03161461157a5760405162461bcd60e51b81526004016109f790612a10565b6127108111156115e15760405162461bcd60e51b815260206004820152602c60248201527f4c697175696669636174696f6e207468726573686f6c642073686f756c64206e60448201526b6f742065786365656420312560a01b60648201526084016109f7565b6115ed6012600a612b3f565b6115f79082612b4e565b601e5550565b336116106005546001600160a01b031690565b6001600160a01b0316146116365760405162461bcd60e51b81526004016109f790612a10565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052601485905560158490556016839055601782905560188190556019818385610d0f888a612bb4565b336116986005546001600160a01b031690565b6001600160a01b0316146116be5760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b0381166117235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109f7565b610e2b81611f5f565b3361173f6005546001600160a01b031690565b6001600160a01b0316146117655760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b03811661178b5760405162461bcd60e51b81526004016109f790612b6d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661180f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109f7565b6001600160a01b0382166118705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109f7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116119335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109f7565b6001600160a01b03831660009081526019602052604090205460ff1615801561197557506001600160a01b03821660009081526019602052604090205460ff16155b156119d357601b54600160a01b900460ff166119d35760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420737461727465642079657400000000000060448201526064016109f7565b601b546001600160a01b038481169116148015611a0957506001600160a01b03821660009081526019602052604090205460ff16155b8015611a18575060225460ff16155b15611adb57600854811115611a645760405162461bcd60e51b8152602060048201526012602482015271109d5e481b1a5b5a5d08195e18d95959195960721b60448201526064016109f7565b600a5481611a87846001600160a01b031660009081526020819052604090205490565b611a919190612bb4565b1115611adb5760405162461bcd60e51b815260206004820152601960248201527814195c881dd85b1b195d081b1a5b5a5d08195e18d959591959603a1b60448201526064016109f7565b601b546001600160a01b03848116911614801590611b1257506001600160a01b03821660009081526019602052604090205460ff16155b8015611b3757506001600160a01b03831660009081526019602052604090205460ff16155b8015611b46575060225460ff16155b15611cbe57600954811115611b935760405162461bcd60e51b815260206004820152601360248201527214d95b1b081b1a5b5a5d08195e18d959591959606a1b60448201526064016109f7565b601b546001600160a01b03838116911614611c1f57600a5481611bcb846001600160a01b031660009081526020819052604090205490565b611bd59190612bb4565b1115611c1f5760405162461bcd60e51b815260206004820152601960248201527814195c881dd85b1b195d081b1a5b5a5d08195e18d959591959603a1b60448201526064016109f7565b601f5460ff1615611cbe576001600160a01b038316600090815260216020526040812054611c4d9042612b9d565b9050602054811015611ca15760405162461bcd60e51b815260206004820152601c60248201527f5472616e736665722072617465206c696d69742065786365656465640000000060448201526064016109f7565b506001600160a01b03831660009081526021602052604090204290555b6000806000611cf56040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03871660009081526019602052604081205460ff16158015611d3757506001600160a01b03871660009081526019602052604090205460ff16155b8015611d515750600654601c54611d4e9190612bb4565b43105b60225490915060ff1680611d7d57506001600160a01b03881660009081526019602052604090205460ff165b80611da057506001600160a01b03871660009081526019602052604090205460ff165b15611dae5760009250611ec6565b601b546001600160a01b038881169116148015611dc9575080155b15611e4357601854601754601654601454601554611de79190612bb4565b611df19190612bb4565b611dfb9190612bb4565b611e059190612bb4565b6040805160a0810182526014548152601554602082015260165491810191909152601754606082015260185460808201529095508594509150611ec6565b80611ebd57601354601254601154600f54601054611e619190612bb4565b611e6b9190612bb4565b611e759190612bb4565b611e7f9190612bb4565b6040805160a081018252600f548152601054602082015260115491810191909152601254606082015260135460808201529095508594509150611ec6565b60075494508493505b6064611ed28588612b4e565b611edc9190612c1a565b601d5490935060ff168015611eff5750601b546001600160a01b03898116911614155b15611f0e57611f0e8583611fb1565b611f228888611f1d868a612b9d565b6122f7565b8215611f55578415611f555760006064611f3c8789612b4e565b611f469190612c1a565b9050611f538930836122f7565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60225460ff16611227576022805460ff1916600117905581611fd2576122e9565b30600090815260208190526040902054601e5481106122e7576001601e541115611ffb5750601e545b6000612008846002612b4e565b905060008184602001518461201d9190612b4e565b6120279190612c1a565b905060006120358285612b9d565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061206f5761206f612be9565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120c357600080fd5b505afa1580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fb9190612c3c565b8160018151811061210e5761210e612be9565b6001600160a01b039283166020918202929092010152601a5461213491309116856117ad565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061216d908690600090869030904290600401612c59565b600060405180830381600087803b15801561218757600080fd5b505af115801561219b573d6000803e3d6000fd5b50505050600082476121ad9190612b9d565b905060008860200151876121c19190612b9d565b6121cb9083612c1a565b905060008960200151826121df9190612b4e565b905080156121f1576121f187826124cf565b8951600090612201846002612b4e565b61220b9190612b4e565b9050801561222957600b54612229906001600160a01b031682612589565b60408b015160009061223c856002612b4e565b6122469190612b4e565b9050801561226457600e54612264906001600160a01b031682612589565b60608c0151600090612277866002612b4e565b6122819190612b4e565b9050801561229f57600c5461229f906001600160a01b031682612589565b60808d01516000906122b2876002612b4e565b6122bc9190612b4e565b905080156122da57600d546122da906001600160a01b031682612589565b5050505050505050505050505b505b6022805460ff191690555050565b6001600160a01b03831661235b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f7565b6001600160a01b0382166123bd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f7565b6001600160a01b038316600090815260208190526040902054818110156124355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109f7565b61243f8282612b9d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290612475908490612bb4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124c191815260200190565b60405180910390a350505050565b601a546124e79030906001600160a01b0316846117ad565b601a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561255057600080fd5b505af1158015612564573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d7b9190612cca565b804710156125d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109f7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612626576040519150601f19603f3d011682016040523d82523d6000602084013e61262b565b606091505b5050905080610fc15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109f7565b600060208083528351808285015260005b818110156126cf578581018301518582016040015282016126b3565b818111156126e1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e2b57600080fd5b8035612717816126f7565b919050565b6000806040838503121561272f57600080fd5b823561273a816126f7565b946020939093013593505050565b60008060006060848603121561275d57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561278657600080fd5b8135612791816126f7565b9392505050565b6000806000606084860312156127ad57600080fd5b83356127b8816126f7565b925060208401356127c8816126f7565b929592945050506040919091013590565b600080600080600060a086880312156127f157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b8015158114610e2b57600080fd5b803561271781612814565b60006020828403121561283f57600080fd5b813561279181612814565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561287357600080fd5b823567ffffffffffffffff8082111561288b57600080fd5b818501915085601f83011261289f57600080fd5b81356020828211156128b3576128b361284a565b8160051b604051601f19603f830116810181811086821117156128d8576128d861284a565b6040529283528183019350848101820192898411156128f657600080fd5b948201945b8386101561291b5761290c8661270c565b855294820194938201936128fb565b965061292a9050878201612822565b9450505050509250929050565b6000806040838503121561294a57600080fd5b823561273a81612814565b6000806040838503121561296857600080fd5b8235612973816126f7565b9150602083013561298381612814565b809150509250929050565b6000602082840312156129a057600080fd5b5035919050565b600080604083850312156129ba57600080fd5b82356129c5816126f7565b91506020830135612983816126f7565b600181811c908216806129e957607f821691505b60208210811415612a0a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612a96578160001904821115612a7c57612a7c612a45565b80851615612a8957918102915b93841c9390800290612a60565b509250929050565b600082612aad575060016109b8565b81612aba575060006109b8565b8160018114612ad05760028114612ada57612af6565b60019150506109b8565b60ff841115612aeb57612aeb612a45565b50506001821b6109b8565b5060208310610133831016604e8410600b8410161715612b19575081810a6109b8565b612b238383612a5b565b8060001904821115612b3757612b37612a45565b029392505050565b600061279160ff841683612a9e565b6000816000190483118215151615612b6857612b68612a45565b500290565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b600082821015612baf57612baf612a45565b500390565b60008219821115612bc757612bc7612a45565b500190565b600060208284031215612bde57600080fd5b815161279181612814565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612c1357612c13612a45565b5060010190565b600082612c3757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612c4e57600080fd5b8151612791816126f7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ca95784516001600160a01b031683529383019391830191600101612c84565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612cdf57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ef5a095061e3be3eb7e02cc7bc7d0ebfd2252cc4c0033afbcd52400d9b97ccda64736f6c63430008080033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063715018a6116101755780639b8741c0116100dc578063d798cbd211610095578063e0f3ccf51161006f578063e0f3ccf51461088e578063f2fde38b146108b5578063f3ff43da146108d5578063f887ea40146108f557600080fd5b8063d798cbd214610802578063dd62ed3e14610818578063ddf10b7f1461085e57600080fd5b80639b8741c014610748578063a457c2d714610762578063a8aa1b3114610782578063a9059cbb146107a2578063bd10e58f146107c2578063c1cf53c4146107e257600080fd5b80638da5cb5b1161012e5780638da5cb5b146106665780638ea5220f146106845780638ebfc796146106a457806395d89b41146106c457806399e45804146106d95780639af1d35a146106f957600080fd5b8063715018a6146105d057806375f0a874146105e557806380c4e1b11461060557806384ded6c71461061b57806385141a771461063b5780638a8c523c1461065157600080fd5b80633fc051ea1161021957806358d3098e116101d257806358d3098e146104fa57806359ee780e1461051a5780635d098b381461053a57806361809cf41461055a5780637037a33d1461057a57806370a082311461059a57600080fd5b80633fc051ea14610440578063435263ef14610455578063476fa4ad1461048d5780634ada218b146104ad5780634f91e48c146104ce578063589210d9146104e457600080fd5b806321fc7b351161026b57806321fc7b351461039457806323b872dd146103ae578063313ce567146103ce578063338ccd0e146103ea578063395093511461040a5780633c8463a11461042a57600080fd5b806306fdde03146102be578063095ea7b3146102e95780630ecf20d51461031957806318160ddd1461033d578063189ae5f2146103525780631f53ac021461037457600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610915565b6040516102e091906126a2565b60405180910390f35b3480156102f557600080fd5b5061030961030436600461271c565b6109a7565b60405190151581526020016102e0565b34801561032557600080fd5b5061032f601e5481565b6040519081526020016102e0565b34801561034957600080fd5b5060025461032f565b34801561035e57600080fd5b5061037261036d366004612748565b6109be565b005b34801561038057600080fd5b5061037261038f366004612774565b610b55565b3480156103a057600080fd5b50601f546103099060ff1681565b3480156103ba57600080fd5b506103096103c9366004612798565b610bd6565b3480156103da57600080fd5b50604051601281526020016102e0565b3480156103f657600080fd5b506103726104053660046127d9565b610c87565b34801561041657600080fd5b5061030961042536600461271c565b610d82565b34801561043657600080fd5b5061032f600a5481565b34801561044c57600080fd5b50610372610db9565b34801561046157600080fd5b50600e54610475906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561049957600080fd5b506103726104a836600461282d565b610e2e565b3480156104b957600080fd5b50601b5461030990600160a01b900460ff1681565b3480156104da57600080fd5b5061032f60095481565b3480156104f057600080fd5b5061032f60085481565b34801561050657600080fd5b5061037261051536600461271c565b610e7a565b34801561052657600080fd5b50610372610535366004612774565b610fc6565b34801561054657600080fd5b50610372610555366004612774565b611047565b34801561056657600080fd5b50610372610575366004612860565b6110c8565b34801561058657600080fd5b50610372610595366004612937565b611168565b3480156105a657600080fd5b5061032f6105b5366004612774565b6001600160a01b031660009081526020819052604090205490565b3480156105dc57600080fd5b5061037261122b565b3480156105f157600080fd5b50600b54610475906001600160a01b031681565b34801561061157600080fd5b5061032f60205481565b34801561062757600080fd5b50600d54610475906001600160a01b031681565b34801561064757600080fd5b5061047561dead81565b34801561065d57600080fd5b50610372611270565b34801561067257600080fd5b506005546001600160a01b0316610475565b34801561069057600080fd5b50600c54610475906001600160a01b031681565b3480156106b057600080fd5b506103726106bf366004612955565b611329565b3480156106d057600080fd5b506102d361138d565b3480156106e557600080fd5b506103726106f436600461298e565b61139c565b34801561070557600080fd5b50600f54601054601154601254601354610720949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016102e0565b34801561075457600080fd5b50601d546103099060ff1681565b34801561076e57600080fd5b5061030961077d36600461271c565b611499565b34801561078e57600080fd5b50601b54610475906001600160a01b031681565b3480156107ae57600080fd5b506103096107bd36600461271c565b611534565b3480156107ce57600080fd5b506103726107dd36600461298e565b611541565b3480156107ee57600080fd5b506103726107fd3660046127d9565b6115fd565b34801561080e57600080fd5b5061032f601c5481565b34801561082457600080fd5b5061032f6108333660046129a7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561086a57600080fd5b50610309610879366004612774565b60196020526000908152604090205460ff1681565b34801561089a57600080fd5b50601454601554601654601754601854610720949392919085565b3480156108c157600080fd5b506103726108d0366004612774565b611685565b3480156108e157600080fd5b506103726108f0366004612774565b61172c565b34801561090157600080fd5b50601a54610475906001600160a01b031681565b606060038054610924906129d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610950906129d5565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050905090565b60006109b43384846117ad565b5060015b92915050565b336109d16005546001600160a01b031690565b6001600160a01b031614610a005760405162461bcd60e51b81526004016109f790612a10565b60405180910390fd5b612710831015610a525760405162461bcd60e51b815260206004820152601f60248201527f427579206c696d69742073686f756c64206265206174206c656173742031250060448201526064016109f7565b612710821015610aa45760405162461bcd60e51b815260206004820181905260248201527f53656c6c206c696d69742073686f756c64206265206174206c6561737420312560448201526064016109f7565b612710811015610b055760405162461bcd60e51b815260206004820152602660248201527f5065722077616c6c6574206c696d69742073686f756c64206265206174206c6560448201526561737420312560d01b60648201526084016109f7565b610b116012600a612b3f565b610b1b9084612b4e565b600855610b2a6012600a612b3f565b610b349083612b4e565b600955610b436012600a612b3f565b610b4d9082612b4e565b600a55505050565b33610b686005546001600160a01b031690565b6001600160a01b031614610b8e5760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b038116610bb45760405162461bcd60e51b81526004016109f790612b6d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610be38484846118d1565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109f7565b610c7c8533610c778685612b9d565b6117ad565b506001949350505050565b33610c9a6005546001600160a01b031690565b6001600160a01b031614610cc05760405162461bcd60e51b81526004016109f790612a10565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052600f85905560108490556011839055601282905560138190556019818385610d0f888a612bb4565b610d199190612bb4565b610d239190612bb4565b610d2d9190612bb4565b1115610d7b5760405162461bcd60e51b815260206004820152601f60248201527f546f74616c206665652073686f756c64206e6f7420657863656564203235250060448201526064016109f7565b5050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109b4918590610c77908690612bb4565b33610dcc6005546001600160a01b031690565b6001600160a01b031614610df25760405162461bcd60e51b81526004016109f790612a10565b6005546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610e2b573d6000803e3d6000fd5b50565b33610e416005546001600160a01b031690565b6001600160a01b031614610e675760405162461bcd60e51b81526004016109f790612a10565b601d805460ff1916911515919091179055565b33610e8d6005546001600160a01b031690565b6001600160a01b031614610eb35760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b038216301415610f205760405162461bcd60e51b815260206004820152602b60248201527f53686f756c642070726f76696465206f7468657220455243323020636f6e747260448201526a616374206164647265737360a81b60648201526084016109f7565b816001600160a01b031663a9059cbb610f416005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190612bcc565b505050565b33610fd96005546001600160a01b031690565b6001600160a01b031614610fff5760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b0381166110255760405162461bcd60e51b81526004016109f790612b6d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3361105a6005546001600160a01b031690565b6001600160a01b0316146110805760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b0381166110a65760405162461bcd60e51b81526004016109f790612b6d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b336110db6005546001600160a01b031690565b6001600160a01b0316146111015760405162461bcd60e51b81526004016109f790612a10565b60005b8251811015610fc157816019600085848151811061112457611124612be9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061116081612bff565b915050611104565b3361117b6005546001600160a01b031690565b6001600160a01b0316146111a15760405162461bcd60e51b81526004016109f790612a10565b6111ac816001612b4e565b602055601f805460ff191683151517905561012c8111156112275760405162461bcd60e51b815260206004820152602f60248201527f5472616e736665722072617465206c696d69742073686f756c64206e6f74206560448201526e78636565642035206d696e7574657360881b60648201526084016109f7565b5050565b3361123e6005546001600160a01b031690565b6001600160a01b0316146112645760405162461bcd60e51b81526004016109f790612a10565b61126e6000611f5f565b565b336112836005546001600160a01b031690565b6001600160a01b0316146112a95760405162461bcd60e51b81526004016109f790612a10565b601b54600160a01b900460ff16156113035760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c7265616479207374617274656400000000000060448201526064016109f7565b601b805460ff60a01b1916600160a01b179055601d805460ff1916600117905543601c55565b3361133c6005546001600160a01b031690565b6001600160a01b0316146113625760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b606060048054610924906129d5565b336113af6005546001600160a01b031690565b6001600160a01b0316146113d55760405162461bcd60e51b81526004016109f790612a10565b601b54600160a01b900460ff161561142f5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c7265616479207374617274656400000000000060448201526064016109f7565b600581106114945760405162461bcd60e51b815260206004820152602c60248201527f4c61756e63682066656520626c6f636b73206e756d6265722073686f756c642060448201526b1b9bdd08195e18d95959080d60a21b60648201526084016109f7565b600655565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561151b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109f7565b61152a3385610c778685612b9d565b5060019392505050565b60006109b43384846118d1565b336115546005546001600160a01b031690565b6001600160a01b03161461157a5760405162461bcd60e51b81526004016109f790612a10565b6127108111156115e15760405162461bcd60e51b815260206004820152602c60248201527f4c697175696669636174696f6e207468726573686f6c642073686f756c64206e60448201526b6f742065786365656420312560a01b60648201526084016109f7565b6115ed6012600a612b3f565b6115f79082612b4e565b601e5550565b336116106005546001600160a01b031690565b6001600160a01b0316146116365760405162461bcd60e51b81526004016109f790612a10565b6040805160a0810182528681526020810186905290810184905260608101839052608001819052601485905560158490556016839055601782905560188190556019818385610d0f888a612bb4565b336116986005546001600160a01b031690565b6001600160a01b0316146116be5760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b0381166117235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109f7565b610e2b81611f5f565b3361173f6005546001600160a01b031690565b6001600160a01b0316146117655760405162461bcd60e51b81526004016109f790612a10565b6001600160a01b03811661178b5760405162461bcd60e51b81526004016109f790612b6d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661180f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109f7565b6001600160a01b0382166118705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109f7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116119335760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109f7565b6001600160a01b03831660009081526019602052604090205460ff1615801561197557506001600160a01b03821660009081526019602052604090205460ff16155b156119d357601b54600160a01b900460ff166119d35760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420737461727465642079657400000000000060448201526064016109f7565b601b546001600160a01b038481169116148015611a0957506001600160a01b03821660009081526019602052604090205460ff16155b8015611a18575060225460ff16155b15611adb57600854811115611a645760405162461bcd60e51b8152602060048201526012602482015271109d5e481b1a5b5a5d08195e18d95959195960721b60448201526064016109f7565b600a5481611a87846001600160a01b031660009081526020819052604090205490565b611a919190612bb4565b1115611adb5760405162461bcd60e51b815260206004820152601960248201527814195c881dd85b1b195d081b1a5b5a5d08195e18d959591959603a1b60448201526064016109f7565b601b546001600160a01b03848116911614801590611b1257506001600160a01b03821660009081526019602052604090205460ff16155b8015611b3757506001600160a01b03831660009081526019602052604090205460ff16155b8015611b46575060225460ff16155b15611cbe57600954811115611b935760405162461bcd60e51b815260206004820152601360248201527214d95b1b081b1a5b5a5d08195e18d959591959606a1b60448201526064016109f7565b601b546001600160a01b03838116911614611c1f57600a5481611bcb846001600160a01b031660009081526020819052604090205490565b611bd59190612bb4565b1115611c1f5760405162461bcd60e51b815260206004820152601960248201527814195c881dd85b1b195d081b1a5b5a5d08195e18d959591959603a1b60448201526064016109f7565b601f5460ff1615611cbe576001600160a01b038316600090815260216020526040812054611c4d9042612b9d565b9050602054811015611ca15760405162461bcd60e51b815260206004820152601c60248201527f5472616e736665722072617465206c696d69742065786365656465640000000060448201526064016109f7565b506001600160a01b03831660009081526021602052604090204290555b6000806000611cf56040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03871660009081526019602052604081205460ff16158015611d3757506001600160a01b03871660009081526019602052604090205460ff16155b8015611d515750600654601c54611d4e9190612bb4565b43105b60225490915060ff1680611d7d57506001600160a01b03881660009081526019602052604090205460ff165b80611da057506001600160a01b03871660009081526019602052604090205460ff165b15611dae5760009250611ec6565b601b546001600160a01b038881169116148015611dc9575080155b15611e4357601854601754601654601454601554611de79190612bb4565b611df19190612bb4565b611dfb9190612bb4565b611e059190612bb4565b6040805160a0810182526014548152601554602082015260165491810191909152601754606082015260185460808201529095508594509150611ec6565b80611ebd57601354601254601154600f54601054611e619190612bb4565b611e6b9190612bb4565b611e759190612bb4565b611e7f9190612bb4565b6040805160a081018252600f548152601054602082015260115491810191909152601254606082015260135460808201529095508594509150611ec6565b60075494508493505b6064611ed28588612b4e565b611edc9190612c1a565b601d5490935060ff168015611eff5750601b546001600160a01b03898116911614155b15611f0e57611f0e8583611fb1565b611f228888611f1d868a612b9d565b6122f7565b8215611f55578415611f555760006064611f3c8789612b4e565b611f469190612c1a565b9050611f538930836122f7565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60225460ff16611227576022805460ff1916600117905581611fd2576122e9565b30600090815260208190526040902054601e5481106122e7576001601e541115611ffb5750601e545b6000612008846002612b4e565b905060008184602001518461201d9190612b4e565b6120279190612c1a565b905060006120358285612b9d565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061206f5761206f612be9565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120c357600080fd5b505afa1580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fb9190612c3c565b8160018151811061210e5761210e612be9565b6001600160a01b039283166020918202929092010152601a5461213491309116856117ad565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061216d908690600090869030904290600401612c59565b600060405180830381600087803b15801561218757600080fd5b505af115801561219b573d6000803e3d6000fd5b50505050600082476121ad9190612b9d565b905060008860200151876121c19190612b9d565b6121cb9083612c1a565b905060008960200151826121df9190612b4e565b905080156121f1576121f187826124cf565b8951600090612201846002612b4e565b61220b9190612b4e565b9050801561222957600b54612229906001600160a01b031682612589565b60408b015160009061223c856002612b4e565b6122469190612b4e565b9050801561226457600e54612264906001600160a01b031682612589565b60608c0151600090612277866002612b4e565b6122819190612b4e565b9050801561229f57600c5461229f906001600160a01b031682612589565b60808d01516000906122b2876002612b4e565b6122bc9190612b4e565b905080156122da57600d546122da906001600160a01b031682612589565b5050505050505050505050505b505b6022805460ff191690555050565b6001600160a01b03831661235b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f7565b6001600160a01b0382166123bd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f7565b6001600160a01b038316600090815260208190526040902054818110156124355760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109f7565b61243f8282612b9d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290612475908490612bb4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124c191815260200190565b60405180910390a350505050565b601a546124e79030906001600160a01b0316846117ad565b601a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561255057600080fd5b505af1158015612564573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d7b9190612cca565b804710156125d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109f7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612626576040519150601f19603f3d011682016040523d82523d6000602084013e61262b565b606091505b5050905080610fc15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109f7565b600060208083528351808285015260005b818110156126cf578581018301518582016040015282016126b3565b818111156126e1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e2b57600080fd5b8035612717816126f7565b919050565b6000806040838503121561272f57600080fd5b823561273a816126f7565b946020939093013593505050565b60008060006060848603121561275d57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561278657600080fd5b8135612791816126f7565b9392505050565b6000806000606084860312156127ad57600080fd5b83356127b8816126f7565b925060208401356127c8816126f7565b929592945050506040919091013590565b600080600080600060a086880312156127f157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b8015158114610e2b57600080fd5b803561271781612814565b60006020828403121561283f57600080fd5b813561279181612814565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561287357600080fd5b823567ffffffffffffffff8082111561288b57600080fd5b818501915085601f83011261289f57600080fd5b81356020828211156128b3576128b361284a565b8160051b604051601f19603f830116810181811086821117156128d8576128d861284a565b6040529283528183019350848101820192898411156128f657600080fd5b948201945b8386101561291b5761290c8661270c565b855294820194938201936128fb565b965061292a9050878201612822565b9450505050509250929050565b6000806040838503121561294a57600080fd5b823561273a81612814565b6000806040838503121561296857600080fd5b8235612973816126f7565b9150602083013561298381612814565b809150509250929050565b6000602082840312156129a057600080fd5b5035919050565b600080604083850312156129ba57600080fd5b82356129c5816126f7565b91506020830135612983816126f7565b600181811c908216806129e957607f821691505b60208210811415612a0a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612a96578160001904821115612a7c57612a7c612a45565b80851615612a8957918102915b93841c9390800290612a60565b509250929050565b600082612aad575060016109b8565b81612aba575060006109b8565b8160018114612ad05760028114612ada57612af6565b60019150506109b8565b60ff841115612aeb57612aeb612a45565b50506001821b6109b8565b5060208310610133831016604e8410600b8410161715612b19575081810a6109b8565b612b238383612a5b565b8060001904821115612b3757612b37612a45565b029392505050565b600061279160ff841683612a9e565b6000816000190483118215151615612b6857612b68612a45565b500290565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b600082821015612baf57612baf612a45565b500390565b60008219821115612bc757612bc7612a45565b500190565b600060208284031215612bde57600080fd5b815161279181612814565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612c1357612c13612a45565b5060010190565b600082612c3757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612c4e57600080fd5b8151612791816126f7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ca95784516001600160a01b031683529383019391830191600101612c84565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612cdf57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ef5a095061e3be3eb7e02cc7bc7d0ebfd2252cc4c0033afbcd52400d9b97ccda64736f6c63430008080033

Deployed Bytecode Sourcemap

7254:12653:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3002:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8859:184;;;;;;;;;;-1:-1:-1;8859:184:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;8859:184:0;1211:187:1;9964:54:0;;;;;;;;;;;;;;;;;;;1549:25:1;;;1537:2;1522:18;9964:54:0;1403:177:1;3323:108:0;;;;;;;;;;-1:-1:-1;3411:12:0;;3323:108;;16369:470;;;;;;;;;;-1:-1:-1;16369:470:0;;;;;:::i;:::-;;:::i;:::-;;18439:169;;;;;;;;;;-1:-1:-1;18439:169:0;;;;;:::i;:::-;;:::i;10027:43::-;;;;;;;;;;-1:-1:-1;10027:43:0;;;;;;;;9051:481;;;;;;;;;;-1:-1:-1;9051:481:0;;;;;:::i;:::-;;:::i;3222:93::-;;;;;;;;;;-1:-1:-1;3222:93:0;;3305:2;2761:36:1;;2749:2;2734:18;3222:93:0;2619:184:1;16847:415:0;;;;;;;;;;-1:-1:-1;16847:415:0;;;;;:::i;:::-;;:::i;4677:286::-;;;;;;;;;;-1:-1:-1;4677:286:0;;;;;:::i;:::-;;:::i;7511:43::-;;;;;;;;;;;;;;;;19447:109;;;;;;;;;;;;;:::i;7798:75::-;;;;;;;;;;-1:-1:-1;7798:75:0;;;;-1:-1:-1;;;;;7798:75:0;;;;;;-1:-1:-1;;;;;3431:32:1;;;3413:51;;3401:2;3386:18;7798:75:0;3267:203:1;18795:107:0;;;;;;;;;;-1:-1:-1;18795:107:0;;;;;:::i;:::-;;:::i;9835:34::-;;;;;;;;;;-1:-1:-1;9835:34:0;;;;-1:-1:-1;;;9835:34:0;;;;;;7463:41;;;;;;;;;;;;;;;;7416:40;;;;;;;;;;;;;;;;19564:303;;;;;;;;;;-1:-1:-1;19564:303:0;;;;;:::i;:::-;;:::i;18616:171::-;;;;;;;;;;-1:-1:-1;18616:171:0;;;;;:::i;:::-;;:::i;18061:181::-;;;;;;;;;;-1:-1:-1;18061:181:0;;;;;:::i;:::-;;:::i;17819:234::-;;;;;;;;;;-1:-1:-1;17819:234:0;;;;;:::i;:::-;;:::i;19184:255::-;;;;;;;;;;-1:-1:-1;19184:255:0;;;;;:::i;:::-;;:::i;3439:143::-;;;;;;;;;;-1:-1:-1;3439:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;3556:18:0;3529:7;3556:18;;;;;;;;;;;;3439:143;1021:94;;;;;;;;;;;;;:::i;7563:75::-;;;;;;;;;;-1:-1:-1;7563:75:0;;;;-1:-1:-1;;;;;7563:75:0;;;10077:44;;;;;;;;;;;;;;;;7721:70;;;;;;;;;;-1:-1:-1;7721:70:0;;;;-1:-1:-1;;;;;7721:70:0;;;9738:88;;;;;;;;;;;;9784:42;9738:88;;16131:230;;;;;;;;;;;;;:::i;800:87::-;;;;;;;;;;-1:-1:-1;873:6:0;;-1:-1:-1;;;;;873:6:0;800:87;;7645:69;;;;;;;;;;-1:-1:-1;7645:69:0;;;;-1:-1:-1;;;;;7645:69:0;;;17693:118;;;;;;;;;;-1:-1:-1;17693:118:0;;;;;:::i;:::-;;:::i;3110:104::-;;;;;;;;;;;;;:::i;15865:258::-;;;;;;;;;;-1:-1:-1;15865:258:0;;;;;:::i;:::-;;:::i;8039:38::-;;;;;;;;;;-1:-1:-1;8039:38:0;;;;;;;;;;;;;;;;;;;;;;6450:25:1;;;6506:2;6491:18;;6484:34;;;;6534:18;;;6527:34;;;;6592:2;6577:18;;6570:34;6635:3;6620:19;;6613:35;6437:3;6422:19;8039:38:0;6191:463:1;9917:40:0;;;;;;;;;;-1:-1:-1;9917:40:0;;;;;;;;4971:435;;;;;;;;;;-1:-1:-1;4971:435:0;;;;;:::i;:::-;;:::i;8214:19::-;;;;;;;;;;-1:-1:-1;8214:19:0;;;;-1:-1:-1;;;;;8214:19:0;;;9540:190;;;;;;;;;;-1:-1:-1;9540:190:0;;;;;:::i;:::-;;:::i;18910:266::-;;;;;;;;;;-1:-1:-1;18910:266:0;;;;;:::i;:::-;;:::i;17270:415::-;;;;;;;;;;-1:-1:-1;17270:415:0;;;;;:::i;:::-;;:::i;9876:32::-;;;;;;;;;;;;;;;;3796:176;;;;;;;;;;-1:-1:-1;3796:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;3937:18:0;;;3910:7;3937:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3796:176;8135:42;;;;;;;;;;-1:-1:-1;8135:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8084;;;;;;;;;;-1:-1:-1;8084:42:0;;;;;;;;;;;;;;;;;;1123:229;;;;;;;;;;-1:-1:-1;1123:229:0;;;;;:::i;:::-;;:::i;18250:181::-;;;;;;;;;;-1:-1:-1;18250:181:0;;;;;:::i;:::-;;:::i;8186:21::-;;;;;;;;;;-1:-1:-1;8186:21:0;;;;-1:-1:-1;;;;;8186:21:0;;;3002:100;3056:13;3089:5;3082:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3002:100;:::o;8859:184::-;8959:4;8976:37;8985:10;8997:7;9006:6;8976:8;:37::i;:::-;-1:-1:-1;9031:4:0;8859:184;;;;;:::o;16369:470::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;;;;;;;;;16510:3:::1;16503;:10;;16495:54;;;::::0;-1:-1:-1;;;16495:54:0;;8223:2:1;16495:54:0::1;::::0;::::1;8205:21:1::0;8262:2;8242:18;;;8235:30;8301:33;8281:18;;;8274:61;8352:18;;16495:54:0::1;8021:355:1::0;16495:54:0::1;16576:3;16568:4;:11;;16560:56;;;::::0;-1:-1:-1;;;16560:56:0;;8583:2:1;16560:56:0::1;::::0;::::1;8565:21:1::0;;;8602:18;;;8595:30;8661:34;8641:18;;;8634:62;8713:18;;16560:56:0::1;8381:356:1::0;16560:56:0::1;16645:3;16635:6;:13;;16627:64;;;::::0;-1:-1:-1;;;16627:64:0;;8944:2:1;16627:64:0::1;::::0;::::1;8926:21:1::0;8983:2;8963:18;;;8956:30;9022:34;9002:18;;;8995:62;-1:-1:-1;;;9073:18:1;;;9066:36;9119:19;;16627:64:0::1;8742:402:1::0;16627:64:0::1;16719:16;3305:2:::0;16719::::1;:16;:::i;:::-;16713:22;::::0;:3;:22:::1;:::i;:::-;16702:8;:33:::0;16765:16:::1;3305:2:::0;16765::::1;:16;:::i;:::-;16758:23;::::0;:4;:23:::1;:::i;:::-;16746:9;:35:::0;16815:16:::1;3305:2:::0;16815::::1;:16;:::i;:::-;16806:25;::::0;:6;:25:::1;:::i;:::-;16792:11;:39:::0;-1:-1:-1;;;16369:470:0:o;18439:169::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18518:23:0;::::1;18510:58;;;;-1:-1:-1::0;;;18510:58:0::1;;;;;;;:::i;:::-;18579:9;:21:::0;;-1:-1:-1;;;;;;18579:21:0::1;-1:-1:-1::0;;;;;18579:21:0;;;::::1;::::0;;;::::1;::::0;;18439:169::o;9051:481::-;9183:4;9200:36;9210:6;9218:9;9229:6;9200:9;:36::i;:::-;-1:-1:-1;;;;;9276:19:0;;9249:24;9276:19;;;:11;:19;;;;;;;;9296:10;9276:31;;;;;;;;9340:26;;;;9318:116;;;;-1:-1:-1;;;9318:116:0;;11390:2:1;9318:116:0;;;11372:21:1;11429:2;11409:18;;;11402:30;11468:34;11448:18;;;11441:62;-1:-1:-1;;;11519:18:1;;;11512:38;11567:19;;9318:116:0;11188:404:1;9318:116:0;9445:55;9454:6;9462:10;9474:25;9493:6;9474:16;:25;:::i;:::-;9445:8;:55::i;:::-;-1:-1:-1;9520:4:0;;9051:481;-1:-1:-1;;;;9051:481:0:o;16847:415::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;17050:53:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;17043:4:::1;:60:::0;;;;;;;;;;;;;;;;;;;17193:2:::1;17097:5:::0;17091:4;17079:10;17137:23:::1;17067:10:::0;17055;17137:23:::1;:::i;:::-;:36;;;;:::i;:::-;:43;;;;:::i;:::-;:51;;;;:::i;:::-;17136:59;;17114:140;;;::::0;-1:-1:-1;;;17114:140:0;;12062:2:1;17114:140:0::1;::::0;::::1;12044:21:1::0;12101:2;12081:18;;;12074:30;12140:33;12120:18;;;12113:61;12191:18;;17114:140:0::1;11860:355:1::0;17114:140:0::1;16847:415:::0;;;;;:::o;4677:286::-;4830:10;4790:4;4877:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4877:32:0;;;;;;;;;;4790:4;;4807:126;;4855:7;;4877:45;;4912:10;;4877:45;:::i;19447:109::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;873:6;;19500:48:::1;::::0;-1:-1:-1;;;;;873:6:0;;;;19526:21:::1;19500:48:::0;::::1;;;::::0;::::1;::::0;;;19526:21;873:6;19500:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19447:109::o:0;18795:107::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;18866:20:::1;:28:::0;;-1:-1:-1;;18866:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18795:107::o;19564:303::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19702:29:0;::::1;19726:4;19702:29;;19680:122;;;::::0;-1:-1:-1;;;19680:122:0;;12422:2:1;19680:122:0::1;::::0;::::1;12404:21:1::0;12461:2;12441:18;;;12434:30;12500:34;12480:18;;;12473:62;-1:-1:-1;;;12551:18:1;;;12544:41;12602:19;;19680:122:0::1;12220:407:1::0;19680:122:0::1;19820:12;-1:-1:-1::0;;;;;19813:29:0::1;;19843:7;873:6:::0;;-1:-1:-1;;;;;873:6:0;;800:87;19843:7:::1;19813:46;::::0;-1:-1:-1;;;;;;19813:46:0::1;::::0;;;;;;-1:-1:-1;;;;;12824:32:1;;;19813:46:0::1;::::0;::::1;12806:51:1::0;12873:18;;;12866:34;;;12779:18;;19813:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19564:303:::0;;:::o;18616:171::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18696:23:0;::::1;18688:58;;;;-1:-1:-1::0;;;18688:58:0::1;;;;;;;:::i;:::-;18757:10;:22:::0;;-1:-1:-1;;;;;;18757:22:0::1;-1:-1:-1::0;;;;;18757:22:0;;;::::1;::::0;;;::::1;::::0;;18616:171::o;18061:181::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18146:23:0;::::1;18138:58;;;;-1:-1:-1::0;;;18138:58:0::1;;;;;;;:::i;:::-;18207:15;:27:::0;;-1:-1:-1;;;;;;18207:27:0::1;-1:-1:-1::0;;;;;18207:27:0;;;::::1;::::0;;;::::1;::::0;;18061:181::o;17819:234::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;17943:9:::1;17938:108;17962:10;:17;17958:1;:21;17938:108;;;18029:5;18001:10;:25;18012:10;18023:1;18012:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18001:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18001:25:0;:33;;-1:-1:-1;;18001:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17981:3;::::1;::::0;::::1;:::i;:::-;;;;17938:108;;19184:255:::0;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;19290:16:::1;:4:::0;19297:9:::1;19290:16;:::i;:::-;19270:17;:36:::0;19317:24:::1;:32:::0;;-1:-1:-1;;19317:32:0::1;::::0;::::1;;;::::0;;19376:3:::1;19368:11:::0;::::1;;19360:71;;;::::0;-1:-1:-1;;;19360:71:0;;13635:2:1;19360:71:0::1;::::0;::::1;13617:21:1::0;13674:2;13654:18;;;13647:30;13713:34;13693:18;;;13686:62;-1:-1:-1;;;13764:18:1;;;13757:45;13819:19;;19360:71:0::1;13433:411:1::0;19360:71:0::1;19184:255:::0;;:::o;1021:94::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;1086:21:::1;1104:1;1086:9;:21::i;:::-;1021:94::o:0;16131:230::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;16195:14:::1;::::0;-1:-1:-1;;;16195:14:0;::::1;;;16194:15;16186:54;;;::::0;-1:-1:-1;;;16186:54:0;;14051:2:1;16186:54:0::1;::::0;::::1;14033:21:1::0;14090:2;14070:18;;;14063:30;14129:28;14109:18;;;14102:56;14175:18;;16186:54:0::1;13849:350:1::0;16186:54:0::1;16251:14;:21:::0;;-1:-1:-1;;;;16251:21:0::1;-1:-1:-1::0;;;16251:21:0::1;::::0;;16283:20:::1;:27:::0;;-1:-1:-1;;16283:27:0::1;16268:4;16283:27;::::0;;16341:12:::1;16321:17;:32:::0;16131:230::o;17693:118::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17775:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;17775:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17693:118::o;3110:104::-;3166:13;3199:7;3192:14;;;;;:::i;15865:258::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;15955:14:::1;::::0;-1:-1:-1;;;15955:14:0;::::1;;;15954:15;15946:54;;;::::0;-1:-1:-1;;;15946:54:0;;14051:2:1;15946:54:0::1;::::0;::::1;14033:21:1::0;14090:2;14070:18;;;14063:30;14129:28;14109:18;;;14102:56;14175:18;;15946:54:0::1;13849:350:1::0;15946:54:0::1;16029:1;16019:7;:11;16011:68;;;::::0;-1:-1:-1;;;16011:68:0;;14406:2:1;16011:68:0::1;::::0;::::1;14388:21:1::0;14445:2;14425:18;;;14418:30;14484:34;14464:18;;;14457:62;-1:-1:-1;;;14535:18:1;;;14528:42;14587:19;;16011:68:0::1;14204:408:1::0;16011:68:0::1;16090:15;:25:::0;15865:258::o;4971:435::-;5145:10;5089:4;5133:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5133:32:0;;;;;;;;;;5198:35;;;;5176:122;;;;-1:-1:-1;;;5176:122:0;;14819:2:1;5176:122:0;;;14801:21:1;14858:2;14838:18;;;14831:30;14897:34;14877:18;;;14870:62;-1:-1:-1;;;14948:18:1;;;14941:35;14993:19;;5176:122:0;14617:401:1;5176:122:0;5309:65;5318:10;5330:7;5339:34;5358:15;5339:16;:34;:::i;5309:65::-;-1:-1:-1;5394:4:0;;4971:435;-1:-1:-1;;;4971:435:0:o;9540:190::-;9643:4;9660:40;9670:10;9682:9;9693:6;9660:9;:40::i;18910:266::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;19029:3:::1;19016:9;:16;;18994:110;;;::::0;-1:-1:-1;;;18994:110:0;;15225:2:1;18994:110:0::1;::::0;::::1;15207:21:1::0;15264:2;15244:18;;;15237:30;15303:34;15283:18;;;15276:62;-1:-1:-1;;;15354:18:1;;;15347:42;15406:19;;18994:110:0::1;15023:408:1::0;18994:110:0::1;19152:16;3305:2:::0;19152::::1;:16;:::i;:::-;19140:28;::::0;:9;:28:::1;:::i;:::-;19115:22;:53:::0;-1:-1:-1;18910:266:0:o;17270:415::-;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;17473:53:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;17462:8:::1;:64:::0;;;;;;;;;;;;;;;;;;;17616:2:::1;17520:5:::0;17514:4;17502:10;17560:23:::1;17490:10:::0;17478;17560:23:::1;:::i;1123:229::-:0;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1226:22:0;::::1;1204:110;;;::::0;-1:-1:-1;;;1204:110:0;;15638:2:1;1204:110:0::1;::::0;::::1;15620:21:1::0;15677:2;15657:18;;;15650:30;15716:34;15696:18;;;15689:62;-1:-1:-1;;;15767:18:1;;;15760:36;15813:19;;1204:110:0::1;15436:402:1::0;1204:110:0::1;1325:19;1335:8;1325:9;:19::i;18250:181::-:0;946:10;935:7;873:6;;-1:-1:-1;;;;;873:6:0;;800:87;935:7;-1:-1:-1;;;;;935:21:0;;927:66;;;;-1:-1:-1;;;927:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18335:23:0;::::1;18327:58;;;;-1:-1:-1::0;;;18327:58:0::1;;;;;;;:::i;:::-;18396:15;:27:::0;;-1:-1:-1;;;;;;18396:27:0::1;-1:-1:-1::0;;;;;18396:27:0;;;::::1;::::0;;;::::1;::::0;;18250:181::o;6037:380::-;-1:-1:-1;;;;;6173:19:0;;6165:68;;;;-1:-1:-1;;;6165:68:0;;16045:2:1;6165:68:0;;;16027:21:1;16084:2;16064:18;;;16057:30;16123:34;16103:18;;;16096:62;-1:-1:-1;;;16174:18:1;;;16167:34;16218:19;;6165:68:0;15843:400:1;6165:68:0;-1:-1:-1;;;;;6252:21:0;;6244:68;;;;-1:-1:-1;;;6244:68:0;;16450:2:1;6244:68:0;;;16432:21:1;16489:2;16469:18;;;16462:30;16528:34;16508:18;;;16501:62;-1:-1:-1;;;16579:18:1;;;16572:32;16621:19;;6244:68:0;16248:398:1;6244:68:0;-1:-1:-1;;;;;6325:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6377:32;;1549:25:1;;;6377:32:0;;1522:18:1;6377:32:0;;;;;;;6037:380;;;:::o;10188:3004::-;10338:1;10329:6;:10;10321:64;;;;-1:-1:-1;;;10321:64:0;;16853:2:1;10321:64:0;;;16835:21:1;16892:2;16872:18;;;16865:30;16931:34;16911:18;;;16904:62;-1:-1:-1;;;16982:18:1;;;16975:39;17031:19;;10321:64:0;16651:405:1;10321:64:0;-1:-1:-1;;;;;10401:18:0;;;;;;:10;:18;;;;;;;;10400:19;:45;;;;-1:-1:-1;;;;;;10424:21:0;;;;;;:10;:21;;;;;;;;10423:22;10400:45;10396:131;;;10470:14;;-1:-1:-1;;;10470:14:0;;;;10462:53;;;;-1:-1:-1;;;10462:53:0;;17263:2:1;10462:53:0;;;17245:21:1;17302:2;17282:18;;;17275:30;17341:28;17321:18;;;17314:56;17387:18;;10462:53:0;17061:350:1;10462:53:0;10551:4;;-1:-1:-1;;;;;10541:14:0;;;10551:4;;10541:14;:40;;;;-1:-1:-1;;;;;;10560:21:0;;;;;;:10;:21;;;;;;;;10559:22;10541:40;:59;;;;-1:-1:-1;10586:14:0;;;;10585:15;10541:59;10537:287;;;10635:8;;10625:6;:18;;10617:49;;;;-1:-1:-1;;;10617:49:0;;17618:2:1;10617:49:0;;;17600:21:1;17657:2;17637:18;;;17630:30;-1:-1:-1;;;17676:18:1;;;17669:48;17734:18;;10617:49:0;17416:342:1;10617:49:0;10740:11;;10730:6;10707:20;10717:9;-1:-1:-1;;;;;3556:18:0;3529:7;3556:18;;;;;;;;;;;;3439:143;10707:20;:29;;;;:::i;:::-;:44;;10681:131;;;;-1:-1:-1;;;10681:131:0;;17965:2:1;10681:131:0;;;17947:21:1;18004:2;17984:18;;;17977:30;-1:-1:-1;;;18023:18:1;;;18016:55;18088:18;;10681:131:0;17763:349:1;10681:131:0;10862:4;;-1:-1:-1;;;;;10852:14:0;;;10862:4;;10852:14;;;;:53;;-1:-1:-1;;;;;;10884:21:0;;;;;;:10;:21;;;;;;;;10883:22;10852:53;:89;;;;-1:-1:-1;;;;;;10923:18:0;;;;;;:10;:18;;;;;;;;10922:19;10852:89;:121;;;;-1:-1:-1;10959:14:0;;;;10958:15;10852:121;10834:787;;;11018:9;;11008:6;:19;;11000:51;;;;-1:-1:-1;;;11000:51:0;;18319:2:1;11000:51:0;;;18301:21:1;18358:2;18338:18;;;18331:30;-1:-1:-1;;;18377:18:1;;;18370:49;18436:18;;11000:51:0;18117:343:1;11000:51:0;11083:4;;-1:-1:-1;;;;;11070:17:0;;;11083:4;;11070:17;11066:201;;11171:11;;11161:6;11138:20;11148:9;-1:-1:-1;;;;;3556:18:0;3529:7;3556:18;;;;;;;;;;;;3439:143;11138:20;:29;;;;:::i;:::-;:44;;11108:143;;;;-1:-1:-1;;;11108:143:0;;17965:2:1;11108:143:0;;;17947:21:1;18004:2;17984:18;;;17977:30;-1:-1:-1;;;18023:18:1;;;18016:55;18088:18;;11108:143:0;17763:349:1;11108:143:0;11285:24;;;;11281:329;;;-1:-1:-1;;;;;11364:23:0;;11330:13;11364:23;;;:15;:23;;;;;;11346:41;;:15;:41;:::i;:::-;11330:57;;11445:17;;11436:5;:26;;11406:128;;;;-1:-1:-1;;;11406:128:0;;18667:2:1;11406:128:0;;;18649:21:1;18706:2;18686:18;;;18679:30;18745;18725:18;;;18718:58;18793:18;;11406:128:0;18465:352:1;11406:128:0;-1:-1:-1;;;;;;11553:23:0;;;;;;:15;:23;;;;;11579:15;11553:41;;11281:329;11631:24;11666:16;11693:11;11715:23;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11715:23:0;-1:-1:-1;;;;;11770:18:0;;11749:17;11770:18;;;:10;:18;;;;;;;;11769:19;:58;;;;-1:-1:-1;;;;;;11806:21:0;;;;;;:10;:21;;;;;;;;11805:22;11769:58;:125;;;;;11879:15;;11859:17;;:35;;;;:::i;:::-;11844:12;:50;11769:125;11909:14;;11749:145;;-1:-1:-1;11909:14:0;;;:36;;-1:-1:-1;;;;;;11927:18:0;;;;;;:10;:18;;;;;;;;11909:36;:61;;;-1:-1:-1;;;;;;11949:21:0;;;;;;:10;:21;;;;;;;;11909:61;11905:842;;;11991:1;11985:7;;11905:842;;;12025:4;;-1:-1:-1;;;;;12012:17:0;;;12025:4;;12012:17;:34;;;;;12034:12;12033:13;12012:34;12008:739;;;12245:13;;12213:12;;12175:18;;12245:8;12137:18;12099;;:56;;12137:18;12099:56;:::i;:::-;:94;;;;:::i;:::-;:126;;;;:::i;:::-;:159;;;;:::i;:::-;12315:22;;;;;;;;12329:8;12315:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12063:195;;-1:-1:-1;12063:195:0;;-1:-1:-1;12315:22:0;-1:-1:-1;12008:739:0;;;12360:12;12355:392;;12555:9;;12527:8;;12493:14;;12555:4;12459:14;12425;;:48;;12459:14;12425:48;:::i;:::-;:82;;;;:::i;:::-;:110;;;;:::i;:::-;:139;;;;:::i;:::-;12621:18;;;;;;;;12635:4;12621:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12389:175;;-1:-1:-1;12389:175:0;;-1:-1:-1;12621:18:0;-1:-1:-1;12355:392:0;;;12691:9;;;-1:-1:-1;12691:9:0;;-1:-1:-1;12355:392:0;12785:3;12764:17;12773:8;12764:6;:17;:::i;:::-;12763:25;;;;:::i;:::-;12803:20;;12757:31;;-1:-1:-1;12803:20:0;;:38;;;;-1:-1:-1;12837:4:0;;-1:-1:-1;;;;;12827:14:0;;;12837:4;;12827:14;;12803:38;12799:95;;;12856:38;12864:16;12882:11;12856:7;:38::i;:::-;12905:48;12921:6;12929:9;12940:12;12949:3;12940:6;:12;:::i;:::-;12905:15;:48::i;:::-;12968:7;;12964:221;;12996:20;;12992:182;;13037:17;13087:3;13058:25;13067:16;13058:6;:25;:::i;:::-;13057:33;;;;:::i;:::-;13037:53;;13109:49;13125:6;13141:4;13148:9;13109:15;:49::i;:::-;13018:156;12992:182;10310:2882;;;;;10188:3004;;;:::o;1360:173::-;1435:6;;;-1:-1:-1;;;;;1452:17:0;;;-1:-1:-1;;;;;;1452:17:0;;;;;;;1485:40;;1435:6;;;1452:17;1435:6;;1485:40;;1416:16;;1485:40;1405:128;1360:173;:::o;13417:2087::-;13285:14;;;;13280:122;;13316:14;:21;;-1:-1:-1;;13316:21:0;13333:4;13316:21;;;13544;13540:60:::1;;13582:7;;13540:60;13646:4;13610:15;3556:18:::0;;;;;;;;;;;13678:22:::1;::::0;13667:33;::::1;13663:1834;;13746:1;13721:22;;:26;13717:99;;;-1:-1:-1::0;13778:22:0::1;::::0;13717:99:::1;13832:9;13844:20;:16:::0;13863:1:::1;13844:20;:::i;:::-;13832:32;;13879:21;13936:1;13914:8;:18;;;13904:7;:28;;;;:::i;:::-;13903:34;;;;:::i;:::-;13879:58:::0;-1:-1:-1;13952:18:0::1;13973:23;13879:58:::0;13973:7;:23:::1;:::i;:::-;14098:16;::::0;;14112:1:::1;14098:16:::0;;;;;::::1;::::0;;13952:44;;-1:-1:-1;14036:21:0::1;::::0;14011:22:::1;::::0;14098:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14098:16:0::1;14074:40;;14147:4;14129;14134:1;14129:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14129:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14177:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;14177:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;14129:7;;14177:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14167:4;14172:1;14167:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14167:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14237:6:::1;::::0;14205:52:::1;::::0;14222:4:::1;::::0;14237:6:::1;14246:10:::0;14205:8:::1;:52::i;:::-;14272:6;::::0;:210:::1;::::0;-1:-1:-1;;;14272:210:0;;-1:-1:-1;;;;;14272:6:0;;::::1;::::0;:57:::1;::::0;:210:::1;::::0;14348:10;;14272:6:::1;::::0;14397:4;;14428::::1;::::0;14452:15:::1;::::0;14272:210:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14499:13;14539:14;14515:21;:38;;;;:::i;:::-;14499:54;;14568:19;14603:8;:18;;;14599:1;:22;;;;:::i;:::-;14590:32;::::0;:5;:32:::1;:::i;:::-;14568:54;;14637:20;14674:8;:18;;;14660:11;:32;;;;:::i;:::-;14637:55:::0;-1:-1:-1;14711:16:0;;14707:98:::1;;14748:41;14761:13;14776:12;14748;:41::i;:::-;14857:18:::0;;14819:17:::1;::::0;14839:15:::1;:11:::0;14853:1:::1;14839:15;:::i;:::-;:36;;;;:::i;:::-;14819:56:::0;-1:-1:-1;14894:13:0;;14890:99:::1;;14936:15;::::0;14928:45:::1;::::0;-1:-1:-1;;;;;14936:15:0::1;14963:9:::0;14928:34:::1;:45::i;:::-;15041:18;::::0;::::1;::::0;15003:17:::1;::::0;15023:15:::1;:11:::0;15037:1:::1;15023:15;:::i;:::-;:36;;;;:::i;:::-;15003:56:::0;-1:-1:-1;15078:13:0;;15074:99:::1;;15120:15;::::0;15112:45:::1;::::0;-1:-1:-1;;;;;15120:15:0::1;15147:9:::0;15112:34:::1;:45::i;:::-;15219:12;::::0;::::1;::::0;15187:11:::1;::::0;15201:15:::1;:11:::0;15215:1:::1;15201:15;:::i;:::-;:30;;;;:::i;:::-;15187:44:::0;-1:-1:-1;15250:7:0;;15246:81:::1;;15286:9;::::0;15278:33:::1;::::0;-1:-1:-1;;;;;15286:9:0::1;15307:3:::0;15278:28:::1;:33::i;:::-;15374:13;::::0;::::1;::::0;15341:12:::1;::::0;15356:15:::1;:11:::0;15370:1:::1;15356:15;:::i;:::-;:31;;;;:::i;:::-;15341:46:::0;-1:-1:-1;15406:8:0;;15402:84:::1;;15443:10;::::0;15435:35:::1;::::0;-1:-1:-1;;;;;15443:10:0::1;15465:4:::0;15435:29:::1;:35::i;:::-;13702:1795;;;;;;;;;;;;13663:1834;13529:1975;13352:1;13368:14:::0;:22;;-1:-1:-1;;13368:22:0;;;13417:2087;;:::o;5414:615::-;-1:-1:-1;;;;;5554:20:0;;5546:70;;;;-1:-1:-1;;;5546:70:0;;20487:2:1;5546:70:0;;;20469:21:1;20526:2;20506:18;;;20499:30;20565:34;20545:18;;;20538:62;-1:-1:-1;;;20616:18:1;;;20609:35;20661:19;;5546:70:0;20285:401:1;5546:70:0;-1:-1:-1;;;;;5635:23:0;;5627:71;;;;-1:-1:-1;;;5627:71:0;;20893:2:1;5627:71:0;;;20875:21:1;20932:2;20912:18;;;20905:30;20971:34;20951:18;;;20944:62;-1:-1:-1;;;21022:18:1;;;21015:33;21065:19;;5627:71:0;20691:399:1;5627:71:0;-1:-1:-1;;;;;5735:17:0;;5711:21;5735:17;;;;;;;;;;;5785:23;;;;5763:111;;;;-1:-1:-1;;;5763:111:0;;21297:2:1;5763:111:0;;;21279:21:1;21336:2;21316:18;;;21309:30;21375:34;21355:18;;;21348:62;-1:-1:-1;;;21426:18:1;;;21419:36;21472:19;;5763:111:0;21095:402:1;5763:111:0;5905:22;5921:6;5905:13;:22;:::i;:::-;-1:-1:-1;;;;;5885:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5938:20;;;;;;;;:30;;5962:6;;5885:9;5938:30;;5962:6;;5938:30;:::i;:::-;;;;;;;;6003:9;-1:-1:-1;;;;;5986:35:0;5995:6;-1:-1:-1;;;;;5986:35:0;;6014:6;5986:35;;;;1549:25:1;;1537:2;1522:18;;1403:177;5986:35:0;;;;;;;;5535:494;5414:615;;;:::o;15512:345::-;15625:6;;15593:53;;15610:4;;-1:-1:-1;;;;;15625:6:0;15634:11;15593:8;:53::i;:::-;15657:6;;:192;;-1:-1:-1;;;15657:192:0;;15720:4;15657:192;;;21843:34:1;21893:18;;;21886:34;;;15657:6:0;21936:18:1;;;21929:34;;;21979:18;;;21972:34;9784:42:0;22022:19:1;;;22015:44;15823:15:0;22075:19:1;;;22068:35;-1:-1:-1;;;;;15657:6:0;;;;:22;;15687:9;;21777:19:1;;15657:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;161:391::-;290:6;265:21;:31;;243:110;;;;-1:-1:-1;;;243:110:0;;22627:2:1;243:110:0;;;22609:21:1;22666:2;22646:18;;;22639:30;22705:31;22685:18;;;22678:59;22754:18;;243:110:0;22425:353:1;243:110:0;367:12;385:9;-1:-1:-1;;;;;385:14:0;407:6;385:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;366:52;;;451:7;429:115;;;;-1:-1:-1;;;429:115:0;;23195:2:1;429:115:0;;;23177:21:1;23234:2;23214:18;;;23207:30;23273:34;23253:18;;;23246:62;23344:28;23324:18;;;23317:56;23390:19;;429:115:0;22993:422:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;:::-;752:134;;;:::o;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1585:316::-;1662:6;1670;1678;1731:2;1719:9;1710:7;1706:23;1702:32;1699:52;;;1747:1;1744;1737:12;1699:52;-1:-1:-1;;1770:23:1;;;1840:2;1825:18;;1812:32;;-1:-1:-1;1891:2:1;1876:18;;;1863:32;;1585:316;-1:-1:-1;1585:316:1:o;1906:247::-;1965:6;2018:2;2006:9;1997:7;1993:23;1989:32;1986:52;;;2034:1;2031;2024:12;1986:52;2073:9;2060:23;2092:31;2117:5;2092:31;:::i;:::-;2142:5;1906:247;-1:-1:-1;;;1906:247:1:o;2158:456::-;2235:6;2243;2251;2304:2;2292:9;2283:7;2279:23;2275:32;2272:52;;;2320:1;2317;2310:12;2272:52;2359:9;2346:23;2378:31;2403:5;2378:31;:::i;:::-;2428:5;-1:-1:-1;2485:2:1;2470:18;;2457:32;2498:33;2457:32;2498:33;:::i;:::-;2158:456;;2550:7;;-1:-1:-1;;;2604:2:1;2589:18;;;;2576:32;;2158:456::o;2808:454::-;2903:6;2911;2919;2927;2935;2988:3;2976:9;2967:7;2963:23;2959:33;2956:53;;;3005:1;3002;2995:12;2956:53;-1:-1:-1;;3028:23:1;;;3098:2;3083:18;;3070:32;;-1:-1:-1;3149:2:1;3134:18;;3121:32;;3200:2;3185:18;;3172:32;;-1:-1:-1;3251:3:1;3236:19;3223:33;;-1:-1:-1;2808:454:1;-1:-1:-1;2808:454:1:o;3475:118::-;3561:5;3554:13;3547:21;3540:5;3537:32;3527:60;;3583:1;3580;3573:12;3598:128;3663:20;;3692:28;3663:20;3692:28;:::i;3731:241::-;3787:6;3840:2;3828:9;3819:7;3815:23;3811:32;3808:52;;;3856:1;3853;3846:12;3808:52;3895:9;3882:23;3914:28;3936:5;3914:28;:::i;3977:127::-;4038:10;4033:3;4029:20;4026:1;4019:31;4069:4;4066:1;4059:15;4093:4;4090:1;4083:15;4109:1191;4199:6;4207;4260:2;4248:9;4239:7;4235:23;4231:32;4228:52;;;4276:1;4273;4266:12;4228:52;4316:9;4303:23;4345:18;4386:2;4378:6;4375:14;4372:34;;;4402:1;4399;4392:12;4372:34;4440:6;4429:9;4425:22;4415:32;;4485:7;4478:4;4474:2;4470:13;4466:27;4456:55;;4507:1;4504;4497:12;4456:55;4543:2;4530:16;4565:4;4588:2;4584;4581:10;4578:36;;;4594:18;;:::i;:::-;4640:2;4637:1;4633:10;4672:2;4666:9;4735:2;4731:7;4726:2;4722;4718:11;4714:25;4706:6;4702:38;4790:6;4778:10;4775:22;4770:2;4758:10;4755:18;4752:46;4749:72;;;4801:18;;:::i;:::-;4837:2;4830:22;4887:18;;;4921:15;;;;-1:-1:-1;4963:11:1;;;4959:20;;;4991:19;;;4988:39;;;5023:1;5020;5013:12;4988:39;5047:11;;;;5067:148;5083:6;5078:3;5075:15;5067:148;;;5149:23;5168:3;5149:23;:::i;:::-;5137:36;;5100:12;;;;5193;;;;5067:148;;;5234:6;-1:-1:-1;5259:35:1;;-1:-1:-1;5275:18:1;;;5259:35;:::i;:::-;5249:45;;;;;;4109:1191;;;;;:::o;5305:309::-;5370:6;5378;5431:2;5419:9;5410:7;5406:23;5402:32;5399:52;;;5447:1;5444;5437:12;5399:52;5486:9;5473:23;5505:28;5527:5;5505:28;:::i;5619:382::-;5684:6;5692;5745:2;5733:9;5724:7;5720:23;5716:32;5713:52;;;5761:1;5758;5751:12;5713:52;5800:9;5787:23;5819:31;5844:5;5819:31;:::i;:::-;5869:5;-1:-1:-1;5926:2:1;5911:18;;5898:32;5939:30;5898:32;5939:30;:::i;:::-;5988:7;5978:17;;;5619:382;;;;;:::o;6006:180::-;6065:6;6118:2;6106:9;6097:7;6093:23;6089:32;6086:52;;;6134:1;6131;6124:12;6086:52;-1:-1:-1;6157:23:1;;6006:180;-1:-1:-1;6006:180:1:o;6659:388::-;6727:6;6735;6788:2;6776:9;6767:7;6763:23;6759:32;6756:52;;;6804:1;6801;6794:12;6756:52;6843:9;6830:23;6862:31;6887:5;6862:31;:::i;:::-;6912:5;-1:-1:-1;6969:2:1;6954:18;;6941:32;6982:33;6941:32;6982:33;:::i;7275:380::-;7354:1;7350:12;;;;7397;;;7418:61;;7472:4;7464:6;7460:17;7450:27;;7418:61;7525:2;7517:6;7514:14;7494:18;7491:38;7488:161;;;7571:10;7566:3;7562:20;7559:1;7552:31;7606:4;7603:1;7596:15;7634:4;7631:1;7624:15;7488:161;;7275:380;;;:::o;7660:356::-;7862:2;7844:21;;;7881:18;;;7874:30;7940:34;7935:2;7920:18;;7913:62;8007:2;7992:18;;7660:356::o;9149:127::-;9210:10;9205:3;9201:20;9198:1;9191:31;9241:4;9238:1;9231:15;9265:4;9262:1;9255:15;9281:422;9370:1;9413:5;9370:1;9427:270;9448:7;9438:8;9435:21;9427:270;;;9507:4;9503:1;9499:6;9495:17;9489:4;9486:27;9483:53;;;9516:18;;:::i;:::-;9566:7;9556:8;9552:22;9549:55;;;9586:16;;;;9549:55;9665:22;;;;9625:15;;;;9427:270;;;9431:3;9281:422;;;;;:::o;9708:806::-;9757:5;9787:8;9777:80;;-1:-1:-1;9828:1:1;9842:5;;9777:80;9876:4;9866:76;;-1:-1:-1;9913:1:1;9927:5;;9866:76;9958:4;9976:1;9971:59;;;;10044:1;10039:130;;;;9951:218;;9971:59;10001:1;9992:10;;10015:5;;;10039:130;10076:3;10066:8;10063:17;10060:43;;;10083:18;;:::i;:::-;-1:-1:-1;;10139:1:1;10125:16;;10154:5;;9951:218;;10253:2;10243:8;10240:16;10234:3;10228:4;10225:13;10221:36;10215:2;10205:8;10202:16;10197:2;10191:4;10188:12;10184:35;10181:77;10178:159;;;-1:-1:-1;10290:19:1;;;10322:5;;10178:159;10369:34;10394:8;10388:4;10369:34;:::i;:::-;10439:6;10435:1;10431:6;10427:19;10418:7;10415:32;10412:58;;;10450:18;;:::i;:::-;10488:20;;9708:806;-1:-1:-1;;;9708:806:1:o;10519:140::-;10577:5;10606:47;10647:4;10637:8;10633:19;10627:4;10606:47;:::i;10664:168::-;10704:7;10770:1;10766;10762:6;10758:14;10755:1;10752:21;10747:1;10740:9;10733:17;10729:45;10726:71;;;10777:18;;:::i;:::-;-1:-1:-1;10817:9:1;;10664:168::o;10837:346::-;11039:2;11021:21;;;11078:2;11058:18;;;11051:30;-1:-1:-1;;;11112:2:1;11097:18;;11090:52;11174:2;11159:18;;10837:346::o;11597:125::-;11637:4;11665:1;11662;11659:8;11656:34;;;11670:18;;:::i;:::-;-1:-1:-1;11707:9:1;;11597:125::o;11727:128::-;11767:3;11798:1;11794:6;11791:1;11788:13;11785:39;;;11804:18;;:::i;:::-;-1:-1:-1;11840:9:1;;11727:128::o;12911:245::-;12978:6;13031:2;13019:9;13010:7;13006:23;13002:32;12999:52;;;13047:1;13044;13037:12;12999:52;13079:9;13073:16;13098:28;13120:5;13098:28;:::i;13161:127::-;13222:10;13217:3;13213:20;13210:1;13203:31;13253:4;13250:1;13243:15;13277:4;13274:1;13267:15;13293:135;13332:3;-1:-1:-1;;13353:17:1;;13350:43;;;13373:18;;:::i;:::-;-1:-1:-1;13420:1:1;13409:13;;13293:135::o;18822:217::-;18862:1;18888;18878:132;;18932:10;18927:3;18923:20;18920:1;18913:31;18967:4;18964:1;18957:15;18995:4;18992:1;18985:15;18878:132;-1:-1:-1;19024:9:1;;18822:217::o;19044:251::-;19114:6;19167:2;19155:9;19146:7;19142:23;19138:32;19135:52;;;19183:1;19180;19173:12;19135:52;19215:9;19209:16;19234:31;19259:5;19234:31;:::i;19300:980::-;19562:4;19610:3;19599:9;19595:19;19641:6;19630:9;19623:25;19667:2;19705:6;19700:2;19689:9;19685:18;19678:34;19748:3;19743:2;19732:9;19728:18;19721:31;19772:6;19807;19801:13;19838:6;19830;19823:22;19876:3;19865:9;19861:19;19854:26;;19915:2;19907:6;19903:15;19889:29;;19936:1;19946:195;19960:6;19957:1;19954:13;19946:195;;;20025:13;;-1:-1:-1;;;;;20021:39:1;20009:52;;20116:15;;;;20081:12;;;;20057:1;19975:9;19946:195;;;-1:-1:-1;;;;;;;20197:32:1;;;;20192:2;20177:18;;20170:60;-1:-1:-1;;;20261:3:1;20246:19;20239:35;20158:3;19300:980;-1:-1:-1;;;19300:980:1:o;22114:306::-;22202:6;22210;22218;22271:2;22259:9;22250:7;22246:23;22242:32;22239:52;;;22287:1;22284;22277:12;22239:52;22316:9;22310:16;22300:26;;22366:2;22355:9;22351:18;22345:25;22335:35;;22410:2;22399:9;22395:18;22389:25;22379:35;;22114:306;;;;;:::o

Swarm Source

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