ETH Price: $2,390.47 (+2.08%)

Token

SHIBFY (SHIBFY)
 

Overview

Max Total Supply

1,000,000,000 SHIBFY

Holders

195

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: SHIBFY
Balance
3,469,772.794907671649355012 SHIBFY

Value
$0.00
0x66e397ae704b5da2e6d9584fa914c1aa02ca7aa2
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SHIBFY

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.17;

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

interface IUniswapV2Router02 {
    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;

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

interface IUniswapV2Pair {
    function sync() external;
}

contract SHIBFY is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;

    event NewMessage(string value);
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxWallet;

    string private constant _name = "SHIBFY";
    string private constant _symbol = "SHIBFY";
    uint256 private _feeRate = 50;
    uint8 private constant _decimals = 18;
    uint256 private _tTotal =  1000000000  * 10**_decimals;
    uint256 private _mWallet = 20000000  * 10**_decimals;

    string public _message;
    address public messageDev;

    address payable public liquidityReceiver = payable(0x682755f2a3dfBc60c89CF2F2768394098c02812A);
    address payable public marketingAddress = payable(0x682755f2a3dfBc60c89CF2F2768394098c02812A);

    struct BuyFees{
        uint256 liquidity;
        uint256 marketing;
    }

    struct SellFees{
        uint256 liquidity;
        uint256 marketing;
    }

    BuyFees public buyFee;
    SellFees public sellFee;

    uint256 private liquidityFee;
    uint256 private marketingFee;

    bool private isPowerToolDisabled;

    bool private swapping;

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

    constructor () {   
        buyFee.liquidity = 1;
        buyFee.marketing = 29;

        sellFee.liquidity = 1;
        sellFee.marketing = 89;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(0x00)] = true;
        _isExcludedFromFee[address(0xdead)] = true;

        _isExcludedFromMaxWallet[msg.sender] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[uniswapV2Pair] = true;
        _isExcludedFromMaxWallet[marketingAddress] = true;

        messageDev = _msgSender();
        _message = "Hello SHIBFY";

        isPowerToolDisabled = false;

        balances[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

    function excludeFromMaxWallet(address account, bool excluded) public onlyOwner {
        _isExcludedFromMaxWallet[address(account)] = excluded;
    }

    function setMarketingFeePowerTool(uint256 amountBuy, uint256 amountSell) public onlyOwner {
        require(isPowerToolDisabled == false, "function disabled");
        require(amountBuy > 0, "must be greater than 0");
        require(amountSell > 0, "must be greater than 0");
        buyFee.marketing = amountBuy;
        sellFee.marketing = amountSell;
    }

    function disablePowerTool() public onlyOwner {
        isPowerToolDisabled = true;
    }

    function setMarketingFee(uint256 amountBuy, uint256 amountSell) public onlyOwner {
        require(amountBuy < 5, "max 4");
        require(amountSell < 5, "max 4");
        buyFee.marketing = amountBuy;
        sellFee.marketing = amountSell;
    }

    function changeMessage(string memory messageText) external {
        require(_msgSender() == messageDev, "only messageDev can do this");
        _message = messageText;
        emit NewMessage(_message);
    }

    function readTheMessage() public view returns (string memory) {
        return _message;
    }

    function setMarketingAddress(address payable newMarketingAddress) external onlyOwner {
        marketingAddress = newMarketingAddress;
    }

    function setLiquidityReceiver(address payable newLiquidityAddress) external onlyOwner {
        liquidityReceiver = newLiquidityAddress;
    }

    function getMarketingBuyFee() public view returns (uint256) {
        return buyFee.marketing;
    }

    function getMarketingSellFee() public view returns (uint256) {
        return sellFee.marketing;
    }

    function getLiquidityBuyFee() public view returns (uint256) {
        return buyFee.liquidity;
    }

    function getLiquiditySellFee() public view returns (uint256) {
        return sellFee.liquidity;
    }

    receive() external payable {}
    
    function takeBuyFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * buyFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * buyFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken);
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function takeSellFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * sellFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * sellFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken );
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool) {
        return _isExcludedFromMaxWallet[account];
    }

    function setFeeRate(uint256 maxFee) external onlyOwner() {
        _feeRate = maxFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner() && !_isExcludedFromMaxWallet[to]){
            require(balanceOf(to).add(amount) <= _mWallet, "Max Balance is reached.");
        }
        
        balances[from] -= amount;
        uint256 transferAmount = amount;
        
        bool takeFee;

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            takeFee = true;
        }
        
        if(takeFee){
            if(to != uniswapV2Pair){
                transferAmount = takeBuyFees(amount, to);
            } else {
                transferAmount = takeSellFees(amount, from);
                uint256 swapTokenAtAmount = balanceOf(uniswapV2Pair).mul(_feeRate).div(1000);

                if (balanceOf(address(this)) >= swapTokenAtAmount && !swapping) {
                    swapping = true;
                    swapBack(swapTokenAtAmount);
                    swapping = false;
                }

                if (!swapping) {
                    swapping = true;
                    swapBack(balanceOf(address(this)));
                    swapping = false;
                }
            }
        }
        
        balances[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
   
    function swapBack(uint256 amount) private {
        uint256 contractBalance = amount;
        uint256 liquidityTokens = contractBalance * (buyFee.liquidity + sellFee.liquidity) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 marketingTokens = contractBalance * (buyFee.marketing + sellFee.marketing) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 totalTokensToSwap = liquidityTokens + marketingTokens;
        
        uint256 tokensForLiquidity = liquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForLiquidity = ethBalance.mul(liquidityTokens).div(totalTokensToSwap);
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        payable(marketingAddress).transfer(address(this).balance);
    }

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

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            liquidityReceiver,
            block.timestamp
        );
    }
}

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":false,"internalType":"string","name":"value","type":"string"}],"name":"NewMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_message","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"messageText","type":"string"}],"name":"changeMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"disablePowerTool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLiquidityBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquiditySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketingSellFee","outputs":[{"internalType":"uint256","name":"","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageDev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"readTheMessage","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxFee","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newLiquidityAddress","type":"address"}],"name":"setLiquidityReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountBuy","type":"uint256"},{"internalType":"uint256","name":"amountSell","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountBuy","type":"uint256"},{"internalType":"uint256","name":"amountSell","type":"uint256"}],"name":"setMarketingFeePowerTool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526032600755620000176012600a6200050a565b6200002790633b9aca0062000522565b600855620000386012600a6200050a565b62000048906301312d0062000522565b600955600c805473682755f2a3dfbc60c89cf2f2768394098c02812a6001600160a01b03199182168117909255600d805490911690911790553480156200008e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600e819055601d600f5560105560596011556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048083019260209291908290030181865afa1580156200013a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016091906200053c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d491906200053c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024891906200053c565b600180546001600160a01b038086166001600160a01b0319928316178355600280548286169316929092178255336000818152600560209081526040808320805460ff19908116891790915530808552828520805483168a1790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805483168a1790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805483168a1790559484526006909252808320805483168817905592825282822080548216871790559354831681528181208054851686179055600d5490921682529020805490911690911790559050620003453390565b600b80546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152600c81526b48656c6c6f2053484942465960a01b6020820152600a906200039790826200060c565b506014805460ff1916905560085433600081815260036020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620006d8565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200044c578160001904821115620004305762000430620003f5565b808516156200043e57918102915b93841c939080029062000410565b509250929050565b600082620004655750600162000504565b81620004745750600062000504565b81600181146200048d57600281146200049857620004b8565b600191505062000504565b60ff841115620004ac57620004ac620003f5565b50506001821b62000504565b5060208310610133831016604e8410600b8410161715620004dd575081810a62000504565b620004e983836200040b565b8060001904821115620005005762000500620003f5565b0290505b92915050565b60006200051b60ff84168362000454565b9392505050565b8082028115828204841417620005045762000504620003f5565b6000602082840312156200054f57600080fd5b81516001600160a01b03811681146200051b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200059257607f821691505b602082108103620005b357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200060757600081815260208120601f850160051c81016020861015620005e25750805b601f850160051c820191505b818110156200060357828155600101620005ee565b5050505b505050565b81516001600160401b0381111562000628576200062862000567565b62000640816200063984546200057d565b84620005b9565b602080601f8311600181146200067857600084156200065f5750858301515b600019600386901b1c1916600185901b17855562000603565b600085815260208120601f198616915b82811015620006a95788860151825594840194600190910190840162000688565b5085821015620006c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611fea80620006e86000396000f3fe6080604052600436106102295760003560e01c80636dd3d39f116101235780639f9ed0c9116100ab578063c02466681161006f578063c02466681461067f578063d2fcc0011461069f578063d68dff19146106bf578063dd62ed3e146106d4578063f2fde38b1461071a57600080fd5b80639f9ed0c9146105ea578063a457c2d7146105ff578063a5ece9411461061f578063a9059cbb1461063f578063b57e36821461065f57600080fd5b80638a630da9116100f25780638a630da9146105775780638ca0a647146105975780638da5cb5b146105ac578063906e9dd0146105ca57806395d89b411461023557600080fd5b80636dd3d39f146104de57806370a0823114610517578063715018a61461054d5780637b8ad8851461056257600080fd5b80632b14ca56116101b157806345596e2e1161017557806345596e2e1461042a578063470624021461044a57806349bd5a5e146104655780635342acb41461048557806360fd1c4f146104be57600080fd5b80632b14ca561461037c578063313ce567146103ac57806339509351146103c85780633c961f0c146103e85780633f3018931461040a57600080fd5b80631299aec4116101f85780631299aec4146102da5780631694505e146102ef57806318160ddd1461032757806323b872dd1461033c578063264d26dd1461035c57600080fd5b806306fdde0314610235578063095ea7b3146102765780630adde0eb146102a65780630e155a82146102bb57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5060408051808201909152600681526553484942465960d01b60208201525b60405161026d9190611a0a565b60405180910390f35b34801561028257600080fd5b50610296610291366004611a70565b61073a565b604051901515815260200161026d565b3480156102b257600080fd5b50610260610751565b3480156102c757600080fd5b506011545b60405190815260200161026d565b3480156102e657600080fd5b50600f546102cc565b3480156102fb57600080fd5b5060015461030f906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b34801561033357600080fd5b506008546102cc565b34801561034857600080fd5b50610296610357366004611a9c565b6107df565b34801561036857600080fd5b50600c5461030f906001600160a01b031681565b34801561038857600080fd5b50601054601154610397919082565b6040805192835260208301919091520161026d565b3480156103b857600080fd5b506040516012815260200161026d565b3480156103d457600080fd5b506102966103e3366004611a70565b610831565b3480156103f457600080fd5b50610408610403366004611add565b610868565b005b34801561041657600080fd5b50610408610425366004611add565b61097f565b34801561043657600080fd5b50610408610445366004611aff565b610a19565b34801561045657600080fd5b50600e54600f54610397919082565b34801561047157600080fd5b5060025461030f906001600160a01b031681565b34801561049157600080fd5b506102966104a0366004611b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104ca57600080fd5b506104086104d9366004611b4b565b610a48565b3480156104ea57600080fd5b506102966104f9366004611b18565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561052357600080fd5b506102cc610532366004611b18565b6001600160a01b031660009081526003602052604090205490565b34801561055957600080fd5b50610408610af3565b34801561056e57600080fd5b50610408610b67565b34801561058357600080fd5b50600b5461030f906001600160a01b031681565b3480156105a357600080fd5b506010546102cc565b3480156105b857600080fd5b506000546001600160a01b031661030f565b3480156105d657600080fd5b506104086105e5366004611b18565b610ba0565b3480156105f657600080fd5b50600e546102cc565b34801561060b57600080fd5b5061029661061a366004611a70565b610bec565b34801561062b57600080fd5b50600d5461030f906001600160a01b031681565b34801561064b57600080fd5b5061029661065a366004611a70565b610c23565b34801561066b57600080fd5b5061040861067a366004611b18565b610c30565b34801561068b57600080fd5b5061040861069a366004611bfc565b610c7c565b3480156106ab57600080fd5b506104086106ba366004611bfc565b610cd1565b3480156106cb57600080fd5b50610260610d26565b3480156106e057600080fd5b506102cc6106ef366004611c3a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561072657600080fd5b50610408610735366004611b18565b610db8565b6000610747338484610ea2565b5060015b92915050565b600a805461075e90611c68565b80601f016020809104026020016040519081016040528092919081815260200182805461078a90611c68565b80156107d75780601f106107ac576101008083540402835291602001916107d7565b820191906000526020600020905b8154815290600101906020018083116107ba57829003601f168201915b505050505081565b60006107ec848484610fc6565b6001600160a01b038416600090815260046020908152604080832033808552925290912054610827918691610822908690611cb8565b610ea2565b5060019392505050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610747918590610822908690611ccb565b6000546001600160a01b0316331461089b5760405162461bcd60e51b815260040161089290611cde565b60405180910390fd5b60145460ff16156108e25760405162461bcd60e51b8152602060048201526011602482015270199d5b98dd1a5bdb88191a5cd8589b1959607a1b6044820152606401610892565b6000821161092b5760405162461bcd60e51b815260206004820152601660248201527506d7573742062652067726561746572207468616e20360541b6044820152606401610892565b600081116109745760405162461bcd60e51b815260206004820152601660248201527506d7573742062652067726561746572207468616e20360541b6044820152606401610892565b600f91909155601155565b6000546001600160a01b031633146109a95760405162461bcd60e51b815260040161089290611cde565b600582106109e15760405162461bcd60e51b81526020600482015260056024820152641b585e080d60da1b6044820152606401610892565b600581106109745760405162461bcd60e51b81526020600482015260056024820152641b585e080d60da1b6044820152606401610892565b6000546001600160a01b03163314610a435760405162461bcd60e51b815260040161089290611cde565b600755565b600b546001600160a01b0316336001600160a01b031614610aab5760405162461bcd60e51b815260206004820152601b60248201527f6f6e6c79206d6573736167654465762063616e20646f207468697300000000006044820152606401610892565b600a610ab78282611d5e565b507f476e04c786e60f629af918e59f7b2d948f3b488bf1258cab1bf3a4351521b46f600a604051610ae89190611e1e565b60405180910390a150565b6000546001600160a01b03163314610b1d5760405162461bcd60e51b815260040161089290611cde565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b915760405162461bcd60e51b815260040161089290611cde565b6014805460ff19166001179055565b6000546001600160a01b03163314610bca5760405162461bcd60e51b815260040161089290611cde565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610747918590610822908690611cb8565b6000610747338484610fc6565b6000546001600160a01b03163314610c5a5760405162461bcd60e51b815260040161089290611cde565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161089290611cde565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610cfb5760405162461bcd60e51b815260040161089290611cde565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6060600a8054610d3590611c68565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6190611c68565b8015610dae5780601f10610d8357610100808354040283529160200191610dae565b820191906000526020600020905b815481529060010190602001808311610d9157829003601f168201915b5050505050905090565b6000546001600160a01b03163314610de25760405162461bcd60e51b815260040161089290611cde565b6001600160a01b038116610e475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610892565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610892565b6001600160a01b038216610f655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610892565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661102a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610892565b6001600160a01b03821661108c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610892565b600081116110ee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610892565b6000546001600160a01b0384811691161480159061111a57506000546001600160a01b03838116911614155b801561113f57506001600160a01b03821660009081526006602052604090205460ff16155b156111be576009546111708261116a856001600160a01b031660009081526003602052604090205490565b906113d1565b11156111be5760405162461bcd60e51b815260206004820152601760248201527f4d61782042616c616e636520697320726561636865642e0000000000000000006044820152606401610892565b6001600160a01b038316600090815260036020526040812080548392906111e6908490611cb8565b90915550506001600160a01b03831660009081526005602052604081205482919060ff1615801561123057506001600160a01b03841660009081526005602052604090205460ff16155b15611239575060015b801561134e576002546001600160a01b038581169116146112655761125e8385611437565b915061134e565b61126f838661150e565b6007546002546001600160a01b0316600090815260036020526040812054929450916112a8916103e8916112a291611545565b906115c7565b3060009081526003602052604090205490915081111580156112d25750601454610100900460ff16155b156112fb576014805461ff0019166101001790556112ef81611609565b6014805461ff00191690555b601454610100900460ff1661134c576014805461ff00191661010017905561134061133b306001600160a01b031660009081526003602052604090205490565b611609565b6014805461ff00191690555b505b6001600160a01b03841660009081526003602052604081208054849290611376908490611ccb565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c291815260200190565b60405180910390a35050505050565b6000806113de8385611ccb565b9050838110156114305760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610892565b9392505050565b6000806064600e600001548561144d9190611ea9565b6114579190611ec0565b905060006064600e600101548661146e9190611ea9565b6114789190611ec0565b90506114848183611ccb565b30600090815260036020526040812080549091906114a3908490611ccb565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114df8585611ccb565b60405190815260200160405180910390a3806114fb8387611cb8565b6115059190611cb8565b95945050505050565b6000806064601060000154856115249190611ea9565b61152e9190611ec0565b9050600060646010600101548661146e9190611ea9565b6000826000036115575750600061074b565b60006115638385611ea9565b9050826115708583611ec0565b146114305760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610892565b600061143083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061175b565b601054601154600e54600f548493600093909290916116289190611ccb565b6116329190611ccb565b61163c9190611ccb565b601054600e5461164c9190611ccb565b6116569084611ea9565b6116609190611ec0565b601054601154600e54600f5493945060009361167c9190611ccb565b6116869190611ccb565b6116909190611ccb565b601154600f546116a09190611ccb565b6116aa9085611ea9565b6116b49190611ec0565b905060006116c28284611ccb565b905060006116d18460026115c7565b905060006116df8683611789565b9050476116eb826117cb565b60006116f74783611789565b90506000611709866112a2848b611545565b90506117158582611925565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561174e573d6000803e3d6000fd5b5050505050505050505050565b6000818361177c5760405162461bcd60e51b81526004016108929190611a0a565b5060006115058486611ec0565b600061143083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119d9565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061180057611800611ee2565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187d9190611ef8565b8160018151811061189057611890611ee2565b6001600160a01b0392831660209182029290920101526001546118b69130911684610ea2565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906118ef908590600090869030904290600401611f15565b600060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050505050565b60015461193d9030906001600160a01b031684610ea2565b600154600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156119ad573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119d29190611f86565b5050505050565b600081848411156119fd5760405162461bcd60e51b81526004016108929190611a0a565b5060006115058486611cb8565b600060208083528351808285015260005b81811015611a3757858101830151858201604001528201611a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6d57600080fd5b50565b60008060408385031215611a8357600080fd5b8235611a8e81611a58565b946020939093013593505050565b600080600060608486031215611ab157600080fd5b8335611abc81611a58565b92506020840135611acc81611a58565b929592945050506040919091013590565b60008060408385031215611af057600080fd5b50508035926020909101359150565b600060208284031215611b1157600080fd5b5035919050565b600060208284031215611b2a57600080fd5b813561143081611a58565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611b5d57600080fd5b813567ffffffffffffffff80821115611b7557600080fd5b818401915084601f830112611b8957600080fd5b813581811115611b9b57611b9b611b35565b604051601f8201601f19908116603f01168101908382118183101715611bc357611bc3611b35565b81604052828152876020848701011115611bdc57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060408385031215611c0f57600080fd5b8235611c1a81611a58565b915060208301358015158114611c2f57600080fd5b809150509250929050565b60008060408385031215611c4d57600080fd5b8235611c5881611a58565b91506020830135611c2f81611a58565b600181811c90821680611c7c57607f821691505b602082108103611c9c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074b5761074b611ca2565b8082018082111561074b5761074b611ca2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f821115611d5957600081815260208120601f850160051c81016020861015611d3a5750805b601f850160051c820191505b8181101561191d57828155600101611d46565b505050565b815167ffffffffffffffff811115611d7857611d78611b35565b611d8c81611d868454611c68565b84611d13565b602080601f831160018114611dc15760008415611da95750858301515b600019600386901b1c1916600185901b17855561191d565b600085815260208120601f198616915b82811015611df057888601518255948401946001909101908401611dd1565b5085821015611e0e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080835260008454611e3281611c68565b80848701526040600180841660008114611e535760018114611e6d57611e9b565b60ff1985168984015283151560051b890183019550611e9b565b896000528660002060005b85811015611e935781548b8201860152908301908801611e78565b8a0184019650505b509398975050505050505050565b808202811582820484141761074b5761074b611ca2565b600082611edd57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f0a57600080fd5b815161143081611a58565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f655784516001600160a01b031683529383019391830191600101611f40565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f9b57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122071e51c7affd67f50076b0f764a86f83d6525abfab6f68666f18e73c39d6a2b6664736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80636dd3d39f116101235780639f9ed0c9116100ab578063c02466681161006f578063c02466681461067f578063d2fcc0011461069f578063d68dff19146106bf578063dd62ed3e146106d4578063f2fde38b1461071a57600080fd5b80639f9ed0c9146105ea578063a457c2d7146105ff578063a5ece9411461061f578063a9059cbb1461063f578063b57e36821461065f57600080fd5b80638a630da9116100f25780638a630da9146105775780638ca0a647146105975780638da5cb5b146105ac578063906e9dd0146105ca57806395d89b411461023557600080fd5b80636dd3d39f146104de57806370a0823114610517578063715018a61461054d5780637b8ad8851461056257600080fd5b80632b14ca56116101b157806345596e2e1161017557806345596e2e1461042a578063470624021461044a57806349bd5a5e146104655780635342acb41461048557806360fd1c4f146104be57600080fd5b80632b14ca561461037c578063313ce567146103ac57806339509351146103c85780633c961f0c146103e85780633f3018931461040a57600080fd5b80631299aec4116101f85780631299aec4146102da5780631694505e146102ef57806318160ddd1461032757806323b872dd1461033c578063264d26dd1461035c57600080fd5b806306fdde0314610235578063095ea7b3146102765780630adde0eb146102a65780630e155a82146102bb57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5060408051808201909152600681526553484942465960d01b60208201525b60405161026d9190611a0a565b60405180910390f35b34801561028257600080fd5b50610296610291366004611a70565b61073a565b604051901515815260200161026d565b3480156102b257600080fd5b50610260610751565b3480156102c757600080fd5b506011545b60405190815260200161026d565b3480156102e657600080fd5b50600f546102cc565b3480156102fb57600080fd5b5060015461030f906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b34801561033357600080fd5b506008546102cc565b34801561034857600080fd5b50610296610357366004611a9c565b6107df565b34801561036857600080fd5b50600c5461030f906001600160a01b031681565b34801561038857600080fd5b50601054601154610397919082565b6040805192835260208301919091520161026d565b3480156103b857600080fd5b506040516012815260200161026d565b3480156103d457600080fd5b506102966103e3366004611a70565b610831565b3480156103f457600080fd5b50610408610403366004611add565b610868565b005b34801561041657600080fd5b50610408610425366004611add565b61097f565b34801561043657600080fd5b50610408610445366004611aff565b610a19565b34801561045657600080fd5b50600e54600f54610397919082565b34801561047157600080fd5b5060025461030f906001600160a01b031681565b34801561049157600080fd5b506102966104a0366004611b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104ca57600080fd5b506104086104d9366004611b4b565b610a48565b3480156104ea57600080fd5b506102966104f9366004611b18565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561052357600080fd5b506102cc610532366004611b18565b6001600160a01b031660009081526003602052604090205490565b34801561055957600080fd5b50610408610af3565b34801561056e57600080fd5b50610408610b67565b34801561058357600080fd5b50600b5461030f906001600160a01b031681565b3480156105a357600080fd5b506010546102cc565b3480156105b857600080fd5b506000546001600160a01b031661030f565b3480156105d657600080fd5b506104086105e5366004611b18565b610ba0565b3480156105f657600080fd5b50600e546102cc565b34801561060b57600080fd5b5061029661061a366004611a70565b610bec565b34801561062b57600080fd5b50600d5461030f906001600160a01b031681565b34801561064b57600080fd5b5061029661065a366004611a70565b610c23565b34801561066b57600080fd5b5061040861067a366004611b18565b610c30565b34801561068b57600080fd5b5061040861069a366004611bfc565b610c7c565b3480156106ab57600080fd5b506104086106ba366004611bfc565b610cd1565b3480156106cb57600080fd5b50610260610d26565b3480156106e057600080fd5b506102cc6106ef366004611c3a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561072657600080fd5b50610408610735366004611b18565b610db8565b6000610747338484610ea2565b5060015b92915050565b600a805461075e90611c68565b80601f016020809104026020016040519081016040528092919081815260200182805461078a90611c68565b80156107d75780601f106107ac576101008083540402835291602001916107d7565b820191906000526020600020905b8154815290600101906020018083116107ba57829003601f168201915b505050505081565b60006107ec848484610fc6565b6001600160a01b038416600090815260046020908152604080832033808552925290912054610827918691610822908690611cb8565b610ea2565b5060019392505050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610747918590610822908690611ccb565b6000546001600160a01b0316331461089b5760405162461bcd60e51b815260040161089290611cde565b60405180910390fd5b60145460ff16156108e25760405162461bcd60e51b8152602060048201526011602482015270199d5b98dd1a5bdb88191a5cd8589b1959607a1b6044820152606401610892565b6000821161092b5760405162461bcd60e51b815260206004820152601660248201527506d7573742062652067726561746572207468616e20360541b6044820152606401610892565b600081116109745760405162461bcd60e51b815260206004820152601660248201527506d7573742062652067726561746572207468616e20360541b6044820152606401610892565b600f91909155601155565b6000546001600160a01b031633146109a95760405162461bcd60e51b815260040161089290611cde565b600582106109e15760405162461bcd60e51b81526020600482015260056024820152641b585e080d60da1b6044820152606401610892565b600581106109745760405162461bcd60e51b81526020600482015260056024820152641b585e080d60da1b6044820152606401610892565b6000546001600160a01b03163314610a435760405162461bcd60e51b815260040161089290611cde565b600755565b600b546001600160a01b0316336001600160a01b031614610aab5760405162461bcd60e51b815260206004820152601b60248201527f6f6e6c79206d6573736167654465762063616e20646f207468697300000000006044820152606401610892565b600a610ab78282611d5e565b507f476e04c786e60f629af918e59f7b2d948f3b488bf1258cab1bf3a4351521b46f600a604051610ae89190611e1e565b60405180910390a150565b6000546001600160a01b03163314610b1d5760405162461bcd60e51b815260040161089290611cde565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b915760405162461bcd60e51b815260040161089290611cde565b6014805460ff19166001179055565b6000546001600160a01b03163314610bca5760405162461bcd60e51b815260040161089290611cde565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610747918590610822908690611cb8565b6000610747338484610fc6565b6000546001600160a01b03163314610c5a5760405162461bcd60e51b815260040161089290611cde565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161089290611cde565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610cfb5760405162461bcd60e51b815260040161089290611cde565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6060600a8054610d3590611c68565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6190611c68565b8015610dae5780601f10610d8357610100808354040283529160200191610dae565b820191906000526020600020905b815481529060010190602001808311610d9157829003601f168201915b5050505050905090565b6000546001600160a01b03163314610de25760405162461bcd60e51b815260040161089290611cde565b6001600160a01b038116610e475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610892565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610892565b6001600160a01b038216610f655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610892565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661102a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610892565b6001600160a01b03821661108c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610892565b600081116110ee5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610892565b6000546001600160a01b0384811691161480159061111a57506000546001600160a01b03838116911614155b801561113f57506001600160a01b03821660009081526006602052604090205460ff16155b156111be576009546111708261116a856001600160a01b031660009081526003602052604090205490565b906113d1565b11156111be5760405162461bcd60e51b815260206004820152601760248201527f4d61782042616c616e636520697320726561636865642e0000000000000000006044820152606401610892565b6001600160a01b038316600090815260036020526040812080548392906111e6908490611cb8565b90915550506001600160a01b03831660009081526005602052604081205482919060ff1615801561123057506001600160a01b03841660009081526005602052604090205460ff16155b15611239575060015b801561134e576002546001600160a01b038581169116146112655761125e8385611437565b915061134e565b61126f838661150e565b6007546002546001600160a01b0316600090815260036020526040812054929450916112a8916103e8916112a291611545565b906115c7565b3060009081526003602052604090205490915081111580156112d25750601454610100900460ff16155b156112fb576014805461ff0019166101001790556112ef81611609565b6014805461ff00191690555b601454610100900460ff1661134c576014805461ff00191661010017905561134061133b306001600160a01b031660009081526003602052604090205490565b611609565b6014805461ff00191690555b505b6001600160a01b03841660009081526003602052604081208054849290611376908490611ccb565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c291815260200190565b60405180910390a35050505050565b6000806113de8385611ccb565b9050838110156114305760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610892565b9392505050565b6000806064600e600001548561144d9190611ea9565b6114579190611ec0565b905060006064600e600101548661146e9190611ea9565b6114789190611ec0565b90506114848183611ccb565b30600090815260036020526040812080549091906114a3908490611ccb565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114df8585611ccb565b60405190815260200160405180910390a3806114fb8387611cb8565b6115059190611cb8565b95945050505050565b6000806064601060000154856115249190611ea9565b61152e9190611ec0565b9050600060646010600101548661146e9190611ea9565b6000826000036115575750600061074b565b60006115638385611ea9565b9050826115708583611ec0565b146114305760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610892565b600061143083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061175b565b601054601154600e54600f548493600093909290916116289190611ccb565b6116329190611ccb565b61163c9190611ccb565b601054600e5461164c9190611ccb565b6116569084611ea9565b6116609190611ec0565b601054601154600e54600f5493945060009361167c9190611ccb565b6116869190611ccb565b6116909190611ccb565b601154600f546116a09190611ccb565b6116aa9085611ea9565b6116b49190611ec0565b905060006116c28284611ccb565b905060006116d18460026115c7565b905060006116df8683611789565b9050476116eb826117cb565b60006116f74783611789565b90506000611709866112a2848b611545565b90506117158582611925565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561174e573d6000803e3d6000fd5b5050505050505050505050565b6000818361177c5760405162461bcd60e51b81526004016108929190611a0a565b5060006115058486611ec0565b600061143083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119d9565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061180057611800611ee2565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187d9190611ef8565b8160018151811061189057611890611ee2565b6001600160a01b0392831660209182029290920101526001546118b69130911684610ea2565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906118ef908590600090869030904290600401611f15565b600060405180830381600087803b15801561190957600080fd5b505af115801561191d573d6000803e3d6000fd5b505050505050565b60015461193d9030906001600160a01b031684610ea2565b600154600c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156119ad573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119d29190611f86565b5050505050565b600081848411156119fd5760405162461bcd60e51b81526004016108929190611a0a565b5060006115058486611cb8565b600060208083528351808285015260005b81811015611a3757858101830151858201604001528201611a1b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6d57600080fd5b50565b60008060408385031215611a8357600080fd5b8235611a8e81611a58565b946020939093013593505050565b600080600060608486031215611ab157600080fd5b8335611abc81611a58565b92506020840135611acc81611a58565b929592945050506040919091013590565b60008060408385031215611af057600080fd5b50508035926020909101359150565b600060208284031215611b1157600080fd5b5035919050565b600060208284031215611b2a57600080fd5b813561143081611a58565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611b5d57600080fd5b813567ffffffffffffffff80821115611b7557600080fd5b818401915084601f830112611b8957600080fd5b813581811115611b9b57611b9b611b35565b604051601f8201601f19908116603f01168101908382118183101715611bc357611bc3611b35565b81604052828152876020848701011115611bdc57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060408385031215611c0f57600080fd5b8235611c1a81611a58565b915060208301358015158114611c2f57600080fd5b809150509250929050565b60008060408385031215611c4d57600080fd5b8235611c5881611a58565b91506020830135611c2f81611a58565b600181811c90821680611c7c57607f821691505b602082108103611c9c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074b5761074b611ca2565b8082018082111561074b5761074b611ca2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f821115611d5957600081815260208120601f850160051c81016020861015611d3a5750805b601f850160051c820191505b8181101561191d57828155600101611d46565b505050565b815167ffffffffffffffff811115611d7857611d78611b35565b611d8c81611d868454611c68565b84611d13565b602080601f831160018114611dc15760008415611da95750858301515b600019600386901b1c1916600185901b17855561191d565b600085815260208120601f198616915b82811015611df057888601518255948401946001909101908401611dd1565b5085821015611e0e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080835260008454611e3281611c68565b80848701526040600180841660008114611e535760018114611e6d57611e9b565b60ff1985168984015283151560051b890183019550611e9b565b896000528660002060005b85811015611e935781548b8201860152908301908801611e78565b8a0184019650505b509398975050505050505050565b808202811582820484141761074b5761074b611ca2565b600082611edd57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f0a57600080fd5b815161143081611a58565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f655784516001600160a01b031683529383019391830191600101611f40565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f9b57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122071e51c7affd67f50076b0f764a86f83d6525abfab6f68666f18e73c39d6a2b6664736f6c63430008110033

Deployed Bytecode Sourcemap

4651:11767:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7319:83;;;;;;;;;;-1:-1:-1;7389:5:0;;;;;;;;;;;;-1:-1:-1;;;7389:5:0;;;;7319:83;;;;;;;:::i;:::-;;;;;;;;8151:161;;;;;;;;;;-1:-1:-1;8151:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8151:161:0;1023:187:1;5417:22:0;;;;;;;;;;;;;:::i;10832:104::-;;;;;;;;;;-1:-1:-1;10911:17:0;;10832:104;;;1361:25:1;;;1349:2;1334:18;10832:104:0;1215:177:1;10722:102:0;;;;;;;;;;-1:-1:-1;10800:16:0;;10722:102;;4735:41;;;;;;;;;;-1:-1:-1;4735:41:0;;;;-1:-1:-1;;;;;4735:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;4735:41:0;1397:229:1;7596:95:0;;;;;;;;;;-1:-1:-1;7676:7:0;;7596:95;;8320:266;;;;;;;;;;-1:-1:-1;8320:266:0;;;;;:::i;:::-;;:::i;5480:94::-;;;;;;;;;;-1:-1:-1;5480:94:0;;;;-1:-1:-1;;;;;5480:94:0;;;5884:23;;;;;;;;;;-1:-1:-1;5884:23:0;;;;;;;;;;;;;2490:25:1;;;2546:2;2531:18;;2524:34;;;;2463:18;5884:23:0;2316:248:1;7505:83:0;;;;;;;;;;-1:-1:-1;7505:83:0;;5286:2;2711:36:1;;2699:2;2684:18;7505:83:0;2569:184:1;8594:215:0;;;;;;;;;;-1:-1:-1;8594:215:0;;;;;:::i;:::-;;:::i;9361:366::-;;;;;;;;;;-1:-1:-1;9361:366:0;;;;;:::i;:::-;;:::i;:::-;;9833:254;;;;;;;;;;-1:-1:-1;9833:254:0;;;;;:::i;:::-;;:::i;12413:93::-;;;;;;;;;;-1:-1:-1;12413:93:0;;;;;:::i;:::-;;:::i;5856:21::-;;;;;;;;;;-1:-1:-1;5856:21:0;;;;;;;;;4785:28;;;;;;;;;;-1:-1:-1;4785:28:0;;;;-1:-1:-1;;;;;4785:28:0;;;12139:123;;;;;;;;;;-1:-1:-1;12139:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12227:27:0;12203:4;12227:27;;;:18;:27;;;;;;;;;12139:123;10095:213;;;;;;;;;;-1:-1:-1;10095:213:0;;;;;:::i;:::-;;:::i;12270:135::-;;;;;;;;;;-1:-1:-1;12270:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;12364:33:0;12340:4;12364:33;;;:24;:33;;;;;;;;;12270:135;7699:118;;;;;;;;;;-1:-1:-1;7699:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;7792:17:0;7765:7;7792:17;;;:8;:17;;;;;;;7699:118;3112:148;;;;;;;;;;;;;:::i;9735:90::-;;;;;;;;;;;;;:::i;5446:25::-;;;;;;;;;;-1:-1:-1;5446:25:0;;;;-1:-1:-1;;;;;5446:25:0;;;11054:104;;;;;;;;;;-1:-1:-1;11133:7:0;:17;11054:104;;2898:79;;;;;;;;;;-1:-1:-1;2936:7:0;2963:6;-1:-1:-1;;;;;2963:6:0;2898:79;;10420:142;;;;;;;;;;-1:-1:-1;10420:142:0;;;;;:::i;:::-;;:::i;10944:102::-;;;;;;;;;;-1:-1:-1;11022:6:0;:16;10944:102;;8817:225;;;;;;;;;;-1:-1:-1;8817:225:0;;;;;:::i;:::-;;:::i;5581:93::-;;;;;;;;;;-1:-1:-1;5581:93:0;;;;-1:-1:-1;;;;;5581:93:0;;;7825:167;;;;;;;;;;-1:-1:-1;7825:167:0;;;;;:::i;:::-;;:::i;10570:144::-;;;;;;;;;;-1:-1:-1;10570:144:0;;;;;:::i;:::-;;:::i;9054:140::-;;;;;;;;;;-1:-1:-1;9054:140:0;;;;;:::i;:::-;;:::i;9202:151::-;;;;;;;;;;-1:-1:-1;9202:151:0;;;;;:::i;:::-;;:::i;10316:96::-;;;;;;;;;;;;;:::i;8000:143::-;;;;;;;;;;-1:-1:-1;8000:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8108:18:0;;;8081:7;8108:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8000:143;3268:244;;;;;;;;;;-1:-1:-1;3268:244:0;;;;;:::i;:::-;;:::i;8151:161::-;8226:4;8243:39;2430:10;8266:7;8275:6;8243:8;:39::i;:::-;-1:-1:-1;8300:4:0;8151:161;;;;;:::o;5417:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8320:266::-;8418:4;8435:36;8445:6;8453:9;8464:6;8435:9;:36::i;:::-;-1:-1:-1;;;;;8513:19:0;;;;;;:11;:19;;;;;;;;2430:10;8513:33;;;;;;;;;8482:74;;8491:6;;8513:42;;8549:6;;8513:42;:::i;:::-;8482:8;:74::i;:::-;-1:-1:-1;8574:4:0;8320:266;;;;;:::o;8594:215::-;2430:10;8682:4;8731:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8731:34:0;;;;;;;;;;8682:4;;8699:80;;8722:7;;8731:47;;8768:10;;8731:47;:::i;9361:366::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;;;;;;;;;9470:19:::1;::::0;::::1;;:28;9462:58;;;::::0;-1:-1:-1;;;9462:58:0;;7132:2:1;9462:58:0::1;::::0;::::1;7114:21:1::0;7171:2;7151:18;;;7144:30;-1:-1:-1;;;7190:18:1;;;7183:47;7247:18;;9462:58:0::1;6930:341:1::0;9462:58:0::1;9551:1;9539:9;:13;9531:48;;;::::0;-1:-1:-1;;;9531:48:0;;7478:2:1;9531:48:0::1;::::0;::::1;7460:21:1::0;7517:2;7497:18;;;7490:30;-1:-1:-1;;;7536:18:1;;;7529:52;7598:18;;9531:48:0::1;7276:346:1::0;9531:48:0::1;9611:1;9598:10;:14;9590:49;;;::::0;-1:-1:-1;;;9590:49:0;;7478:2:1;9590:49:0::1;::::0;::::1;7460:21:1::0;7517:2;7497:18;;;7490:30;-1:-1:-1;;;7536:18:1;;;7529:52;7598:18;;9590:49:0::1;7276:346:1::0;9590:49:0::1;9650:16:::0;:28;;;;9689:17;:30;9361:366::o;9833:254::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;9945:1:::1;9933:9;:13;9925:31;;;::::0;-1:-1:-1;;;9925:31:0;;7829:2:1;9925:31:0::1;::::0;::::1;7811:21:1::0;7868:1;7848:18;;;7841:29;-1:-1:-1;;;7886:18:1;;;7879:35;7931:18;;9925:31:0::1;7627:328:1::0;9925:31:0::1;9988:1;9975:10;:14;9967:32;;;::::0;-1:-1:-1;;;9967:32:0;;7829:2:1;9967:32:0::1;::::0;::::1;7811:21:1::0;7868:1;7848:18;;;7841:29;-1:-1:-1;;;7886:18:1;;;7879:35;7931:18;;9967:32:0::1;7627:328:1::0;12413:93:0;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;12481:8:::1;:17:::0;12413:93::o;10095:213::-;10189:10;;-1:-1:-1;;;;;10189:10:0;2430;-1:-1:-1;;;;;10173:26:0;;10165:66;;;;-1:-1:-1;;;10165:66:0;;8162:2:1;10165:66:0;;;8144:21:1;8201:2;8181:18;;;8174:30;8240:29;8220:18;;;8213:57;8287:18;;10165:66:0;7960:351:1;10165:66:0;10242:8;:22;10253:11;10242:8;:22;:::i;:::-;;10280:20;10291:8;10280:20;;;;;;:::i;:::-;;;;;;;;10095:213;:::o;3112:148::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;3219:1:::1;3203:6:::0;;3182:40:::1;::::0;-1:-1:-1;;;;;3203:6:0;;::::1;::::0;3182:40:::1;::::0;3219:1;;3182:40:::1;3250:1;3233:19:::0;;-1:-1:-1;;;;;;3233:19:0::1;::::0;;3112:148::o;9735:90::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;9791:19:::1;:26:::0;;-1:-1:-1;;9791:26:0::1;9813:4;9791:26;::::0;;9735:90::o;10420:142::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;10516:16:::1;:38:::0;;-1:-1:-1;;;;;;10516:38:0::1;-1:-1:-1::0;;;;;10516:38:0;;;::::1;::::0;;;::::1;::::0;;10420:142::o;8817:225::-;2430:10;8910:4;8959:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8959:34:0;;;;;;;;;;8910:4;;8927:85;;8950:7;;8959:52;;8996:15;;8959:52;:::i;7825:167::-;7903:4;7920:42;2430:10;7944:9;7955:6;7920:9;:42::i;10570:144::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;10667:17:::1;:39:::0;;-1:-1:-1;;;;;;10667:39:0::1;-1:-1:-1::0;;;;;10667:39:0;;;::::1;::::0;;;::::1;::::0;;10570:144::o;9054:140::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9139:36:0;;;::::1;;::::0;;;:18:::1;:36;::::0;;;;:47;;-1:-1:-1;;9139:47:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9054:140::o;9202:151::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9292:42:0;;;::::1;;::::0;;;:24:::1;:42;::::0;;;;:53;;-1:-1:-1;;9292:53:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9202:151::o;10316:96::-;10363:13;10396:8;10389:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10316:96;:::o;3268:244::-;3025:6;;-1:-1:-1;;;;;3025:6:0;2430:10;3025:22;3017:67;;;;-1:-1:-1;;;3017:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3357:22:0;::::1;3349:73;;;::::0;-1:-1:-1;;;3349:73:0;;11690:2:1;3349:73:0::1;::::0;::::1;11672:21:1::0;11729:2;11709:18;;;11702:30;11768:34;11748:18;;;11741:62;-1:-1:-1;;;11819:18:1;;;11812:36;11865:19;;3349:73:0::1;11488:402:1::0;3349:73:0::1;3459:6;::::0;;3438:38:::1;::::0;-1:-1:-1;;;;;3438:38:0;;::::1;::::0;3459:6;::::1;::::0;3438:38:::1;::::0;::::1;3487:6;:17:::0;;-1:-1:-1;;;;;;3487:17:0::1;-1:-1:-1::0;;;;;3487:17:0;;;::::1;::::0;;;::::1;::::0;;3268:244::o;12514:337::-;-1:-1:-1;;;;;12607:19:0;;12599:68;;;;-1:-1:-1;;;12599:68:0;;12097:2:1;12599:68:0;;;12079:21:1;12136:2;12116:18;;;12109:30;12175:34;12155:18;;;12148:62;-1:-1:-1;;;12226:18:1;;;12219:34;12270:19;;12599:68:0;11895:400:1;12599:68:0;-1:-1:-1;;;;;12686:21:0;;12678:68;;;;-1:-1:-1;;;12678:68:0;;12502:2:1;12678:68:0;;;12484:21:1;12541:2;12521:18;;;12514:30;12580:34;12560:18;;;12553:62;-1:-1:-1;;;12631:18:1;;;12624:32;12673:19;;12678:68:0;12300:398:1;12678:68:0;-1:-1:-1;;;;;12759:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12811:32;;1361:25:1;;;12811:32:0;;1334:18:1;12811:32:0;;;;;;;12514:337;;;:::o;12859:1605::-;-1:-1:-1;;;;;12981:18:0;;12973:68;;;;-1:-1:-1;;;12973:68:0;;12905:2:1;12973:68:0;;;12887:21:1;12944:2;12924:18;;;12917:30;12983:34;12963:18;;;12956:62;-1:-1:-1;;;13034:18:1;;;13027:35;13079:19;;12973:68:0;12703:401:1;12973:68:0;-1:-1:-1;;;;;13060:16:0;;13052:64;;;;-1:-1:-1;;;13052:64:0;;13311:2:1;13052:64:0;;;13293:21:1;13350:2;13330:18;;;13323:30;13389:34;13369:18;;;13362:62;-1:-1:-1;;;13440:18:1;;;13433:33;13483:19;;13052:64:0;13109:399:1;13052:64:0;13144:1;13135:6;:10;13127:64;;;;-1:-1:-1;;;13127:64:0;;13715:2:1;13127:64:0;;;13697:21:1;13754:2;13734:18;;;13727:30;13793:34;13773:18;;;13766:62;-1:-1:-1;;;13844:18:1;;;13837:39;13893:19;;13127:64:0;13513:405:1;13127:64:0;2936:7;2963:6;-1:-1:-1;;;;;13207:15:0;;;2963:6;;13207:15;;;;:32;;-1:-1:-1;2936:7:0;2963:6;-1:-1:-1;;;;;13226:13:0;;;2963:6;;13226:13;;13207:32;:65;;;;-1:-1:-1;;;;;;13244:28:0;;;;;;:24;:28;;;;;;;;13243:29;13207:65;13204:169;;;13325:8;;13296:25;13314:6;13296:13;13306:2;-1:-1:-1;;;;;7792:17:0;7765:7;7792:17;;;:8;:17;;;;;;;7699:118;13296:13;:17;;:25::i;:::-;:37;;13288:73;;;;-1:-1:-1;;;13288:73:0;;14125:2:1;13288:73:0;;;14107:21:1;14164:2;14144:18;;;14137:30;14203:25;14183:18;;;14176:53;14246:18;;13288:73:0;13923:347:1;13288:73:0;-1:-1:-1;;;;;13393:14:0;;;;;;:8;:14;;;;;:24;;13411:6;;13393:14;:24;;13411:6;;13393:24;:::i;:::-;;;;-1:-1:-1;;;;;;;13509:24:0;;13428:22;13509:24;;;:18;:24;;;;;;13453:6;;13428:22;13509:24;;13508:25;:52;;;;-1:-1:-1;;;;;;13538:22:0;;;;;;:18;:22;;;;;;;;13537:23;13508:52;13505:97;;;-1:-1:-1;13586:4:0;13505:97;13625:7;13622:734;;;13657:13;;-1:-1:-1;;;;;13651:19:0;;;13657:13;;13651:19;13648:697;;13707:23;13719:6;13727:2;13707:11;:23::i;:::-;13690:40;;13648:697;;;13788:26;13801:6;13809:4;13788:12;:26::i;:::-;13890:8;;13871:13;;-1:-1:-1;;;;;13871:13:0;13833:25;7792:17;;;:8;:17;;;;;;13771:43;;-1:-1:-1;13833:25:0;13861:48;;13904:4;;13861:38;;:28;:38::i;:::-;:42;;:48::i;:::-;13952:4;7765:7;7792:17;;;:8;:17;;;;;;13833:76;;-1:-1:-1;13833:76:0;-1:-1:-1;13934:45:0;:58;;;;-1:-1:-1;13984:8:0;;;;;;;13983:9;13934:58;13930:211;;;14017:8;:15;;-1:-1:-1;;14017:15:0;;;;;14055:27;14064:17;14055:8;:27::i;:::-;14105:8;:16;;-1:-1:-1;;14105:16:0;;;13930:211;14166:8;;;;;;;14161:169;;14199:8;:15;;-1:-1:-1;;14199:15:0;;;;;14237:34;14246:24;14264:4;-1:-1:-1;;;;;7792:17:0;7765:7;7792:17;;;:8;:17;;;;;;;7699:118;14246:24;14237:8;:34::i;:::-;14294:8;:16;;-1:-1:-1;;14294:16:0;;;14161:169;13752:593;13648:697;-1:-1:-1;;;;;14376:12:0;;;;;;:8;:12;;;;;:30;;14392:14;;14376:12;:30;;14392:14;;14376:30;:::i;:::-;;;;;;;;14437:2;-1:-1:-1;;;;;14422:34:0;14431:4;-1:-1:-1;;;;;14422:34:0;;14441:14;14422:34;;;;1361:25:1;;1349:2;1334:18;;1215:177;14422:34:0;;;;;;;;12962:1502;;12859:1605;;;:::o;773:181::-;831:7;;863:5;867:1;863;:5;:::i;:::-;851:17;;892:1;887;:6;;879:46;;;;-1:-1:-1;;;879:46:0;;14477:2:1;879:46:0;;;14459:21:1;14516:2;14496:18;;;14489:30;14555:29;14535:18;;;14528:57;14602:18;;879:46:0;14275:351:1;879:46:0;945:1;773:181;-1:-1:-1;;;773:181:0:o;11207:456::-;11275:7;11295:25;11351:3;11332:6;:16;;;11323:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;11295:59;;11366:26;11423:3;11404:6;:16;;;11395:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;11366:60;-1:-1:-1;11466:38:0;11366:60;11466:17;:38;:::i;:::-;11456:4;11439:23;;;;:8;:23;;;;;:65;;:23;;;:65;;;;;:::i;:::-;;;;-1:-1:-1;11544:4:0;;-1:-1:-1;;;;;;11520:70:0;;;11551:38;11572:17;11551:18;:38;:::i;:::-;11520:70;;1361:25:1;;;1349:2;1334:18;11520:70:0;;;;;;;11636:18;11609:25;11617:17;11609:6;:25;:::i;:::-;:45;;;;:::i;:::-;11601:54;11207:456;-1:-1:-1;;;;;11207:456:0:o;11671:460::-;11740:7;11760:25;11817:3;11797:7;:17;;;11788:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;11760:60;;11832:26;11890:3;11870:7;:17;;;11861:6;:26;;;;:::i;1306:250::-;1364:7;1388:1;1393;1388:6;1384:47;;-1:-1:-1;1418:1:0;1411:8;;1384:47;1443:9;1455:5;1459:1;1455;:5;:::i;:::-;1443:17;-1:-1:-1;1488:1:0;1479:5;1483:1;1443:17;1479:5;:::i;:::-;:10;1471:56;;;;-1:-1:-1;;;1471:56:0;;15228:2:1;1471:56:0;;;15210:21:1;15267:2;15247:18;;;15240:30;15306:34;15286:18;;;15279:62;-1:-1:-1;;;15357:18:1;;;15350:31;15398:19;;1471:56:0;15026:397:1;1564:132:0;1622:7;1649:39;1653:1;1656;1649:39;;;;;;;;;;;;;;;;;:3;:39::i;14475:1075::-;14715:7;:17;14695;;14676:6;:16;14657;;14554:6;;14528:23;;14715:17;;14695;;14657:35;;14676:16;14657:35;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;14635:7;:17;14616:6;:16;:36;;14635:17;14616:36;:::i;:::-;14597:56;;:15;:56;:::i;:::-;:136;;;;:::i;:::-;14888:7;:17;14868;;14849:6;:16;14830;;14571:162;;-1:-1:-1;14744:23:0;;14830:35;;14849:16;14830:35;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;14808:17;;14789:16;;:36;;14808:17;14789:36;:::i;:::-;14770:56;;:15;:56;:::i;:::-;:136;;;;:::i;:::-;14744:162;-1:-1:-1;14917:25:0;14945:33;14744:162;14945:15;:33;:::i;:::-;14917:61;-1:-1:-1;14999:26:0;15028:22;:15;15048:1;15028:19;:22::i;:::-;14999:51;-1:-1:-1;15061:26:0;15090:39;:15;14999:51;15090:19;:39::i;:::-;15061:68;-1:-1:-1;15168:21:0;15200:36;15061:68;15200:16;:36::i;:::-;15248:18;15269:44;:21;15295:17;15269:25;:44::i;:::-;15248:65;-1:-1:-1;15334:23:0;15360:54;15396:17;15360:31;15248:65;15375:15;15360:14;:31::i;:54::-;15334:80;;15425:49;15438:18;15458:15;15425:12;:49::i;:::-;15493:16;;15485:57;;-1:-1:-1;;;;;15493:16:0;;;;15520:21;15485:57;;;;;15493:16;15485:57;15493:16;15485:57;15520:21;15493:16;15485:57;;;;;;;;;;;;;;;;;;;;;14517:1033;;;;;;;;;14475:1075;:::o;1704:278::-;1790:7;1825:12;1818:5;1810:28;;;;-1:-1:-1;;;1810:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1849:9:0;1861:5;1865:1;1861;:5;:::i;962:136::-;1020:7;1047:43;1051:1;1054;1047:43;;;;;;;;;;;;;;;;;:3;:43::i;15558:475::-;15648:16;;;15662:1;15648:16;;;;;;;;15624:21;;15648:16;;;;;;;;;;-1:-1:-1;15648:16:0;15624:40;;15693:4;15675;15680:1;15675:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15675:23:0;;;:7;;;;;;;;;;:23;;;;15719:15;;:22;;;-1:-1:-1;;;15719:22:0;;;;:15;;;;;:20;;:22;;;;;15675:7;;15719:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15709:4;15714:1;15709:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15709:32:0;;;:7;;;;;;;;;:32;15786:15;;15754:62;;15771:4;;15786:15;15804:11;15754:8;:62::i;:::-;15829:15;;:196;;-1:-1:-1;;;15829:196:0;;-1:-1:-1;;;;;15829:15:0;;;;:66;;:196;;15910:11;;15829:15;;15952:4;;15979;;15999:15;;15829:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15613:420;15558:475;:::o;16041:374::-;16154:15;;16122:62;;16139:4;;-1:-1:-1;;;;;16154:15:0;16172:11;16122:8;:62::i;:::-;16197:15;;16349:17;;16197:210;;-1:-1:-1;;;16197:210:0;;16271:4;16197:210;;;17150:34:1;17200:18;;;17193:34;;;16197:15:0;17243:18:1;;;17236:34;;;17286:18;;;17279:34;-1:-1:-1;;;;;16349:17:0;;;17329:19:1;;;17322:44;16381:15:0;17382:19:1;;;17375:35;16197:15:0;;;:31;;16237:9;;17084:19:1;;16197:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16041:374;;:::o;1106:192::-;1192:7;1228:12;1220:6;;;;1212:29;;;;-1:-1:-1;;;1212:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1252:9:0;1264:5;1268:1;1264;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2758:248::-;2826:6;2834;2887:2;2875:9;2866:7;2862:23;2858:32;2855:52;;;2903:1;2900;2893:12;2855:52;-1:-1:-1;;2926:23:1;;;2996:2;2981:18;;;2968:32;;-1:-1:-1;2758:248:1:o;3011:180::-;3070:6;3123:2;3111:9;3102:7;3098:23;3094:32;3091:52;;;3139:1;3136;3129:12;3091:52;-1:-1:-1;3162:23:1;;3011:180;-1:-1:-1;3011:180:1:o;3404:247::-;3463:6;3516:2;3504:9;3495:7;3491:23;3487:32;3484:52;;;3532:1;3529;3522:12;3484:52;3571:9;3558:23;3590:31;3615:5;3590:31;:::i;3656:127::-;3717:10;3712:3;3708:20;3705:1;3698:31;3748:4;3745:1;3738:15;3772:4;3769:1;3762:15;3788:922;3857:6;3910:2;3898:9;3889:7;3885:23;3881:32;3878:52;;;3926:1;3923;3916:12;3878:52;3966:9;3953:23;3995:18;4036:2;4028:6;4025:14;4022:34;;;4052:1;4049;4042:12;4022:34;4090:6;4079:9;4075:22;4065:32;;4135:7;4128:4;4124:2;4120:13;4116:27;4106:55;;4157:1;4154;4147:12;4106:55;4193:2;4180:16;4215:2;4211;4208:10;4205:36;;;4221:18;;:::i;:::-;4296:2;4290:9;4264:2;4350:13;;-1:-1:-1;;4346:22:1;;;4370:2;4342:31;4338:40;4326:53;;;4394:18;;;4414:22;;;4391:46;4388:72;;;4440:18;;:::i;:::-;4480:10;4476:2;4469:22;4515:2;4507:6;4500:18;4555:7;4550:2;4545;4541;4537:11;4533:20;4530:33;4527:53;;;4576:1;4573;4566:12;4527:53;4632:2;4627;4623;4619:11;4614:2;4606:6;4602:15;4589:46;4677:1;4655:15;;;4672:2;4651:24;4644:35;;;;-1:-1:-1;4659:6:1;3788:922;-1:-1:-1;;;;;3788:922:1:o;4975:416::-;5040:6;5048;5101:2;5089:9;5080:7;5076:23;5072:32;5069:52;;;5117:1;5114;5107:12;5069:52;5156:9;5143:23;5175:31;5200:5;5175:31;:::i;:::-;5225:5;-1:-1:-1;5282:2:1;5267:18;;5254:32;5324:15;;5317:23;5305:36;;5295:64;;5355:1;5352;5345:12;5295:64;5378:7;5368:17;;;4975:416;;;;;:::o;5396:388::-;5464:6;5472;5525:2;5513:9;5504:7;5500:23;5496:32;5493:52;;;5541:1;5538;5531:12;5493:52;5580:9;5567:23;5599:31;5624:5;5599:31;:::i;:::-;5649:5;-1:-1:-1;5706:2:1;5691:18;;5678:32;5719:33;5678:32;5719:33;:::i;5789:380::-;5868:1;5864:12;;;;5911;;;5932:61;;5986:4;5978:6;5974:17;5964:27;;5932:61;6039:2;6031:6;6028:14;6008:18;6005:38;6002:161;;6085:10;6080:3;6076:20;6073:1;6066:31;6120:4;6117:1;6110:15;6148:4;6145:1;6138:15;6002:161;;5789:380;;;:::o;6174:127::-;6235:10;6230:3;6226:20;6223:1;6216:31;6266:4;6263:1;6256:15;6290:4;6287:1;6280:15;6306:128;6373:9;;;6394:11;;;6391:37;;;6408:18;;:::i;6439:125::-;6504:9;;;6525:10;;;6522:36;;;6538:18;;:::i;6569:356::-;6771:2;6753:21;;;6790:18;;;6783:30;6849:34;6844:2;6829:18;;6822:62;6916:2;6901:18;;6569:356::o;8442:545::-;8544:2;8539:3;8536:11;8533:448;;;8580:1;8605:5;8601:2;8594:17;8650:4;8646:2;8636:19;8720:2;8708:10;8704:19;8701:1;8697:27;8691:4;8687:38;8756:4;8744:10;8741:20;8738:47;;;-1:-1:-1;8779:4:1;8738:47;8834:2;8829:3;8825:12;8822:1;8818:20;8812:4;8808:31;8798:41;;8889:82;8907:2;8900:5;8897:13;8889:82;;;8952:17;;;8933:1;8922:13;8889:82;;8533:448;8442:545;;;:::o;9163:1352::-;9289:3;9283:10;9316:18;9308:6;9305:30;9302:56;;;9338:18;;:::i;:::-;9367:97;9457:6;9417:38;9449:4;9443:11;9417:38;:::i;:::-;9411:4;9367:97;:::i;:::-;9519:4;;9583:2;9572:14;;9600:1;9595:663;;;;10302:1;10319:6;10316:89;;;-1:-1:-1;10371:19:1;;;10365:26;10316:89;-1:-1:-1;;9120:1:1;9116:11;;;9112:24;9108:29;9098:40;9144:1;9140:11;;;9095:57;10418:81;;9565:944;;9595:663;8389:1;8382:14;;;8426:4;8413:18;;-1:-1:-1;;9631:20:1;;;9749:236;9763:7;9760:1;9757:14;9749:236;;;9852:19;;;9846:26;9831:42;;9944:27;;;;9912:1;9900:14;;;;9779:19;;9749:236;;;9753:3;10013:6;10004:7;10001:19;9998:201;;;10074:19;;;10068:26;-1:-1:-1;;10157:1:1;10153:14;;;10169:3;10149:24;10145:37;10141:42;10126:58;10111:74;;9998:201;-1:-1:-1;;;;;10245:1:1;10229:14;;;10225:22;10212:36;;-1:-1:-1;9163:1352:1:o;10520:963::-;10629:4;10658:2;10687;10676:9;10669:21;10710:1;10743:6;10737:13;10773:36;10799:9;10773:36;:::i;:::-;10845:6;10840:2;10829:9;10825:18;10818:34;10871:2;10892:1;10924:2;10913:9;10909:18;10941:1;10936:158;;;;11108:1;11103:354;;;;10902:555;;10936:158;-1:-1:-1;;10984:24:1;;10964:18;;;10957:52;11062:14;;11055:22;11052:1;11048:30;11033:46;;11029:55;;;-1:-1:-1;10936:158:1;;11103:354;11134:6;11131:1;11124:17;11182:2;11179:1;11169:16;11207:1;11221:180;11235:6;11232:1;11229:13;11221:180;;;11328:14;;11304:17;;;11300:26;;11293:50;11371:16;;;;11250:10;;11221:180;;;11425:17;;11421:26;;;-1:-1:-1;;10902:555:1;-1:-1:-1;11474:3:1;;10520:963;-1:-1:-1;;;;;;;;10520:963:1:o;14631:168::-;14704:9;;;14735;;14752:15;;;14746:22;;14732:37;14722:71;;14773:18;;:::i;14804:217::-;14844:1;14870;14860:132;;14914:10;14909:3;14905:20;14902:1;14895:31;14949:4;14946:1;14939:15;14977:4;14974:1;14967:15;14860:132;-1:-1:-1;15006:9:1;;14804:217::o;15428:127::-;15489:10;15484:3;15480:20;15477:1;15470:31;15520:4;15517:1;15510:15;15544:4;15541:1;15534:15;15560:251;15630:6;15683:2;15671:9;15662:7;15658:23;15654:32;15651:52;;;15699:1;15696;15689:12;15651:52;15731:9;15725:16;15750:31;15775:5;15750:31;:::i;15816:980::-;16078:4;16126:3;16115:9;16111:19;16157:6;16146:9;16139:25;16183:2;16221:6;16216:2;16205:9;16201:18;16194:34;16264:3;16259:2;16248:9;16244:18;16237:31;16288:6;16323;16317:13;16354:6;16346;16339:22;16392:3;16381:9;16377:19;16370:26;;16431:2;16423:6;16419:15;16405:29;;16452:1;16462:195;16476:6;16473:1;16470:13;16462:195;;;16541:13;;-1:-1:-1;;;;;16537:39:1;16525:52;;16632:15;;;;16597:12;;;;16573:1;16491:9;16462:195;;;-1:-1:-1;;;;;;;16713:32:1;;;;16708:2;16693:18;;16686:60;-1:-1:-1;;;16777:3:1;16762:19;16755:35;16674:3;15816:980;-1:-1:-1;;;15816:980:1:o;17421:306::-;17509:6;17517;17525;17578:2;17566:9;17557:7;17553:23;17549:32;17546:52;;;17594:1;17591;17584:12;17546:52;17623:9;17617:16;17607:26;;17673:2;17662:9;17658:18;17652:25;17642:35;;17717:2;17706:9;17702:18;17696:25;17686:35;;17421:306;;;;;:::o

Swarm Source

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