ETH Price: $2,409.07 (-0.38%)

Token

MONKAI (MKAI)
 

Overview

Max Total Supply

100,000,000 MKAI

Holders

62 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: MKAI 2
Balance
15,996,185.865496495920295826 MKAI

Value
$0.00
0x08627d514ad6e4f8d35946266e4ac8430daf29f0
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Chatbot, 3D art generator, NFT collections, staking contracts, and much more!

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MONKAI

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-23
*/

/*Website : https://monkai.ai
Chatbot, 3D art generator, NFT collections, staking contracts, and much more!
---
//MonkAI Webapp: https://gen.monkai.ai/
//Telegram AI bot: https://t.me/monkai_bot
//Docs: https://docs.monkai.ai/
//Twitter: https://twitter.com/MonkAi_Token
//Twitter MonkAI Lab: https://twitter.com/MonkAI_Lab
//Telegram: https://t.me/MonkAI_Verifi
//Instagram: https://www.instagram.com/monkai_ai/
//Youtube: https://www.youtube.com/channel/UChmSEF_qXNeddRAYPNiG6UQ
//Tiktok: https://www.tiktok.com/@monkai_ai?_t=8ayc4rzxpgm&_r=1
//Medium: https://medium.com/@MonkAI_Token
*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    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_) {
        _name = name_;
        _symbol = symbol_;
    }


    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(_msgSender(), 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(_msgSender(), 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][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), 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");

        _beforeTokenTransfer(sender, recipient, amount);

        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 _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), 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);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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 is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "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 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,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract MONKAI is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;


    
    uint256 public swapThreshold = 10_000 * 10e18;
    uint256 public maxTxAmount = 1_500_000 * 10**18;
    uint256 public maxWalletAmount = 2_000_000 * 10**18;
    
    address public marketingWallet = 0xCc8F5a4B20FA5512329c1613A9c2907e6d2F52F6;
    address public devWallet = 0x9228c2A3a10520A82757Bf34F1E362AC3A96405f;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(3,1,1);
    Taxes public sellTaxes = Taxes(3,1,1);
    uint256 public totalTax = 5;
    uint256 public totalSellTax = 5;
    
    mapping (address => bool) public excludedFromFees;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("MONKAI", "MKAI") {
        _mint(msg.sender, 1e8 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
  
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
 
        else{
            if(recipient == pair) fee = amount * totalSellTax / 100;
            else fee = amount * totalTax / 100;
        }
        

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

                    uint256 denominator = totalSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

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

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
    }

    function setBuyTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totalTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totalSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateDBMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDBTeamWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    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":"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDBMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDBTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

69152d02c7e14af68000006008556a013da329b63364718000006009556a01a784379d99db42000000600a55600b80546001600160a01b031990811673cc8f5a4b20fa5512329c1613a9c2907e6d2f52f617909155600c8054909116739228c2a3a10520a82757bf34f1e362ac3a96405f17905560036080819052600160a081905260c0819052600d829055600e819055600f81905561014060405260e0829052610100819052610120819052601091909155601181905560125560056013819055601455348015620000d157600080fd5b5060408051808201825260068152654d4f4e4b414960d01b6020808301918252835180850190945260048452634d4b414960e01b9084015281519192916200011c91600391620004a9565b50805162000132906004906020840190620004a9565b5050506200014f620001496200036b60201b60201c565b6200036f565b6200017833620001626012600a62000664565b62000172906305f5e1006200067c565b620003c1565b336000908152601560209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020991906200069e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d91906200069e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f191906200069e565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260156020526040808220805460ff199081166001908117909255600b54851684528284208054821683179055600c5490941683529120805490921617905562000721565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200041c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620004309190620006c9565b90915550506001600160a01b038216600090815260208190526040812080548392906200045f908490620006c9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620004b790620006e4565b90600052602060002090601f016020900481019282620004db576000855562000526565b82601f10620004f657805160ff191683800117855562000526565b8280016001018555821562000526579182015b828111156200052657825182559160200191906001019062000509565b506200053492915062000538565b5090565b5b8082111562000534576000815560010162000539565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005a65781600019048211156200058a576200058a6200054f565b808516156200059857918102915b93841c93908002906200056a565b509250929050565b600082620005bf575060016200065e565b81620005ce575060006200065e565b8160018114620005e75760028114620005f25762000612565b60019150506200065e565b60ff8411156200060657620006066200054f565b50506001821b6200065e565b5060208310610133831016604e8410600b841016171562000637575081810a6200065e565b62000643838362000565565b80600019048211156200065a576200065a6200054f565b0290505b92915050565b60006200067560ff841683620005ae565b9392505050565b60008160001904831182151516156200069957620006996200054f565b500290565b600060208284031215620006b157600080fd5b81516001600160a01b03811681146200067557600080fd5b60008219821115620006df57620006df6200054f565b500190565b600181811c90821680620006f957607f821691505b602082108114156200071b57634e487b7160e01b600052602260045260246000fd5b50919050565b611f7380620007316000396000f3fe6080604052600436106102555760003560e01c80638cd4426d11610139578063aa4bde28116100b6578063e545fd6d1161007a578063e545fd6d1461072e578063f2fde38b1461074e578063f66895a31461076e578063f887ea401461078d578063fb53d9a2146107ad578063fe85b42b146107cd57600080fd5b8063aa4bde2814610662578063c18bc19514610678578063dbe66ca014610698578063dd62ed3e146106c8578063e01af92c1461070e57600080fd5b80639e252f00116100fd5780639e252f00146105c2578063a457c2d7146105e2578063a7c7f0af14610602578063a8aa1b3114610622578063a9059cbb1461064257600080fd5b80638cd4426d1461052f5780638da5cb5b1461054f5780638ea5220f1461056d57806395d89b411461058d5780639d0014b1146105a257600080fd5b806339509351116101d257806370a082311161019657806370a0823114610447578063715018a61461047d578063728f8eea1461049257806375f0a874146104cc5780638a8c523c146105045780638c0b5e221461051957600080fd5b806339509351146103a557806340b28c2f146103c55780634ada218b146103e55780636256d181146104065780636ddd17131461042657600080fd5b80631870517a116102195780631870517a146103135780631bff78981461033357806323b872dd1461034957806326b5d32f14610369578063313ce5671461038957600080fd5b80630445b6671461026157806306fdde031461028a57806308733214146102ac578063095ea7b3146102ce57806318160ddd146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760085481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b5061029f6107e3565b6040516102819190611b86565b3480156102b857600080fd5b506102cc6102c7366004611bdb565b610875565b005b3480156102da57600080fd5b506102ee6102e9366004611c1c565b6108ec565b6040519015158152602001610281565b34801561030a57600080fd5b50600254610277565b34801561031f57600080fd5b506102cc61032e366004611bdb565b610902565b34801561033f57600080fd5b5061027760145481565b34801561035557600080fd5b506102ee610364366004611c48565b610970565b34801561037557600080fd5b506102cc610384366004611bdb565b610a21565b34801561039557600080fd5b5060405160128152602001610281565b3480156103b157600080fd5b506102ee6103c0366004611c1c565b610adc565b3480156103d157600080fd5b506102cc6103e0366004611c89565b610b13565b3480156103f157600080fd5b506007546102ee90600160b01b900460ff1681565b34801561041257600080fd5b506102cc610421366004611cc2565b610b6b565b34801561043257600080fd5b506007546102ee90600160a81b900460ff1681565b34801561045357600080fd5b50610277610462366004611cdb565b6001600160a01b031660009081526020819052604090205490565b34801561048957600080fd5b506102cc610bad565b34801561049e57600080fd5b50600d54600e54600f546104b192919083565b60408051938452602084019290925290820152606001610281565b3480156104d857600080fd5b50600b546104ec906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561051057600080fd5b506102cc610be3565b34801561052557600080fd5b5061027760095481565b34801561053b57600080fd5b506102cc61054a366004611c1c565b610c77565b34801561055b57600080fd5b506005546001600160a01b03166104ec565b34801561057957600080fd5b50600c546104ec906001600160a01b031681565b34801561059957600080fd5b5061029f610d38565b3480156105ae57600080fd5b506102cc6105bd366004611cc2565b610d47565b3480156105ce57600080fd5b506102cc6105dd366004611cc2565b610d76565b3480156105ee57600080fd5b506102ee6105fd366004611c1c565b610dc8565b34801561060e57600080fd5b506102cc61061d366004611cdb565b610e63565b34801561062e57600080fd5b506007546104ec906001600160a01b031681565b34801561064e57600080fd5b506102ee61065d366004611c1c565b610eaf565b34801561066e57600080fd5b50610277600a5481565b34801561068457600080fd5b506102cc610693366004611cc2565b610ebc565b3480156106a457600080fd5b506102ee6106b3366004611cdb565b60156020526000908152604090205460ff1681565b3480156106d457600080fd5b506102776106e3366004611c89565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561071a57600080fd5b506102cc610729366004611d0d565b610efe565b34801561073a57600080fd5b506102cc610749366004611d2a565b610f46565b34801561075a57600080fd5b506102cc610769366004611cdb565b610f9b565b34801561077a57600080fd5b506010546011546012546104b192919083565b34801561079957600080fd5b506006546104ec906001600160a01b031681565b3480156107b957600080fd5b506102cc6107c8366004611cdb565b611033565b3480156107d957600080fd5b5061027760135481565b6060600380546107f290611d58565b80601f016020809104026020016040519081016040528092919081815260200182805461081e90611d58565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b6005546001600160a01b031633146108a85760405162461bcd60e51b815260040161089f90611d93565b60405180910390fd5b604080516060810182528481526020810184905201819052601083905560118290556012819055806108da8385611dde565b6108e49190611dde565b601455505050565b60006108f933848461107f565b50600192915050565b6005546001600160a01b0316331461092c5760405162461bcd60e51b815260040161089f90611d93565b604080516060810182528481526020810184905201819052600d839055600e829055600f8190558061095e8385611dde565b6109689190611dde565b601355505050565b600061097d8484846111a3565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a025760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161089f565b610a168533610a118685611df6565b61107f565b506001949350505050565b6005546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161089f90611d93565b47610a55846114d8565b6000610a618247611df6565b90508215610a9c57610a9c610a768486611dde565b610a808584611e0d565b610a8a9190611e2c565b600b546001600160a01b031690611632565b8315610ad557610ad5610aaf8486611dde565b610ab98684611e0d565b610ac39190611e2c565b600c546001600160a01b031690611632565b5050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108f9918590610a11908690611dde565b6005546001600160a01b03163314610b3d5760405162461bcd60e51b815260040161089f90611d93565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610b955760405162461bcd60e51b815260040161089f90611d93565b610ba781670de0b6b3a7640000611e0d565b60095550565b6005546001600160a01b03163314610bd75760405162461bcd60e51b815260040161089f90611d93565b610be1600061174b565b565b6005546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161089f90611d93565b600754600160b01b900460ff1615610c605760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b604482015260640161089f565b6007805461ffff60a81b191661010160a81b179055565b6005546001600160a01b03163314610ca15760405162461bcd60e51b815260040161089f90611d93565b816001600160a01b031663a9059cbb610cc26005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d339190611e4e565b505050565b6060600480546107f290611d58565b6005546001600160a01b03163314610d715760405162461bcd60e51b815260040161089f90611d93565b600855565b6005546001600160a01b03163314610da05760405162461bcd60e51b815260040161089f90611d93565b610dc581610db66005546001600160a01b031690565b6001600160a01b031690611632565b50565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161089f565b610e593385610a118685611df6565b5060019392505050565b6005546001600160a01b03163314610e8d5760405162461bcd60e51b815260040161089f90611d93565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60006108f93384846111a3565b6005546001600160a01b03163314610ee65760405162461bcd60e51b815260040161089f90611d93565b610ef881670de0b6b3a7640000611e0d565b600a5550565b6005546001600160a01b03163314610f285760405162461bcd60e51b815260040161089f90611d93565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610f705760405162461bcd60e51b815260040161089f90611d93565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610fc55760405162461bcd60e51b815260040161089f90611d93565b6001600160a01b03811661102a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089f565b610dc58161174b565b6005546001600160a01b0316331461105d5760405162461bcd60e51b815260040161089f90611d93565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161089f565b6001600160a01b0382166111425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161089f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112055760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161089f565b6001600160a01b03831660009081526015602052604090205460ff1615801561124757506001600160a01b03821660009081526015602052604090205460ff16155b801561125d5750600754600160a01b900460ff16155b156113a057600754600160b01b900460ff166112b45760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b604482015260640161089f565b6009548111156113065760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e74000000604482015260640161089f565b6007546001600160a01b038381169116146113a057600a548161133e846001600160a01b031660009081526020819052604090205490565b6113489190611dde565b11156113a05760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b606482015260840161089f565b600754600090600160a01b900460ff16806113d357506001600160a01b03841660009081526015602052604090205460ff165b806113f657506001600160a01b03831660009081526015602052604090205460ff165b1561140357506000611457565b6007546001600160a01b038481169116141561143a576064601454836114299190611e0d565b6114339190611e2c565b9050611457565b60646013548361144a9190611e0d565b6114549190611e2c565b90505b600754600160a81b900460ff16801561147a5750600754600160a01b900460ff16155b801561149457506007546001600160a01b03858116911614155b80156114a05750600081115b156114ad576114ad61179d565b6114c184846114bc8486611df6565b611901565b80156114d2576114d2843083611901565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061150d5761150d611e6b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190611e81565b8160018151811061159d5761159d611e6b565b6001600160a01b0392831660209182029290920101526006546115c3913091168461107f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906115fc908590600090869030904290600401611e9e565b600060405180830381600087803b15801561161657600080fd5b505af115801561162a573d6000803e3d6000fd5b505050505050565b804710156116825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161089f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116cf576040519150601f19603f3d011682016040523d82523d6000602084013e6116d4565b606091505b5050905080610d335760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161089f565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610be1576007805460ff60a01b1916600160a01b17905530600090815260208190526040812054905060085481106118f157600060145460026117ed9190611e0d565b9050600081601060010154846118039190611e0d565b61180d9190611e2c565b9050600061181b8285611df6565b905047611827826114d8565b60006118338247611df6565b6011549091506000906118469087611df6565b6118509083611e2c565b6011549091506000906118639083611e0d565b90508015611875576118758682611ad9565b601054600090611886846002611e0d565b6118909190611e0d565b905080156118ae57600b546118ae906001600160a01b031682611632565b6012546000906118bf856002611e0d565b6118c99190611e0d565b905080156118e757600c546118e7906001600160a01b031682611632565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b0383166119655760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161089f565b6001600160a01b0382166119c75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161089f565b6001600160a01b03831660009081526020819052604090205481811015611a3f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161089f565b611a498282611df6565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611a7f908490611dde565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611acb91815260200190565b60405180910390a350505050565b600654611af19030906001600160a01b03168461107f565b600654600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611b61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad59190611f0f565b600060208083528351808285015260005b81811015611bb357858101830151858201604001528201611b97565b81811115611bc5576000604083870101525b50601f01601f1916929092016040019392505050565b600080600060608486031215611bf057600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610dc557600080fd5b60008060408385031215611c2f57600080fd5b8235611c3a81611c07565b946020939093013593505050565b600080600060608486031215611c5d57600080fd5b8335611c6881611c07565b92506020840135611c7881611c07565b929592945050506040919091013590565b60008060408385031215611c9c57600080fd5b8235611ca781611c07565b91506020830135611cb781611c07565b809150509250929050565b600060208284031215611cd457600080fd5b5035919050565b600060208284031215611ced57600080fd5b8135611cf881611c07565b9392505050565b8015158114610dc557600080fd5b600060208284031215611d1f57600080fd5b8135611cf881611cff565b60008060408385031215611d3d57600080fd5b8235611d4881611c07565b91506020830135611cb781611cff565b600181811c90821680611d6c57607f821691505b60208210811415611d8d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611df157611df1611dc8565b500190565b600082821015611e0857611e08611dc8565b500390565b6000816000190483118215151615611e2757611e27611dc8565b500290565b600082611e4957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e6057600080fd5b8151611cf881611cff565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611e9357600080fd5b8151611cf881611c07565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611eee5784516001600160a01b031683529383019391830191600101611ec9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f2457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c8a8545b9487c498f8aae730d97045919c8dd3f4bdeb2112a475ead8b39783ca64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638cd4426d11610139578063aa4bde28116100b6578063e545fd6d1161007a578063e545fd6d1461072e578063f2fde38b1461074e578063f66895a31461076e578063f887ea401461078d578063fb53d9a2146107ad578063fe85b42b146107cd57600080fd5b8063aa4bde2814610662578063c18bc19514610678578063dbe66ca014610698578063dd62ed3e146106c8578063e01af92c1461070e57600080fd5b80639e252f00116100fd5780639e252f00146105c2578063a457c2d7146105e2578063a7c7f0af14610602578063a8aa1b3114610622578063a9059cbb1461064257600080fd5b80638cd4426d1461052f5780638da5cb5b1461054f5780638ea5220f1461056d57806395d89b411461058d5780639d0014b1146105a257600080fd5b806339509351116101d257806370a082311161019657806370a0823114610447578063715018a61461047d578063728f8eea1461049257806375f0a874146104cc5780638a8c523c146105045780638c0b5e221461051957600080fd5b806339509351146103a557806340b28c2f146103c55780634ada218b146103e55780636256d181146104065780636ddd17131461042657600080fd5b80631870517a116102195780631870517a146103135780631bff78981461033357806323b872dd1461034957806326b5d32f14610369578063313ce5671461038957600080fd5b80630445b6671461026157806306fdde031461028a57806308733214146102ac578063095ea7b3146102ce57806318160ddd146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760085481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b5061029f6107e3565b6040516102819190611b86565b3480156102b857600080fd5b506102cc6102c7366004611bdb565b610875565b005b3480156102da57600080fd5b506102ee6102e9366004611c1c565b6108ec565b6040519015158152602001610281565b34801561030a57600080fd5b50600254610277565b34801561031f57600080fd5b506102cc61032e366004611bdb565b610902565b34801561033f57600080fd5b5061027760145481565b34801561035557600080fd5b506102ee610364366004611c48565b610970565b34801561037557600080fd5b506102cc610384366004611bdb565b610a21565b34801561039557600080fd5b5060405160128152602001610281565b3480156103b157600080fd5b506102ee6103c0366004611c1c565b610adc565b3480156103d157600080fd5b506102cc6103e0366004611c89565b610b13565b3480156103f157600080fd5b506007546102ee90600160b01b900460ff1681565b34801561041257600080fd5b506102cc610421366004611cc2565b610b6b565b34801561043257600080fd5b506007546102ee90600160a81b900460ff1681565b34801561045357600080fd5b50610277610462366004611cdb565b6001600160a01b031660009081526020819052604090205490565b34801561048957600080fd5b506102cc610bad565b34801561049e57600080fd5b50600d54600e54600f546104b192919083565b60408051938452602084019290925290820152606001610281565b3480156104d857600080fd5b50600b546104ec906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561051057600080fd5b506102cc610be3565b34801561052557600080fd5b5061027760095481565b34801561053b57600080fd5b506102cc61054a366004611c1c565b610c77565b34801561055b57600080fd5b506005546001600160a01b03166104ec565b34801561057957600080fd5b50600c546104ec906001600160a01b031681565b34801561059957600080fd5b5061029f610d38565b3480156105ae57600080fd5b506102cc6105bd366004611cc2565b610d47565b3480156105ce57600080fd5b506102cc6105dd366004611cc2565b610d76565b3480156105ee57600080fd5b506102ee6105fd366004611c1c565b610dc8565b34801561060e57600080fd5b506102cc61061d366004611cdb565b610e63565b34801561062e57600080fd5b506007546104ec906001600160a01b031681565b34801561064e57600080fd5b506102ee61065d366004611c1c565b610eaf565b34801561066e57600080fd5b50610277600a5481565b34801561068457600080fd5b506102cc610693366004611cc2565b610ebc565b3480156106a457600080fd5b506102ee6106b3366004611cdb565b60156020526000908152604090205460ff1681565b3480156106d457600080fd5b506102776106e3366004611c89565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561071a57600080fd5b506102cc610729366004611d0d565b610efe565b34801561073a57600080fd5b506102cc610749366004611d2a565b610f46565b34801561075a57600080fd5b506102cc610769366004611cdb565b610f9b565b34801561077a57600080fd5b506010546011546012546104b192919083565b34801561079957600080fd5b506006546104ec906001600160a01b031681565b3480156107b957600080fd5b506102cc6107c8366004611cdb565b611033565b3480156107d957600080fd5b5061027760135481565b6060600380546107f290611d58565b80601f016020809104026020016040519081016040528092919081815260200182805461081e90611d58565b801561086b5780601f106108405761010080835404028352916020019161086b565b820191906000526020600020905b81548152906001019060200180831161084e57829003601f168201915b5050505050905090565b6005546001600160a01b031633146108a85760405162461bcd60e51b815260040161089f90611d93565b60405180910390fd5b604080516060810182528481526020810184905201819052601083905560118290556012819055806108da8385611dde565b6108e49190611dde565b601455505050565b60006108f933848461107f565b50600192915050565b6005546001600160a01b0316331461092c5760405162461bcd60e51b815260040161089f90611d93565b604080516060810182528481526020810184905201819052600d839055600e829055600f8190558061095e8385611dde565b6109689190611dde565b601355505050565b600061097d8484846111a3565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a025760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161089f565b610a168533610a118685611df6565b61107f565b506001949350505050565b6005546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161089f90611d93565b47610a55846114d8565b6000610a618247611df6565b90508215610a9c57610a9c610a768486611dde565b610a808584611e0d565b610a8a9190611e2c565b600b546001600160a01b031690611632565b8315610ad557610ad5610aaf8486611dde565b610ab98684611e0d565b610ac39190611e2c565b600c546001600160a01b031690611632565b5050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108f9918590610a11908690611dde565b6005546001600160a01b03163314610b3d5760405162461bcd60e51b815260040161089f90611d93565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610b955760405162461bcd60e51b815260040161089f90611d93565b610ba781670de0b6b3a7640000611e0d565b60095550565b6005546001600160a01b03163314610bd75760405162461bcd60e51b815260040161089f90611d93565b610be1600061174b565b565b6005546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161089f90611d93565b600754600160b01b900460ff1615610c605760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b604482015260640161089f565b6007805461ffff60a81b191661010160a81b179055565b6005546001600160a01b03163314610ca15760405162461bcd60e51b815260040161089f90611d93565b816001600160a01b031663a9059cbb610cc26005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d339190611e4e565b505050565b6060600480546107f290611d58565b6005546001600160a01b03163314610d715760405162461bcd60e51b815260040161089f90611d93565b600855565b6005546001600160a01b03163314610da05760405162461bcd60e51b815260040161089f90611d93565b610dc581610db66005546001600160a01b031690565b6001600160a01b031690611632565b50565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161089f565b610e593385610a118685611df6565b5060019392505050565b6005546001600160a01b03163314610e8d5760405162461bcd60e51b815260040161089f90611d93565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60006108f93384846111a3565b6005546001600160a01b03163314610ee65760405162461bcd60e51b815260040161089f90611d93565b610ef881670de0b6b3a7640000611e0d565b600a5550565b6005546001600160a01b03163314610f285760405162461bcd60e51b815260040161089f90611d93565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610f705760405162461bcd60e51b815260040161089f90611d93565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610fc55760405162461bcd60e51b815260040161089f90611d93565b6001600160a01b03811661102a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089f565b610dc58161174b565b6005546001600160a01b0316331461105d5760405162461bcd60e51b815260040161089f90611d93565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161089f565b6001600160a01b0382166111425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161089f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112055760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161089f565b6001600160a01b03831660009081526015602052604090205460ff1615801561124757506001600160a01b03821660009081526015602052604090205460ff16155b801561125d5750600754600160a01b900460ff16155b156113a057600754600160b01b900460ff166112b45760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b604482015260640161089f565b6009548111156113065760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e74000000604482015260640161089f565b6007546001600160a01b038381169116146113a057600a548161133e846001600160a01b031660009081526020819052604090205490565b6113489190611dde565b11156113a05760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b606482015260840161089f565b600754600090600160a01b900460ff16806113d357506001600160a01b03841660009081526015602052604090205460ff165b806113f657506001600160a01b03831660009081526015602052604090205460ff165b1561140357506000611457565b6007546001600160a01b038481169116141561143a576064601454836114299190611e0d565b6114339190611e2c565b9050611457565b60646013548361144a9190611e0d565b6114549190611e2c565b90505b600754600160a81b900460ff16801561147a5750600754600160a01b900460ff16155b801561149457506007546001600160a01b03858116911614155b80156114a05750600081115b156114ad576114ad61179d565b6114c184846114bc8486611df6565b611901565b80156114d2576114d2843083611901565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061150d5761150d611e6b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190611e81565b8160018151811061159d5761159d611e6b565b6001600160a01b0392831660209182029290920101526006546115c3913091168461107f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906115fc908590600090869030904290600401611e9e565b600060405180830381600087803b15801561161657600080fd5b505af115801561162a573d6000803e3d6000fd5b505050505050565b804710156116825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161089f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116cf576040519150601f19603f3d011682016040523d82523d6000602084013e6116d4565b606091505b5050905080610d335760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161089f565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610be1576007805460ff60a01b1916600160a01b17905530600090815260208190526040812054905060085481106118f157600060145460026117ed9190611e0d565b9050600081601060010154846118039190611e0d565b61180d9190611e2c565b9050600061181b8285611df6565b905047611827826114d8565b60006118338247611df6565b6011549091506000906118469087611df6565b6118509083611e2c565b6011549091506000906118639083611e0d565b90508015611875576118758682611ad9565b601054600090611886846002611e0d565b6118909190611e0d565b905080156118ae57600b546118ae906001600160a01b031682611632565b6012546000906118bf856002611e0d565b6118c99190611e0d565b905080156118e757600c546118e7906001600160a01b031682611632565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b0383166119655760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161089f565b6001600160a01b0382166119c75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161089f565b6001600160a01b03831660009081526020819052604090205481811015611a3f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161089f565b611a498282611df6565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611a7f908490611dde565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611acb91815260200190565b60405180910390a350505050565b600654611af19030906001600160a01b03168461107f565b600654600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611b61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad59190611f0f565b600060208083528351808285015260005b81811015611bb357858101830151858201604001528201611b97565b81811115611bc5576000604083870101525b50601f01601f1916929092016040019392505050565b600080600060608486031215611bf057600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610dc557600080fd5b60008060408385031215611c2f57600080fd5b8235611c3a81611c07565b946020939093013593505050565b600080600060608486031215611c5d57600080fd5b8335611c6881611c07565b92506020840135611c7881611c07565b929592945050506040919091013590565b60008060408385031215611c9c57600080fd5b8235611ca781611c07565b91506020830135611cb781611c07565b809150509250929050565b600060208284031215611cd457600080fd5b5035919050565b600060208284031215611ced57600080fd5b8135611cf881611c07565b9392505050565b8015158114610dc557600080fd5b600060208284031215611d1f57600080fd5b8135611cf881611cff565b60008060408385031215611d3d57600080fd5b8235611d4881611c07565b91506020830135611cb781611cff565b600181811c90821680611d6c57607f821691505b60208210811415611d8d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611df157611df1611dc8565b500190565b600082821015611e0857611e08611dc8565b500390565b6000816000190483118215151615611e2757611e27611dc8565b500290565b600082611e4957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e6057600080fd5b8151611cf881611cff565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611e9357600080fd5b8151611cf881611c07565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611eee5784516001600160a01b031683529383019391830191600101611ec9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f2457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c8a8545b9487c498f8aae730d97045919c8dd3f4bdeb2112a475ead8b39783ca64736f6c634300080c0033

Deployed Bytecode Sourcemap

8363:7495:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8610:45;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8610:45:0;;;;;;;;2298:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13968:216::-;;;;;;;;;;-1:-1:-1;13968:216:0;;;;;:::i;:::-;;:::i;:::-;;3212:169;;;;;;;;;;-1:-1:-1;3212:169:0;;;;;:::i;:::-;;:::i;:::-;;;1740:14:1;;1733:22;1715:41;;1703:2;1688:18;3212:169:0;1575:187:1;2619:108:0;;;;;;;;;;-1:-1:-1;2707:12:0;;2619:108;;13753:207;;;;;;;;;;-1:-1:-1;13753:207:0;;;;;:::i;:::-;;:::i;9174:31::-;;;;;;;;;;;;;;;;3389:422;;;;;;;;;;-1:-1:-1;3389:422:0;;;;;:::i;:::-;;:::i;15248:546::-;;;;;;;;;;-1:-1:-1;15248:546:0;;;;;:::i;:::-;;:::i;2518:93::-;;;;;;;;;;-1:-1:-1;2518:93:0;;2601:2;2370:36:1;;2358:2;2343:18;2518:93:0;2228:184:1;3819:215:0;;;;;;;;;;-1:-1:-1;3819:215:0;;;;;:::i;:::-;;:::i;14437:137::-;;;;;;;;;;-1:-1:-1;14437:137:0;;;;;:::i;:::-;;:::i;8567:26::-;;;;;;;;;;-1:-1:-1;8567:26:0;;;;-1:-1:-1;;;8567:26:0;;;;;;14732:109;;;;;;;;;;-1:-1:-1;14732:109:0;;;;;:::i;:::-;;:::i;8537:23::-;;;;;;;;;;-1:-1:-1;8537:23:0;;;;-1:-1:-1;;;8537:23:0;;;;;;2735:127;;;;;;;;;;-1:-1:-1;2735:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2836:18:0;2809:7;2836:18;;;;;;;;;;;;2735:127;7140:94;;;;;;;;;;;;;:::i;9056:33::-;;;;;;;;;;-1:-1:-1;9056:33:0;;;;;;;;;;;;;;;;3464:25:1;;;3520:2;3505:18;;3498:34;;;;3548:18;;;3541:34;3452:2;3437:18;9056:33:0;3262:319:1;8780:75:0;;;;;;;;;;-1:-1:-1;8780:75:0;;;;-1:-1:-1;;;;;8780:75:0;;;;;;-1:-1:-1;;;;;3750:32:1;;;3732:51;;3720:2;3705:18;8780:75:0;3586:203:1;13572:173:0;;;;;;;;;;;;;:::i;8662:47::-;;;;;;;;;;;;;;;;14978:142;;;;;;;;;;-1:-1:-1;14978:142:0;;;;;:::i;:::-;;:::i;6917:87::-;;;;;;;;;;-1:-1:-1;6990:6:0;;-1:-1:-1;;;;;6990:6:0;6917:87;;8862:69;;;;;;;;;;-1:-1:-1;8862:69:0;;;;-1:-1:-1;;;;;8862:69:0;;;2406:104;;;;;;;;;;;;;:::i;13454:110::-;;;;;;;;;;-1:-1:-1;13454:110:0;;;;;:::i;:::-;;:::i;15128:112::-;;;;;;;;;;-1:-1:-1;15128:112:0;;;;;:::i;:::-;;:::i;4042:377::-;;;;;;;;;;-1:-1:-1;4042:377:0;;;;;:::i;:::-;;:::i;14324:105::-;;;;;;;;;;-1:-1:-1;14324:105:0;;;;;:::i;:::-;;:::i;8477:19::-;;;;;;;;;;-1:-1:-1;8477:19:0;;;;-1:-1:-1;;;;;8477:19:0;;;2870:175;;;;;;;;;;-1:-1:-1;2870:175:0;;;;;:::i;:::-;;:::i;8716:51::-;;;;;;;;;;;;;;;;14853:117;;;;;;;;;;-1:-1:-1;14853:117:0;;;;;:::i;:::-;;:::i;9218:49::-;;;;;;;;;;-1:-1:-1;9218:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3053:151;;;;;;;;;;-1:-1:-1;3053:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3169:18:0;;;3142:7;3169:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3053:151;13353:93;;;;;;;;;;-1:-1:-1;13353:93:0;;;;;:::i;:::-;;:::i;14586:134::-;;;;;;;;;;-1:-1:-1;14586:134:0;;;;;:::i;:::-;;:::i;7242:192::-;;;;;;;;;;-1:-1:-1;7242:192:0;;;;;:::i;:::-;;:::i;9096:37::-;;;;;;;;;;-1:-1:-1;9096:37:0;;;;;;;;;;;;8449:21;;;;;;;;;;-1:-1:-1;8449:21:0;;;;-1:-1:-1;;;;;8449:21:0;;;14196:116;;;;;;;;;;-1:-1:-1;14196:116:0;;;;;:::i;:::-;;:::i;9140:27::-;;;;;;;;;;;;;;;;2298:100;2352:13;2385:5;2378:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2298:100;:::o;13968:216::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;;;;;;;;;14085:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;14073:9:::1;:47:::0;;;;;;;;;;;14115:4;14146:23:::1;14103:10:::0;14091;14146:23:::1;:::i;:::-;:30;;;;:::i;:::-;14131:12;:45:::0;-1:-1:-1;;;13968:216:0:o;3212:169::-;3295:4;3312:39;780:10;3335:7;3344:6;3312:8;:39::i;:::-;-1:-1:-1;3369:4:0;3212:169;;;;:::o;13753:207::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;13865:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;13857:5:::1;:43:::0;;;;;;;;;;;13895:4;13922:23:::1;13883:10:::0;13871;13922:23:::1;:::i;:::-;:30;;;;:::i;:::-;13911:8;:41:::0;-1:-1:-1;;;13753:207:0:o;3389:422::-;3495:4;3512:36;3522:6;3530:9;3541:6;3512:9;:36::i;:::-;-1:-1:-1;;;;;3588:19:0;;3561:24;3588:19;;;:11;:19;;;;;;;;780:10;3588:33;;;;;;;;3640:26;;;;3632:79;;;;-1:-1:-1;;;3632:79:0;;6379:2:1;3632:79:0;;;6361:21:1;6418:2;6398:18;;;6391:30;6457:34;6437:18;;;6430:62;-1:-1:-1;;;6508:18:1;;;6501:38;6556:19;;3632:79:0;6177:404:1;3632:79:0;3722:57;3731:6;780:10;3753:25;3772:6;3753:16;:25;:::i;:::-;3722:8;:57::i;:::-;-1:-1:-1;3799:4:0;;3389:422;-1:-1:-1;;;;3389:422:0:o;15248:546::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;15387:21:::1;15419:24;15436:6:::0;15419:16:::1;:24::i;:::-;15454:18;15475:35;15499:11:::0;15475:21:::1;:35;:::i;:::-;15454:56:::0;-1:-1:-1;15524:23:0;;15521:136:::1;;15549:108;15620:35;15636:19:::0;15620:13;:35:::1;:::i;:::-;15584:32;15597:19:::0;15584:10;:32:::1;:::i;:::-;:72;;;;:::i;:::-;15557:15;::::0;-1:-1:-1;;;;;15557:15:0::1;::::0;15549:34:::1;:108::i;:::-;15671:17:::0;;15668:118:::1;;15690:96;15749:35;15765:19:::0;15749:13;:35:::1;:::i;:::-;15719:26;15732:13:::0;15719:10;:26:::1;:::i;:::-;:66;;;;:::i;:::-;15698:9;::::0;-1:-1:-1;;;;;15698:9:0::1;::::0;15690:28:::1;:96::i;:::-;15354:440;;15248:546:::0;;;:::o;3819:215::-;780:10;3907:4;3956:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3956:34:0;;;;;;;;;;3907:4;;3924:80;;3947:7;;3956:47;;3993:10;;3956:47;:::i;14437:137::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;14527:6:::1;:16:::0;;-1:-1:-1;;;;;14527:16:0;;::::1;-1:-1:-1::0;;;;;;14527:16:0;;::::1;;::::0;;;14554:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;14437:137::o;14732:109::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;14818:15:::1;:6:::0;14827::::1;14818:15;:::i;:::-;14804:11;:29:::0;-1:-1:-1;14732:109:0:o;7140:94::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;7205:21:::1;7223:1;7205:9;:21::i;:::-;7140:94::o:0;13572:173::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;13635:14:::1;::::0;-1:-1:-1;;;13635:14:0;::::1;;;13634:15;13626:50;;;::::0;-1:-1:-1;;;13626:50:0;;7313:2:1;13626:50:0::1;::::0;::::1;7295:21:1::0;7352:2;7332:18;;;7325:30;-1:-1:-1;;;7371:18:1;;;7364:52;7433:18;;13626:50:0::1;7111:346:1::0;13626:50:0::1;13687:14;:21:::0;;-1:-1:-1;;;;13719:18:0;-1:-1:-1;;;13719:18:0;;;13572:173::o;14978:142::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;15073:12:::1;-1:-1:-1::0;;;;;15066:29:0::1;;15096:7;6990:6:::0;;-1:-1:-1;;;;;6990:6:0;;6917:87;15096:7:::1;15066:46;::::0;-1:-1:-1;;;;;;15066:46:0::1;::::0;;;;;;-1:-1:-1;;;;;7654:32:1;;;15066:46:0::1;::::0;::::1;7636:51:1::0;7703:18;;;7696:34;;;7609:18;;15066:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14978:142:::0;;:::o;2406:104::-;2462:13;2495:7;2488:14;;;;;:::i;13454:110::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;13530:13:::1;:26:::0;13454:110::o;15128:112::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;15195:37:::1;15222:9;15203:7;6990:6:::0;;-1:-1:-1;;;;;6990:6:0;;6917:87;15203:7:::1;-1:-1:-1::0;;;;;15195:26:0::1;::::0;::::1;:37::i;:::-;15128:112:::0;:::o;4042:377::-;780:10;4135:4;4179:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4179:34:0;;;;;;;;;;4232:35;;;;4224:85;;;;-1:-1:-1;;;4224:85:0;;8193:2:1;4224:85:0;;;8175:21:1;8232:2;8212:18;;;8205:30;8271:34;8251:18;;;8244:62;-1:-1:-1;;;8322:18:1;;;8315:35;8367:19;;4224:85:0;7991:401:1;4224:85:0;4320:67;780:10;4343:7;4352:34;4371:15;4352:16;:34;:::i;4320:67::-;-1:-1:-1;4407:4:0;;4042:377;-1:-1:-1;;;4042:377:0:o;14324:105::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;14400:9:::1;:21:::0;;-1:-1:-1;;;;;;14400:21:0::1;-1:-1:-1::0;;;;;14400:21:0;;;::::1;::::0;;;::::1;::::0;;14324:105::o;2870:175::-;2956:4;2973:42;780:10;2997:9;3008:6;2973:9;:42::i;14853:117::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;14947:15:::1;:6:::0;14956::::1;14947:15;:::i;:::-;14929;:33:::0;-1:-1:-1;14853:117:0:o;13353:93::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;13419:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;13419:19:0::1;-1:-1:-1::0;;;;13419:19:0;;::::1;::::0;;;::::1;::::0;;13353:93::o;14586:134::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14678:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:34;;-1:-1:-1;;14678:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14586:134::o;7242:192::-;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7331:22:0;::::1;7323:73;;;::::0;-1:-1:-1;;;7323:73:0;;8599:2:1;7323:73:0::1;::::0;::::1;8581:21:1::0;8638:2;8618:18;;;8611:30;8677:34;8657:18;;;8650:62;-1:-1:-1;;;8728:18:1;;;8721:36;8774:19;;7323:73:0::1;8397:402:1::0;7323:73:0::1;7407:19;7417:8;7407:9;:19::i;14196:116::-:0;6990:6;;-1:-1:-1;;;;;6990:6:0;780:10;7052:23;7044:68;;;;-1:-1:-1;;;7044:68:0;;;;;;;:::i;:::-;14277:15:::1;:27:::0;;-1:-1:-1;;;;;;14277:27:0::1;-1:-1:-1::0;;;;;14277:27:0;;;::::1;::::0;;;::::1;::::0;;14196:116::o;5887:346::-;-1:-1:-1;;;;;5989:19:0;;5981:68;;;;-1:-1:-1;;;5981:68:0;;9006:2:1;5981:68:0;;;8988:21:1;9045:2;9025:18;;;9018:30;9084:34;9064:18;;;9057:62;-1:-1:-1;;;9135:18:1;;;9128:34;9179:19;;5981:68:0;8804:400:1;5981:68:0;-1:-1:-1;;;;;6068:21:0;;6060:68;;;;-1:-1:-1;;;6060:68:0;;9411:2:1;6060:68:0;;;9393:21:1;9450:2;9430:18;;;9423:30;9489:34;9469:18;;;9462:62;-1:-1:-1;;;9540:18:1;;;9533:32;9582:19;;6060:68:0;9209:398:1;6060:68:0;-1:-1:-1;;;;;6141:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6193:32;;160:25:1;;;6193:32:0;;133:18:1;6193:32:0;;;;;;;5887:346;;;:::o;9981:1112::-;10097:1;10088:6;:10;10080:64;;;;-1:-1:-1;;;10080:64:0;;9814:2:1;10080:64:0;;;9796:21:1;9853:2;9833:18;;;9826:30;9892:34;9872:18;;;9865:62;-1:-1:-1;;;9943:18:1;;;9936:39;9992:19;;10080:64:0;9612:405:1;10080:64:0;-1:-1:-1;;;;;10187:24:0;;;;;;:16;:24;;;;;;;;10186:25;:57;;;;-1:-1:-1;;;;;;10216:27:0;;;;;;:16;:27;;;;;;;;10215:28;10186:57;:70;;;;-1:-1:-1;10248:8:0;;-1:-1:-1;;;10248:8:0;;;;10247:9;10186:70;10183:392;;;10280:14;;-1:-1:-1;;;10280:14:0;;;;10272:49;;;;-1:-1:-1;;;10272:49:0;;10224:2:1;10272:49:0;;;10206:21:1;10263:2;10243:18;;;10236:30;-1:-1:-1;;;10282:18:1;;;10275:52;10344:18;;10272:49:0;10022:346:1;10272:49:0;10354:11;;10344:6;:21;;10336:63;;;;-1:-1:-1;;;10336:63:0;;10575:2:1;10336:63:0;;;10557:21:1;10614:2;10594:18;;;10587:30;10653:31;10633:18;;;10626:59;10702:18;;10336:63:0;10373:353:1;10336:63:0;10430:4;;-1:-1:-1;;;;;10417:17:0;;;10430:4;;10417:17;10414:150;;10495:15;;10485:6;10462:20;10472:9;-1:-1:-1;;;;;2836:18:0;2809:7;2836:18;;;;;;;;;;;;2735:127;10462:20;:29;;;;:::i;:::-;:48;;10454:94;;;;-1:-1:-1;;;10454:94:0;;10933:2:1;10454:94:0;;;10915:21:1;10972:2;10952:18;;;10945:30;11011:34;10991:18;;;10984:62;-1:-1:-1;;;11062:18:1;;;11055:31;11103:19;;10454:94:0;10731:397:1;10454:94:0;10627:8;;10587:11;;-1:-1:-1;;;10627:8:0;;;;;:36;;-1:-1:-1;;;;;;10639:24:0;;;;;;:16;:24;;;;;;;;10627:36;:67;;;-1:-1:-1;;;;;;10667:27:0;;;;;;:16;:27;;;;;;;;10627:67;10623:239;;;-1:-1:-1;10702:1:0;10623:239;;;10762:4;;-1:-1:-1;;;;;10749:17:0;;;10762:4;;10749:17;10746:104;;;10798:3;10783:12;;10774:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10768:33;;10746:104;;;10847:3;10836:8;;10827:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;10821:29;;10746:104;10888:11;;-1:-1:-1;;;10888:11:0;;;;:24;;;;-1:-1:-1;10904:8:0;;-1:-1:-1;;;10904:8:0;;;;10903:9;10888:24;:42;;;;-1:-1:-1;10926:4:0;;-1:-1:-1;;;;;10916:14:0;;;10926:4;;10916:14;;10888:42;:53;;;;;10940:1;10934:3;:7;10888:53;10884:72;;;10943:13;:11;:13::i;:::-;10969:48;10985:6;10993:9;11004:12;11013:3;11004:6;:12;:::i;:::-;10969:15;:48::i;:::-;11031:7;;11028:55;;11040:43;11056:6;11072:4;11079:3;11040:15;:43::i;:::-;10069:1024;9981:1112;;;:::o;12440:400::-;12530:16;;;12544:1;12530:16;;;;;;;;12506:21;;12530:16;;;;;;;;;;-1:-1:-1;12530:16:0;12506:40;;12575:4;12557;12562:1;12557:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12557:23:0;;;:7;;;;;;;;;;:23;;;;12601:6;;:13;;;-1:-1:-1;;;12601:13:0;;;;:6;;;;;:11;;:13;;;;;12557:7;;12601:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12591:4;12596:1;12591:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12591:23:0;;;:7;;;;;;;;;:23;12659:6;;12627:53;;12644:4;;12659:6;12668:11;12627:8;:53::i;:::-;12719:6;;:111;;-1:-1:-1;;;12719:111:0;;-1:-1:-1;;;;;12719:6:0;;;;:57;;:111;;12777:11;;12719:6;;12793:4;;12807;;12814:15;;12719:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12495:345;12440:400;:::o;6362:317::-;6477:6;6452:21;:31;;6444:73;;;;-1:-1:-1;;;6444:73:0;;12840:2:1;6444:73:0;;;12822:21:1;12879:2;12859:18;;;12852:30;12918:31;12898:18;;;12891:59;12967:18;;6444:73:0;12638:353:1;6444:73:0;6531:12;6549:9;-1:-1:-1;;;;;6549:14:0;6571:6;6549:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6530:52;;;6601:7;6593:78;;;;-1:-1:-1;;;6593:78:0;;13408:2:1;6593:78:0;;;13390:21:1;13447:2;13427:18;;;13420:30;13486:34;13466:18;;;13459:62;13557:28;13537:18;;;13530:56;13603:19;;6593:78:0;13206:422:1;7442:173:0;7517:6;;;-1:-1:-1;;;;;7534:17:0;;;-1:-1:-1;;;;;;7534:17:0;;;;;;;7567:40;;7517:6;;;7534:17;7517:6;;7567:40;;7498:16;;7567:40;7487:128;7442:173;:::o;11101:1329::-;9314:8;;-1:-1:-1;;;9314:8:0;;;;9309:104;;9339:8;:15;;-1:-1:-1;;;;9339:15:0;-1:-1:-1;;;9339:15:0;;;11194:4:::1;-1:-1:-1::0;2836:18:0;;;;;;;;;;;11150:50:::1;;11234:13;;11215:15;:32;11211:1212;;11274:19;11296:12;;11311:1;11296:16;;;;:::i;:::-;11274:38;;11327:32;11402:11;11380:9;:19;;;11362:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11327:86:::0;-1:-1:-1;11428:14:0::1;11445:42;11327:86:::0;11445:15;:42:::1;:::i;:::-;11428:59:::0;-1:-1:-1;11533:21:0::1;11575:24;11428:59:::0;11575:16:::1;:24::i;:::-;11620:20;11643:38;11667:14:::0;11643:21:::1;:38;:::i;:::-;11747:19:::0;;11620:61;;-1:-1:-1;11696:19:0::1;::::0;11733:33:::1;::::0;:11;:33:::1;:::i;:::-;11717:50;::::0;:12;:50:::1;:::i;:::-;11828:19:::0;;11696:71;;-1:-1:-1;11782:29:0::1;::::0;11814:33:::1;::::0;11696:71;11814:33:::1;:::i;:::-;11782:65:::0;-1:-1:-1;11871:25:0;;11868:170:::1;;11961:61;11974:24;12000:21;11961:12;:61::i;:::-;12099:9;:19:::0;12058:20:::1;::::0;12081:15:::1;:11:::0;12095:1:::1;12081:15;:::i;:::-;:37;;;;:::i;:::-;12058:60:::0;-1:-1:-1;12136:16:0;;12133:103:::1;;12180:15;::::0;12172:48:::1;::::0;-1:-1:-1;;;;;12180:15:0::1;12207:12:::0;12172:34:::1;:48::i;:::-;12299:13:::0;;12264:14:::1;::::0;12281:15:::1;:11:::0;12299:13:::1;12281:15;:::i;:::-;:31;;;;:::i;:::-;12264:48:::0;-1:-1:-1;12330:10:0;;12327:85:::1;;12368:9;::::0;12360:36:::1;::::0;-1:-1:-1;;;;;12368:9:0::1;12389:6:::0;12360:28:::1;:36::i;:::-;11249:1174;;;;;;;;;11211:1212;-1:-1:-1::0;9385:8:0;:16;;-1:-1:-1;;;;9385:16:0;;;11101:1329::o;4427:604::-;-1:-1:-1;;;;;4533:20:0;;4525:70;;;;-1:-1:-1;;;4525:70:0;;13835:2:1;4525:70:0;;;13817:21:1;13874:2;13854:18;;;13847:30;13913:34;13893:18;;;13886:62;-1:-1:-1;;;13964:18:1;;;13957:35;14009:19;;4525:70:0;13633:401:1;4525:70:0;-1:-1:-1;;;;;4614:23:0;;4606:71;;;;-1:-1:-1;;;4606:71:0;;14241:2:1;4606:71:0;;;14223:21:1;14280:2;14260:18;;;14253:30;14319:34;14299:18;;;14292:62;-1:-1:-1;;;14370:18:1;;;14363:33;14413:19;;4606:71:0;14039:399:1;4606:71:0;-1:-1:-1;;;;;4774:17:0;;4750:21;4774:17;;;;;;;;;;;4810:23;;;;4802:74;;;;-1:-1:-1;;;4802:74:0;;14645:2:1;4802:74:0;;;14627:21:1;14684:2;14664:18;;;14657:30;14723:34;14703:18;;;14696:62;-1:-1:-1;;;14774:18:1;;;14767:36;14820:19;;4802:74:0;14443:402:1;4802:74:0;4907:22;4923:6;4907:13;:22;:::i;:::-;-1:-1:-1;;;;;4887:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4940:20;;;;;;;;:30;;4964:6;;4887:9;4940:30;;4964:6;;4940:30;:::i;:::-;;;;;;;;5005:9;-1:-1:-1;;;;;4988:35:0;4997:6;-1:-1:-1;;;;;4988:35:0;;5016:6;4988:35;;;;160:25:1;;148:2;133:18;;14:177;4988:35:0;;;;;;;;4514:517;4427:604;;;:::o;12848:497::-;13028:6;;12996:53;;13013:4;;-1:-1:-1;;;;;13028:6:0;13037:11;12996:8;:53::i;:::-;13092:6;;13287:9;;13092:245;;-1:-1:-1;;;13092:245:0;;13155:4;13092:245;;;15191:34:1;15241:18;;;15234:34;;;13092:6:0;15284:18:1;;;15277:34;;;15327:18;;;15320:34;-1:-1:-1;;;;;13287:9:0;;;15370:19:1;;;15363:44;13311:15:0;15423:19:1;;;15416:35;13092:6:0;;;:22;;13122:9;;15125:19:1;;13092:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:316::-;875:6;883;891;944:2;932:9;923:7;919:23;915:32;912:52;;;960:1;957;950:12;912:52;-1:-1:-1;;983:23:1;;;1053:2;1038:18;;1025:32;;-1:-1:-1;1104:2:1;1089:18;;;1076:32;;798:316;-1:-1:-1;798:316:1:o;1119:131::-;-1:-1:-1;;;;;1194:31:1;;1184:42;;1174:70;;1240:1;1237;1230:12;1255:315;1323:6;1331;1384:2;1372:9;1363:7;1359:23;1355:32;1352:52;;;1400:1;1397;1390:12;1352:52;1439:9;1426:23;1458:31;1483:5;1458:31;:::i;:::-;1508:5;1560:2;1545:18;;;;1532:32;;-1:-1:-1;;;1255:315:1:o;1767:456::-;1844:6;1852;1860;1913:2;1901:9;1892:7;1888:23;1884:32;1881:52;;;1929:1;1926;1919:12;1881:52;1968:9;1955:23;1987:31;2012:5;1987:31;:::i;:::-;2037:5;-1:-1:-1;2094:2:1;2079:18;;2066:32;2107:33;2066:32;2107:33;:::i;:::-;1767:456;;2159:7;;-1:-1:-1;;;2213:2:1;2198:18;;;;2185:32;;1767:456::o;2417:403::-;2500:6;2508;2561:2;2549:9;2540:7;2536:23;2532:32;2529:52;;;2577:1;2574;2567:12;2529:52;2616:9;2603:23;2635:31;2660:5;2635:31;:::i;:::-;2685:5;-1:-1:-1;2742:2:1;2727:18;;2714:32;2755:33;2714:32;2755:33;:::i;:::-;2807:7;2797:17;;;2417:403;;;;;:::o;2825:180::-;2884:6;2937:2;2925:9;2916:7;2912:23;2908:32;2905:52;;;2953:1;2950;2943:12;2905:52;-1:-1:-1;2976:23:1;;2825:180;-1:-1:-1;2825:180:1:o;3010:247::-;3069:6;3122:2;3110:9;3101:7;3097:23;3093:32;3090:52;;;3138:1;3135;3128:12;3090:52;3177:9;3164:23;3196:31;3221:5;3196:31;:::i;:::-;3246:5;3010:247;-1:-1:-1;;;3010:247:1:o;4187:118::-;4273:5;4266:13;4259:21;4252:5;4249:32;4239:60;;4295:1;4292;4285:12;4310:241;4366:6;4419:2;4407:9;4398:7;4394:23;4390:32;4387:52;;;4435:1;4432;4425:12;4387:52;4474:9;4461:23;4493:28;4515:5;4493:28;:::i;4556:382::-;4621:6;4629;4682:2;4670:9;4661:7;4657:23;4653:32;4650:52;;;4698:1;4695;4688:12;4650:52;4737:9;4724:23;4756:31;4781:5;4756:31;:::i;:::-;4806:5;-1:-1:-1;4863:2:1;4848:18;;4835:32;4876:30;4835:32;4876:30;:::i;5166:380::-;5245:1;5241:12;;;;5288;;;5309:61;;5363:4;5355:6;5351:17;5341:27;;5309:61;5416:2;5408:6;5405:14;5385:18;5382:38;5379:161;;;5462:10;5457:3;5453:20;5450:1;5443:31;5497:4;5494:1;5487:15;5525:4;5522:1;5515:15;5379:161;;5166:380;;;:::o;5551:356::-;5753:2;5735:21;;;5772:18;;;5765:30;5831:34;5826:2;5811:18;;5804:62;5898:2;5883:18;;5551:356::o;5912:127::-;5973:10;5968:3;5964:20;5961:1;5954:31;6004:4;6001:1;5994:15;6028:4;6025:1;6018:15;6044:128;6084:3;6115:1;6111:6;6108:1;6105:13;6102:39;;;6121:18;;:::i;:::-;-1:-1:-1;6157:9:1;;6044:128::o;6586:125::-;6626:4;6654:1;6651;6648:8;6645:34;;;6659:18;;:::i;:::-;-1:-1:-1;6696:9:1;;6586:125::o;6716:168::-;6756:7;6822:1;6818;6814:6;6810:14;6807:1;6804:21;6799:1;6792:9;6785:17;6781:45;6778:71;;;6829:18;;:::i;:::-;-1:-1:-1;6869:9:1;;6716:168::o;6889:217::-;6929:1;6955;6945:132;;6999:10;6994:3;6990:20;6987:1;6980:31;7034:4;7031:1;7024:15;7062:4;7059:1;7052:15;6945:132;-1:-1:-1;7091:9:1;;6889:217::o;7741:245::-;7808:6;7861:2;7849:9;7840:7;7836:23;7832:32;7829:52;;;7877:1;7874;7867:12;7829:52;7909:9;7903:16;7928:28;7950:5;7928:28;:::i;11265:127::-;11326:10;11321:3;11317:20;11314:1;11307:31;11357:4;11354:1;11347:15;11381:4;11378:1;11371:15;11397:251;11467:6;11520:2;11508:9;11499:7;11495:23;11491:32;11488:52;;;11536:1;11533;11526:12;11488:52;11568:9;11562:16;11587:31;11612:5;11587:31;:::i;11653:980::-;11915:4;11963:3;11952:9;11948:19;11994:6;11983:9;11976:25;12020:2;12058:6;12053:2;12042:9;12038:18;12031:34;12101:3;12096:2;12085:9;12081:18;12074:31;12125:6;12160;12154:13;12191:6;12183;12176:22;12229:3;12218:9;12214:19;12207:26;;12268:2;12260:6;12256:15;12242:29;;12289:1;12299:195;12313:6;12310:1;12307:13;12299:195;;;12378:13;;-1:-1:-1;;;;;12374:39:1;12362:52;;12469:15;;;;12434:12;;;;12410:1;12328:9;12299:195;;;-1:-1:-1;;;;;;;12550:32:1;;;;12545:2;12530:18;;12523:60;-1:-1:-1;;;12614:3:1;12599:19;12592:35;12511:3;11653:980;-1:-1:-1;;;11653:980:1:o;15462:306::-;15550:6;15558;15566;15619:2;15607:9;15598:7;15594:23;15590:32;15587:52;;;15635:1;15632;15625:12;15587:52;15664:9;15658:16;15648:26;;15714:2;15703:9;15699:18;15693:25;15683:35;;15758:2;15747:9;15743:18;15737:25;15727:35;;15462:306;;;;;:::o

Swarm Source

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