ETH Price: $2,671.18 (+9.57%)
Gas: 4 Gwei

Token

Belka Melka ($BM)
 

Overview

Max Total Supply

10,000,000 $BM

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
48,015 $BM

Value
$0.00
0xa1ff458dc0b5906a4f548a4f661d8f6a0439a824
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:
BELKAMELKA

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-29
*/

pragma solidity 0.8.12;

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

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


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

    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    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;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    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;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

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

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 50_000 * 10e18;
    uint256 public maxTxAmount = 50_000 * 10**18;
    uint256 public maxWalletAmount = 100_000 * 10**18;
    
    address public marketingWallet = 0x290Ccf02C6110A784d8DfF04cd5285fcF1B1182a;
    address public devWallet = 0x290Ccf02C6110A784d8DfF04cd5285fcF1B1182a;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(0,1,2);
    Taxes public sellTaxes = Taxes(0,1,2);
    uint256 public totTax = 3;
    uint256 public totSellTax = 3;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) public isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Belka Melka", unicode"$BM") {
        _mint(msg.sender, 1e7 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

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

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

        uint256 fee;
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

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

    }

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

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


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

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

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

    }

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

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

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

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

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        require(_marketing + _liquidity + _dev <= 25, "Max fee is 25%");
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        require(_marketing + _liquidity + _dev <= 100, "Max fee is 25%");
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
    function setIsBot(address account, bool state) external onlyOwner{
        isBot[account] = state;
    }

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

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

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

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

    // fallbacks
    receive() external payable {}
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","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":"isBot","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006009556969e10de76676d0800000600a55690a968163f0a57b400000600b5569152d02c7e14af6800000600c5573290ccf02c6110a784d8dff04cd5285fcf1b1182a600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073290ccf02c6110a784d8dff04cd5285fcf1b1182a600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060008152602001600181526020016002815250600f600082015181600001556020820151816001015560408201518160020155505060405180606001604052806000815260200160018152602001600281525060126000820151816000015560208201518160010155604082015181600201555050600360155560036016553480156200017457600080fd5b506040518060400160405280600b81526020017f42656c6b61204d656c6b610000000000000000000000000000000000000000008152506040518060400160405280600381526020017f24424d00000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001f992919062000865565b5080600490805190602001906200021292919062000865565b50505062000235620002296200062460201b60201c565b6200062c60201b60201c565b62000274336200024a620006f260201b60201c565b600a62000258919062000aaf565b6298968062000268919062000b00565b620006fb60201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000359919062000bcb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000bcb565b6040518363ffffffff1660e01b81526004016200040692919062000c0e565b6020604051808303816000875af115801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c919062000bcb565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000dae565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200076e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007659062000c9c565b60405180910390fd5b62000782600083836200086060201b60201c565b806002600082825462000796919062000cbe565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007ed919062000cbe565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000854919062000d2c565b60405180910390a35050565b505050565b828054620008739062000d78565b90600052602060002090601f016020900481019282620008975760008555620008e3565b82601f10620008b257805160ff1916838001178555620008e3565b82800160010185558215620008e3579182015b82811115620008e2578251825591602001919060010190620008c5565b5b509050620008f29190620008f6565b5090565b5b8082111562000911576000816000905550600101620008f7565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009a3578086048111156200097b576200097a62000915565b5b60018516156200098b5780820291505b80810290506200099b8562000944565b94506200095b565b94509492505050565b600082620009be576001905062000a91565b81620009ce576000905062000a91565b8160018114620009e75760028114620009f25762000a28565b600191505062000a91565b60ff84111562000a075762000a0662000915565b5b8360020a91508482111562000a215762000a2062000915565b5b5062000a91565b5060208310610133831016604e8410600b841016171562000a625782820a90508381111562000a5c5762000a5b62000915565b5b62000a91565b62000a71848484600162000951565b9250905081840481111562000a8b5762000a8a62000915565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000abc8262000a98565b915062000ac98362000aa2565b925062000af87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009ac565b905092915050565b600062000b0d8262000a98565b915062000b1a8362000a98565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b565762000b5562000915565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b938262000b66565b9050919050565b62000ba58162000b86565b811462000bb157600080fd5b50565b60008151905062000bc58162000b9a565b92915050565b60006020828403121562000be45762000be362000b61565b5b600062000bf48482850162000bb4565b91505092915050565b62000c088162000b86565b82525050565b600060408201905062000c25600083018562000bfd565b62000c34602083018462000bfd565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c84601f8362000c3b565b915062000c918262000c4c565b602082019050919050565b6000602082019050818103600083015262000cb78162000c75565b9050919050565b600062000ccb8262000a98565b915062000cd88362000a98565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d105762000d0f62000915565b5b828201905092915050565b62000d268162000a98565b82525050565b600060208201905062000d43600083018462000d1b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d9157607f821691505b6020821081141562000da85762000da762000d49565b5b50919050565b6146108062000dbe6000396000f3fe6080604052600436106102815760003560e01c806375f0a8741161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146109bd578063e545fd6d146109e6578063e9dae5ed14610a0f578063f2fde38b14610a38578063f66895a314610a61578063f887ea4014610a8e57610288565b8063a9059cbb14610889578063aa4bde28146108c6578063aacebbe3146108f1578063c18bc1951461091a578063dbe66ca014610943578063dd62ed3e1461098057610288565b80638ea5220f116101135780638ea5220f1461077957806395d89b41146107a45780639d0014b1146107cf5780639e252f00146107f8578063a457c2d714610821578063a8aa1b311461085e57610288565b806375f0a874146106a657806382aa7c68146106d15780638c0b5e22146106fa5780638cd4426d146107255780638da5cb5b1461074e57610288565b8063293b7ef4116101f357806350c9a88f116101ac57806350c9a88f146105a65780636256d181146105d15780636ddd1713146105fa57806370a0823114610625578063715018a614610662578063728f8eea1461067957610288565b8063293b7ef414610482578063313ce567146104ad57806339509351146104d85780633bbac5791461051557806340b28c2f146105525780634ada218b1461057b57610288565b806318160ddd1161024557806318160ddd146103725780631816467f1461039d5780632253163d146103c657806323b872dd146103f157806326b5d32f1461042e578063274a533c1461045757610288565b806303c0f5d41461028d5780630445b667146102b657806306fdde03146102e1578063087332141461030c578063095ea7b31461033557610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af919061329d565b610ab9565b005b3480156102c257600080fd5b506102cb610b90565b6040516102d891906132f6565b60405180910390f35b3480156102ed57600080fd5b506102f6610b96565b60405161030391906133aa565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e91906133f8565b610c28565b005b34801561034157600080fd5b5061035c6004803603810190610357919061344b565b610d5e565b604051610369919061349a565b60405180910390f35b34801561037e57600080fd5b50610387610d7c565b60405161039491906132f6565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf91906134b5565b610d86565b005b3480156103d257600080fd5b506103db610e46565b6040516103e891906132f6565b60405180910390f35b3480156103fd57600080fd5b50610418600480360381019061041391906134e2565b610e4c565b604051610425919061349a565b60405180910390f35b34801561043a57600080fd5b50610455600480360381019061045091906133f8565b610f4d565b005b34801561046357600080fd5b5061046c6110da565b60405161047991906132f6565b60405180910390f35b34801561048e57600080fd5b506104976110e0565b6040516104a491906132f6565b60405180910390f35b3480156104b957600080fd5b506104c26110e6565b6040516104cf9190613551565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa919061344b565b6110ef565b60405161050c919061349a565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906134b5565b61119b565b604051610549919061349a565b60405180910390f35b34801561055e57600080fd5b50610579600480360381019061057491906135aa565b6111bb565b005b34801561058757600080fd5b506105906112bd565b60405161059d919061349a565b60405180910390f35b3480156105b257600080fd5b506105bb6112d0565b6040516105c891906132f6565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f391906135ea565b6112d6565b005b34801561060657600080fd5b5061060f61136f565b60405161061c919061349a565b60405180910390f35b34801561063157600080fd5b5061064c600480360381019061064791906134b5565b611382565b60405161065991906132f6565b60405180910390f35b34801561066e57600080fd5b506106776113ca565b005b34801561068557600080fd5b5061068e611452565b60405161069d93929190613617565b60405180910390f35b3480156106b257600080fd5b506106bb61146a565b6040516106c8919061365d565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f391906135ea565b611490565b005b34801561070657600080fd5b5061070f6115a3565b60405161071c91906132f6565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061344b565b6115a9565b005b34801561075a57600080fd5b506107636116af565b604051610770919061365d565b60405180910390f35b34801561078557600080fd5b5061078e6116d9565b60405161079b919061365d565b60405180910390f35b3480156107b057600080fd5b506107b96116ff565b6040516107c691906133aa565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f191906135ea565b611791565b005b34801561080457600080fd5b5061081f600480360381019061081a91906135ea565b611817565b005b34801561082d57600080fd5b506108486004803603810190610843919061344b565b6118c6565b604051610855919061349a565b60405180910390f35b34801561086a57600080fd5b506108736119ba565b604051610880919061365d565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab919061344b565b6119e0565b6040516108bd919061349a565b60405180910390f35b3480156108d257600080fd5b506108db6119fe565b6040516108e891906132f6565b60405180910390f35b3480156108fd57600080fd5b50610918600480360381019061091391906134b5565b611a04565b005b34801561092657600080fd5b50610941600480360381019061093c91906135ea565b611ac4565b005b34801561094f57600080fd5b5061096a600480360381019061096591906134b5565b611b5d565b604051610977919061349a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190613678565b611b7d565b6040516109b491906132f6565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906136b8565b611c04565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061329d565b611c9d565b005b348015610a1b57600080fd5b50610a366004803603810190610a3191906133f8565b611d74565b005b348015610a4457600080fd5b50610a5f6004803603810190610a5a91906134b5565b611eaa565b005b348015610a6d57600080fd5b50610a76611fa2565b604051610a8593929190613617565b60405180910390f35b348015610a9a57600080fd5b50610aa3611fba565b604051610ab09190613744565b60405180910390f35b610ac1611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610adf6116af565b73ffffffffffffffffffffffffffffffffffffffff1614610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c906137ab565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b606060038054610ba5906137fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd1906137fa565b8015610c1e5780601f10610bf357610100808354040283529160200191610c1e565b820191906000526020600020905b815481529060010190602001808311610c0157829003601f168201915b5050505050905090565b610c30611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610c4e6116af565b73ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906137ab565b60405180910390fd5b6064818385610cb3919061385b565b610cbd919061385b565b1115610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906138fd565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610d49919061385b565b610d53919061385b565b601681905550505050565b6000610d72610d6b611fe0565b8484611fe8565b6001905092915050565b6000600254905090565b610d8e611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610dac6116af565b73ffffffffffffffffffffffffffffffffffffffff1614610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df9906137ab565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000610e598484846121b3565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea4611fe0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b9061398f565b60405180910390fd5b610f4185610f30611fe0565b8584610f3c91906139af565b611fe8565b60019150509392505050565b610f55611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610f736116af565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc0906137ab565b60405180910390fd5b6000479050610fd78461287d565b60008147610fe591906139af565b9050600083111561105d5761105c8385610fff919061385b565b848361100b91906139e3565b6110159190613a6c565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b60008411156110d3576110d28385611075919061385b565b858361108191906139e3565b61108b9190613a6c565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b60006111916110fc611fe0565b84846001600061110a611fe0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118c919061385b565b611fe8565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6111c3611fe0565b73ffffffffffffffffffffffffffffffffffffffff166111e16116af565b73ffffffffffffffffffffffffffffffffffffffff1614611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122e906137ab565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b6112de611fe0565b73ffffffffffffffffffffffffffffffffffffffff166112fc6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611349906137ab565b60405180910390fd5b670de0b6b3a76400008161136691906139e3565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113d2611fe0565b73ffffffffffffffffffffffffffffffffffffffff166113f06116af565b73ffffffffffffffffffffffffffffffffffffffff1614611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906137ab565b60405180910390fd5b6114506000612bb4565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611498611fe0565b73ffffffffffffffffffffffffffffffffffffffff166114b66116af565b73ffffffffffffffffffffffffffffffffffffffff161461150c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611503906137ab565b60405180910390fd5b600760169054906101000a900460ff161561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613ae9565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b6115b1611fe0565b73ffffffffffffffffffffffffffffffffffffffff166115cf6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c906137ab565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6116496116af565b836040518363ffffffff1660e01b8152600401611667929190613b09565b6020604051808303816000875af1158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa9190613b47565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461170e906137fa565b80601f016020809104026020016040519081016040528092919081815260200182805461173a906137fa565b80156117875780601f1061175c57610100808354040283529160200191611787565b820191906000526020600020905b81548152906001019060200180831161176a57829003601f168201915b5050505050905090565b611799611fe0565b73ffffffffffffffffffffffffffffffffffffffff166117b76116af565b73ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906137ab565b60405180910390fd5b80600a8190555050565b61181f611fe0565b73ffffffffffffffffffffffffffffffffffffffff1661183d6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a906137ab565b60405180910390fd5b6118c38161189f6116af565b73ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b50565b600080600160006118d5611fe0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613be6565b60405180910390fd5b6119af61199d611fe0565b8585846119aa91906139af565b611fe8565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119f46119ed611fe0565b84846121b3565b6001905092915050565b600c5481565b611a0c611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611a2a6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a77906137ab565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611acc611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611aea6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b37906137ab565b60405180910390fd5b670de0b6b3a764000081611b5491906139e3565b600c8190555050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c0c611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611c2a6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c77906137ab565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ca5611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611cc36116af565b73ffffffffffffffffffffffffffffffffffffffff1614611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d10906137ab565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d7c611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611d9a6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de7906137ab565b60405180910390fd5b6019818385611dff919061385b565b611e09919061385b565b1115611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906138fd565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284611e95919061385b565b611e9f919061385b565b601581905550505050565b611eb2611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611ed06116af565b73ffffffffffffffffffffffffffffffffffffffff1614611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d906137ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d90613c78565b60405180910390fd5b611f9f81612bb4565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613d0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90613d9c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121a691906132f6565b60405180910390a3505050565b600081116121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed90613e2e565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561229a5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d090613e9a565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561237d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123965750600760149054906101000a900460ff16155b1561265257600760169054906101000a900460ff166123ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e190613f06565b60405180910390fd5b436009546008546123fb919061385b565b111561255e57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124af576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461255d576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b548111156125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a90613f72565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461265157600c548161260584611382565b61260f919061385b565b1115612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790614004565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806126b85750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061270c5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271a57600090506127af565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127915760646016548361278091906139e3565b61278a9190613a6c565b90506127ae565b6064601554836127a191906139e3565b6127ab9190613a6c565b90505b5b600760159054906101000a900460ff1680156127d85750600760149054906101000a900460ff16155b80156128325750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561283e5750600081115b1561284c5761284b612c7a565b5b6128628484838561285d91906139af565b612e7e565b600081111561287757612876843083612e7e565b5b50505050565b6000600267ffffffffffffffff81111561289a57612899614024565b5b6040519080825280602002602001820160405280156128c85781602001602082028036833780820191505090505b50905030816000815181106128e0576128df614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab9190614097565b816001815181106129bf576129be614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a2630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fe8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a8a9594939291906141bd565b600060405180830381600087803b158015612aa457600080fd5b505af1158015612ab8573d6000803e3d6000fd5b505050505050565b80471015612b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afa90614263565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612b29906142b4565b60006040518083038185875af1925050503d8060008114612b66576040519150601f19603f3d011682016040523d82523d6000602084013e612b6b565b606091505b5050905080612baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba69061433b565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612e7c576001600760146101000a81548160ff0219169083151502179055506000612cb430611382565b9050600a548110612e5f5760006002601654612cd091906139e3565b905060008160126001015484612ce691906139e3565b612cf09190613a6c565b905060008184612d0091906139af565b90506000479050612d108261287d565b60008147612d1e91906139af565b9050600060126001015486612d3391906139af565b82612d3e9190613a6c565b9050600060126001015482612d5391906139e3565b90506000811115612d6957612d6886826130fd565b5b6000601260000154600284612d7e91906139e3565b612d8891906139e3565b90506000811115612ddf57612dde81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b6000601260020154600285612df491906139e3565b612dfe91906139e3565b90506000811115612e5557612e5481600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee5906143cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f559061445f565b60405180910390fd5b612f698383836131fd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe6906144f1565b60405180910390fd5b8181612ffb91906139af565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461308b919061385b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130ef91906132f6565b60405180910390a350505050565b61312a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fe8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131b396959493929190614511565b60606040518083038185885af11580156131d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131f69190614587565b5050505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061323282613207565b9050919050565b61324281613227565b811461324d57600080fd5b50565b60008135905061325f81613239565b92915050565b60008115159050919050565b61327a81613265565b811461328557600080fd5b50565b60008135905061329781613271565b92915050565b600080604083850312156132b4576132b3613202565b5b60006132c285828601613250565b92505060206132d385828601613288565b9150509250929050565b6000819050919050565b6132f0816132dd565b82525050565b600060208201905061330b60008301846132e7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561334b578082015181840152602081019050613330565b8381111561335a576000848401525b50505050565b6000601f19601f8301169050919050565b600061337c82613311565b613386818561331c565b935061339681856020860161332d565b61339f81613360565b840191505092915050565b600060208201905081810360008301526133c48184613371565b905092915050565b6133d5816132dd565b81146133e057600080fd5b50565b6000813590506133f2816133cc565b92915050565b60008060006060848603121561341157613410613202565b5b600061341f868287016133e3565b9350506020613430868287016133e3565b9250506040613441868287016133e3565b9150509250925092565b6000806040838503121561346257613461613202565b5b600061347085828601613250565b9250506020613481858286016133e3565b9150509250929050565b61349481613265565b82525050565b60006020820190506134af600083018461348b565b92915050565b6000602082840312156134cb576134ca613202565b5b60006134d984828501613250565b91505092915050565b6000806000606084860312156134fb576134fa613202565b5b600061350986828701613250565b935050602061351a86828701613250565b925050604061352b868287016133e3565b9150509250925092565b600060ff82169050919050565b61354b81613535565b82525050565b60006020820190506135666000830184613542565b92915050565b600061357782613227565b9050919050565b6135878161356c565b811461359257600080fd5b50565b6000813590506135a48161357e565b92915050565b600080604083850312156135c1576135c0613202565b5b60006135cf85828601613595565b92505060206135e085828601613250565b9150509250929050565b600060208284031215613600576135ff613202565b5b600061360e848285016133e3565b91505092915050565b600060608201905061362c60008301866132e7565b61363960208301856132e7565b61364660408301846132e7565b949350505050565b61365781613227565b82525050565b6000602082019050613672600083018461364e565b92915050565b6000806040838503121561368f5761368e613202565b5b600061369d85828601613250565b92505060206136ae85828601613250565b9150509250929050565b6000602082840312156136ce576136cd613202565b5b60006136dc84828501613288565b91505092915050565b6000819050919050565b600061370a61370561370084613207565b6136e5565b613207565b9050919050565b600061371c826136ef565b9050919050565b600061372e82613711565b9050919050565b61373e81613723565b82525050565b60006020820190506137596000830184613735565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061379560208361331c565b91506137a08261375f565b602082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061381257607f821691505b60208210811415613826576138256137cb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613866826132dd565b9150613871836132dd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138a6576138a561382c565b5b828201905092915050565b7f4d61782066656520697320323525000000000000000000000000000000000000600082015250565b60006138e7600e8361331c565b91506138f2826138b1565b602082019050919050565b60006020820190508181036000830152613916816138da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061397960288361331c565b91506139848261391d565b604082019050919050565b600060208201905081810360008301526139a88161396c565b9050919050565b60006139ba826132dd565b91506139c5836132dd565b9250828210156139d8576139d761382c565b5b828203905092915050565b60006139ee826132dd565b91506139f9836132dd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a3257613a3161382c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a77826132dd565b9150613a82836132dd565b925082613a9257613a91613a3d565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613ad360168361331c565b9150613ade82613a9d565b602082019050919050565b60006020820190508181036000830152613b0281613ac6565b9050919050565b6000604082019050613b1e600083018561364e565b613b2b60208301846132e7565b9392505050565b600081519050613b4181613271565b92915050565b600060208284031215613b5d57613b5c613202565b5b6000613b6b84828501613b32565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bd060258361331c565b9150613bdb82613b74565b604082019050919050565b60006020820190508181036000830152613bff81613bc3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c6260268361331c565b9150613c6d82613c06565b604082019050919050565b60006020820190508181036000830152613c9181613c55565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613cf460248361331c565b9150613cff82613c98565b604082019050919050565b60006020820190508181036000830152613d2381613ce7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d8660228361331c565b9150613d9182613d2a565b604082019050919050565b60006020820190508181036000830152613db581613d79565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e1860298361331c565b9150613e2382613dbc565b604082019050919050565b60006020820190508181036000830152613e4781613e0b565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613e8460198361331c565b9150613e8f82613e4e565b602082019050919050565b60006020820190508181036000830152613eb381613e77565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613ef060168361331c565b9150613efb82613eba565b602082019050919050565b60006020820190508181036000830152613f1f81613ee3565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613f5c601d8361331c565b9150613f6782613f26565b602082019050919050565b60006020820190508181036000830152613f8b81613f4f565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fee60218361331c565b9150613ff982613f92565b604082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061409181613239565b92915050565b6000602082840312156140ad576140ac613202565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6136e5565b6132dd565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61413481613227565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d260008301886132e7565b6141df60208301876140f0565b81810360408301526141f1818661415f565b9050614200606083018561364e565b61420d60808301846132e7565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061424d601d8361331c565b915061425882614217565b602082019050919050565b6000602082019050818103600083015261427c81614240565b9050919050565b600081905092915050565b50565b600061429e600083614283565b91506142a98261428e565b600082019050919050565b60006142bf82614291565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614325603a8361331c565b9150614330826142c9565b604082019050919050565b6000602082019050818103600083015261435481614318565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143b760258361331c565b91506143c28261435b565b604082019050919050565b600060208201905081810360008301526143e6816143aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061444960238361331c565b9150614454826143ed565b604082019050919050565b600060208201905081810360008301526144788161443c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144db60268361331c565b91506144e68261447f565b604082019050919050565b6000602082019050818103600083015261450a816144ce565b9050919050565b600060c082019050614526600083018961364e565b61453360208301886132e7565b61454060408301876140f0565b61454d60608301866140f0565b61455a608083018561364e565b61456760a08301846132e7565b979650505050505050565b600081519050614581816133cc565b92915050565b6000806000606084860312156145a05761459f613202565b5b60006145ae86828701614572565b93505060206145bf86828701614572565b92505060406145d086828701614572565b915050925092509256fea264697066735822122069528eb05a3cdb95b7d42e742e1615163164c93583556aac295653137abd04ed64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c806375f0a8741161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146109bd578063e545fd6d146109e6578063e9dae5ed14610a0f578063f2fde38b14610a38578063f66895a314610a61578063f887ea4014610a8e57610288565b8063a9059cbb14610889578063aa4bde28146108c6578063aacebbe3146108f1578063c18bc1951461091a578063dbe66ca014610943578063dd62ed3e1461098057610288565b80638ea5220f116101135780638ea5220f1461077957806395d89b41146107a45780639d0014b1146107cf5780639e252f00146107f8578063a457c2d714610821578063a8aa1b311461085e57610288565b806375f0a874146106a657806382aa7c68146106d15780638c0b5e22146106fa5780638cd4426d146107255780638da5cb5b1461074e57610288565b8063293b7ef4116101f357806350c9a88f116101ac57806350c9a88f146105a65780636256d181146105d15780636ddd1713146105fa57806370a0823114610625578063715018a614610662578063728f8eea1461067957610288565b8063293b7ef414610482578063313ce567146104ad57806339509351146104d85780633bbac5791461051557806340b28c2f146105525780634ada218b1461057b57610288565b806318160ddd1161024557806318160ddd146103725780631816467f1461039d5780632253163d146103c657806323b872dd146103f157806326b5d32f1461042e578063274a533c1461045757610288565b806303c0f5d41461028d5780630445b667146102b657806306fdde03146102e1578063087332141461030c578063095ea7b31461033557610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af919061329d565b610ab9565b005b3480156102c257600080fd5b506102cb610b90565b6040516102d891906132f6565b60405180910390f35b3480156102ed57600080fd5b506102f6610b96565b60405161030391906133aa565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e91906133f8565b610c28565b005b34801561034157600080fd5b5061035c6004803603810190610357919061344b565b610d5e565b604051610369919061349a565b60405180910390f35b34801561037e57600080fd5b50610387610d7c565b60405161039491906132f6565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf91906134b5565b610d86565b005b3480156103d257600080fd5b506103db610e46565b6040516103e891906132f6565b60405180910390f35b3480156103fd57600080fd5b50610418600480360381019061041391906134e2565b610e4c565b604051610425919061349a565b60405180910390f35b34801561043a57600080fd5b50610455600480360381019061045091906133f8565b610f4d565b005b34801561046357600080fd5b5061046c6110da565b60405161047991906132f6565b60405180910390f35b34801561048e57600080fd5b506104976110e0565b6040516104a491906132f6565b60405180910390f35b3480156104b957600080fd5b506104c26110e6565b6040516104cf9190613551565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa919061344b565b6110ef565b60405161050c919061349a565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906134b5565b61119b565b604051610549919061349a565b60405180910390f35b34801561055e57600080fd5b50610579600480360381019061057491906135aa565b6111bb565b005b34801561058757600080fd5b506105906112bd565b60405161059d919061349a565b60405180910390f35b3480156105b257600080fd5b506105bb6112d0565b6040516105c891906132f6565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f391906135ea565b6112d6565b005b34801561060657600080fd5b5061060f61136f565b60405161061c919061349a565b60405180910390f35b34801561063157600080fd5b5061064c600480360381019061064791906134b5565b611382565b60405161065991906132f6565b60405180910390f35b34801561066e57600080fd5b506106776113ca565b005b34801561068557600080fd5b5061068e611452565b60405161069d93929190613617565b60405180910390f35b3480156106b257600080fd5b506106bb61146a565b6040516106c8919061365d565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f391906135ea565b611490565b005b34801561070657600080fd5b5061070f6115a3565b60405161071c91906132f6565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061344b565b6115a9565b005b34801561075a57600080fd5b506107636116af565b604051610770919061365d565b60405180910390f35b34801561078557600080fd5b5061078e6116d9565b60405161079b919061365d565b60405180910390f35b3480156107b057600080fd5b506107b96116ff565b6040516107c691906133aa565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f191906135ea565b611791565b005b34801561080457600080fd5b5061081f600480360381019061081a91906135ea565b611817565b005b34801561082d57600080fd5b506108486004803603810190610843919061344b565b6118c6565b604051610855919061349a565b60405180910390f35b34801561086a57600080fd5b506108736119ba565b604051610880919061365d565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab919061344b565b6119e0565b6040516108bd919061349a565b60405180910390f35b3480156108d257600080fd5b506108db6119fe565b6040516108e891906132f6565b60405180910390f35b3480156108fd57600080fd5b50610918600480360381019061091391906134b5565b611a04565b005b34801561092657600080fd5b50610941600480360381019061093c91906135ea565b611ac4565b005b34801561094f57600080fd5b5061096a600480360381019061096591906134b5565b611b5d565b604051610977919061349a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190613678565b611b7d565b6040516109b491906132f6565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906136b8565b611c04565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061329d565b611c9d565b005b348015610a1b57600080fd5b50610a366004803603810190610a3191906133f8565b611d74565b005b348015610a4457600080fd5b50610a5f6004803603810190610a5a91906134b5565b611eaa565b005b348015610a6d57600080fd5b50610a76611fa2565b604051610a8593929190613617565b60405180910390f35b348015610a9a57600080fd5b50610aa3611fba565b604051610ab09190613744565b60405180910390f35b610ac1611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610adf6116af565b73ffffffffffffffffffffffffffffffffffffffff1614610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c906137ab565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b606060038054610ba5906137fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd1906137fa565b8015610c1e5780601f10610bf357610100808354040283529160200191610c1e565b820191906000526020600020905b815481529060010190602001808311610c0157829003601f168201915b5050505050905090565b610c30611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610c4e6116af565b73ffffffffffffffffffffffffffffffffffffffff1614610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906137ab565b60405180910390fd5b6064818385610cb3919061385b565b610cbd919061385b565b1115610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906138fd565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610d49919061385b565b610d53919061385b565b601681905550505050565b6000610d72610d6b611fe0565b8484611fe8565b6001905092915050565b6000600254905090565b610d8e611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610dac6116af565b73ffffffffffffffffffffffffffffffffffffffff1614610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df9906137ab565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000610e598484846121b3565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ea4611fe0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b9061398f565b60405180910390fd5b610f4185610f30611fe0565b8584610f3c91906139af565b611fe8565b60019150509392505050565b610f55611fe0565b73ffffffffffffffffffffffffffffffffffffffff16610f736116af565b73ffffffffffffffffffffffffffffffffffffffff1614610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc0906137ab565b60405180910390fd5b6000479050610fd78461287d565b60008147610fe591906139af565b9050600083111561105d5761105c8385610fff919061385b565b848361100b91906139e3565b6110159190613a6c565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b60008411156110d3576110d28385611075919061385b565b858361108191906139e3565b61108b9190613a6c565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b60006111916110fc611fe0565b84846001600061110a611fe0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118c919061385b565b611fe8565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6111c3611fe0565b73ffffffffffffffffffffffffffffffffffffffff166111e16116af565b73ffffffffffffffffffffffffffffffffffffffff1614611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122e906137ab565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b6112de611fe0565b73ffffffffffffffffffffffffffffffffffffffff166112fc6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611349906137ab565b60405180910390fd5b670de0b6b3a76400008161136691906139e3565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113d2611fe0565b73ffffffffffffffffffffffffffffffffffffffff166113f06116af565b73ffffffffffffffffffffffffffffffffffffffff1614611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906137ab565b60405180910390fd5b6114506000612bb4565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611498611fe0565b73ffffffffffffffffffffffffffffffffffffffff166114b66116af565b73ffffffffffffffffffffffffffffffffffffffff161461150c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611503906137ab565b60405180910390fd5b600760169054906101000a900460ff161561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613ae9565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b6115b1611fe0565b73ffffffffffffffffffffffffffffffffffffffff166115cf6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c906137ab565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6116496116af565b836040518363ffffffff1660e01b8152600401611667929190613b09565b6020604051808303816000875af1158015611686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116aa9190613b47565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461170e906137fa565b80601f016020809104026020016040519081016040528092919081815260200182805461173a906137fa565b80156117875780601f1061175c57610100808354040283529160200191611787565b820191906000526020600020905b81548152906001019060200180831161176a57829003601f168201915b5050505050905090565b611799611fe0565b73ffffffffffffffffffffffffffffffffffffffff166117b76116af565b73ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906137ab565b60405180910390fd5b80600a8190555050565b61181f611fe0565b73ffffffffffffffffffffffffffffffffffffffff1661183d6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a906137ab565b60405180910390fd5b6118c38161189f6116af565b73ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b50565b600080600160006118d5611fe0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613be6565b60405180910390fd5b6119af61199d611fe0565b8585846119aa91906139af565b611fe8565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119f46119ed611fe0565b84846121b3565b6001905092915050565b600c5481565b611a0c611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611a2a6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a77906137ab565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611acc611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611aea6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b37906137ab565b60405180910390fd5b670de0b6b3a764000081611b5491906139e3565b600c8190555050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c0c611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611c2a6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c77906137ab565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ca5611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611cc36116af565b73ffffffffffffffffffffffffffffffffffffffff1614611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d10906137ab565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d7c611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611d9a6116af565b73ffffffffffffffffffffffffffffffffffffffff1614611df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de7906137ab565b60405180910390fd5b6019818385611dff919061385b565b611e09919061385b565b1115611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e41906138fd565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284611e95919061385b565b611e9f919061385b565b601581905550505050565b611eb2611fe0565b73ffffffffffffffffffffffffffffffffffffffff16611ed06116af565b73ffffffffffffffffffffffffffffffffffffffff1614611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d906137ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d90613c78565b60405180910390fd5b611f9f81612bb4565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613d0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90613d9c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121a691906132f6565b60405180910390a3505050565b600081116121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed90613e2e565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561229a5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d090613e9a565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561237d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123965750600760149054906101000a900460ff16155b1561265257600760169054906101000a900460ff166123ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e190613f06565b60405180910390fd5b436009546008546123fb919061385b565b111561255e57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124af576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461255d576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b548111156125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a90613f72565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461265157600c548161260584611382565b61260f919061385b565b1115612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790614004565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806126b85750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061270c5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271a57600090506127af565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127915760646016548361278091906139e3565b61278a9190613a6c565b90506127ae565b6064601554836127a191906139e3565b6127ab9190613a6c565b90505b5b600760159054906101000a900460ff1680156127d85750600760149054906101000a900460ff16155b80156128325750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561283e5750600081115b1561284c5761284b612c7a565b5b6128628484838561285d91906139af565b612e7e565b600081111561287757612876843083612e7e565b5b50505050565b6000600267ffffffffffffffff81111561289a57612899614024565b5b6040519080825280602002602001820160405280156128c85781602001602082028036833780820191505090505b50905030816000815181106128e0576128df614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab9190614097565b816001815181106129bf576129be614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a2630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fe8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a8a9594939291906141bd565b600060405180830381600087803b158015612aa457600080fd5b505af1158015612ab8573d6000803e3d6000fd5b505050505050565b80471015612b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afa90614263565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612b29906142b4565b60006040518083038185875af1925050503d8060008114612b66576040519150601f19603f3d011682016040523d82523d6000602084013e612b6b565b606091505b5050905080612baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba69061433b565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612e7c576001600760146101000a81548160ff0219169083151502179055506000612cb430611382565b9050600a548110612e5f5760006002601654612cd091906139e3565b905060008160126001015484612ce691906139e3565b612cf09190613a6c565b905060008184612d0091906139af565b90506000479050612d108261287d565b60008147612d1e91906139af565b9050600060126001015486612d3391906139af565b82612d3e9190613a6c565b9050600060126001015482612d5391906139e3565b90506000811115612d6957612d6886826130fd565b5b6000601260000154600284612d7e91906139e3565b612d8891906139e3565b90506000811115612ddf57612dde81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b6000601260020154600285612df491906139e3565b612dfe91906139e3565b90506000811115612e5557612e5481600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ac090919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee5906143cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f559061445f565b60405180910390fd5b612f698383836131fd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe6906144f1565b60405180910390fd5b8181612ffb91906139af565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461308b919061385b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130ef91906132f6565b60405180910390a350505050565b61312a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fe8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131b396959493929190614511565b60606040518083038185885af11580156131d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131f69190614587565b5050505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061323282613207565b9050919050565b61324281613227565b811461324d57600080fd5b50565b60008135905061325f81613239565b92915050565b60008115159050919050565b61327a81613265565b811461328557600080fd5b50565b60008135905061329781613271565b92915050565b600080604083850312156132b4576132b3613202565b5b60006132c285828601613250565b92505060206132d385828601613288565b9150509250929050565b6000819050919050565b6132f0816132dd565b82525050565b600060208201905061330b60008301846132e7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561334b578082015181840152602081019050613330565b8381111561335a576000848401525b50505050565b6000601f19601f8301169050919050565b600061337c82613311565b613386818561331c565b935061339681856020860161332d565b61339f81613360565b840191505092915050565b600060208201905081810360008301526133c48184613371565b905092915050565b6133d5816132dd565b81146133e057600080fd5b50565b6000813590506133f2816133cc565b92915050565b60008060006060848603121561341157613410613202565b5b600061341f868287016133e3565b9350506020613430868287016133e3565b9250506040613441868287016133e3565b9150509250925092565b6000806040838503121561346257613461613202565b5b600061347085828601613250565b9250506020613481858286016133e3565b9150509250929050565b61349481613265565b82525050565b60006020820190506134af600083018461348b565b92915050565b6000602082840312156134cb576134ca613202565b5b60006134d984828501613250565b91505092915050565b6000806000606084860312156134fb576134fa613202565b5b600061350986828701613250565b935050602061351a86828701613250565b925050604061352b868287016133e3565b9150509250925092565b600060ff82169050919050565b61354b81613535565b82525050565b60006020820190506135666000830184613542565b92915050565b600061357782613227565b9050919050565b6135878161356c565b811461359257600080fd5b50565b6000813590506135a48161357e565b92915050565b600080604083850312156135c1576135c0613202565b5b60006135cf85828601613595565b92505060206135e085828601613250565b9150509250929050565b600060208284031215613600576135ff613202565b5b600061360e848285016133e3565b91505092915050565b600060608201905061362c60008301866132e7565b61363960208301856132e7565b61364660408301846132e7565b949350505050565b61365781613227565b82525050565b6000602082019050613672600083018461364e565b92915050565b6000806040838503121561368f5761368e613202565b5b600061369d85828601613250565b92505060206136ae85828601613250565b9150509250929050565b6000602082840312156136ce576136cd613202565b5b60006136dc84828501613288565b91505092915050565b6000819050919050565b600061370a61370561370084613207565b6136e5565b613207565b9050919050565b600061371c826136ef565b9050919050565b600061372e82613711565b9050919050565b61373e81613723565b82525050565b60006020820190506137596000830184613735565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061379560208361331c565b91506137a08261375f565b602082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061381257607f821691505b60208210811415613826576138256137cb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613866826132dd565b9150613871836132dd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138a6576138a561382c565b5b828201905092915050565b7f4d61782066656520697320323525000000000000000000000000000000000000600082015250565b60006138e7600e8361331c565b91506138f2826138b1565b602082019050919050565b60006020820190508181036000830152613916816138da565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061397960288361331c565b91506139848261391d565b604082019050919050565b600060208201905081810360008301526139a88161396c565b9050919050565b60006139ba826132dd565b91506139c5836132dd565b9250828210156139d8576139d761382c565b5b828203905092915050565b60006139ee826132dd565b91506139f9836132dd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a3257613a3161382c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a77826132dd565b9150613a82836132dd565b925082613a9257613a91613a3d565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613ad360168361331c565b9150613ade82613a9d565b602082019050919050565b60006020820190508181036000830152613b0281613ac6565b9050919050565b6000604082019050613b1e600083018561364e565b613b2b60208301846132e7565b9392505050565b600081519050613b4181613271565b92915050565b600060208284031215613b5d57613b5c613202565b5b6000613b6b84828501613b32565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bd060258361331c565b9150613bdb82613b74565b604082019050919050565b60006020820190508181036000830152613bff81613bc3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c6260268361331c565b9150613c6d82613c06565b604082019050919050565b60006020820190508181036000830152613c9181613c55565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613cf460248361331c565b9150613cff82613c98565b604082019050919050565b60006020820190508181036000830152613d2381613ce7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d8660228361331c565b9150613d9182613d2a565b604082019050919050565b60006020820190508181036000830152613db581613d79565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e1860298361331c565b9150613e2382613dbc565b604082019050919050565b60006020820190508181036000830152613e4781613e0b565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613e8460198361331c565b9150613e8f82613e4e565b602082019050919050565b60006020820190508181036000830152613eb381613e77565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613ef060168361331c565b9150613efb82613eba565b602082019050919050565b60006020820190508181036000830152613f1f81613ee3565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613f5c601d8361331c565b9150613f6782613f26565b602082019050919050565b60006020820190508181036000830152613f8b81613f4f565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fee60218361331c565b9150613ff982613f92565b604082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061409181613239565b92915050565b6000602082840312156140ad576140ac613202565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6136e5565b6132dd565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61413481613227565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d260008301886132e7565b6141df60208301876140f0565b81810360408301526141f1818661415f565b9050614200606083018561364e565b61420d60808301846132e7565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061424d601d8361331c565b915061425882614217565b602082019050919050565b6000602082019050818103600083015261427c81614240565b9050919050565b600081905092915050565b50565b600061429e600083614283565b91506142a98261428e565b600082019050919050565b60006142bf82614291565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614325603a8361331c565b9150614330826142c9565b604082019050919050565b6000602082019050818103600083015261435481614318565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143b760258361331c565b91506143c28261435b565b604082019050919050565b600060208201905081810360008301526143e6816143aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061444960238361331c565b9150614454826143ed565b604082019050919050565b600060208201905081810360008301526144788161443c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144db60268361331c565b91506144e68261447f565b604082019050919050565b6000602082019050818103600083015261450a816144ce565b9050919050565b600060c082019050614526600083018961364e565b61453360208301886132e7565b61454060408301876140f0565b61454d60608301866140f0565b61455a608083018561364e565b61456760a08301846132e7565b979650505050505050565b600081519050614581816133cc565b92915050565b6000806000606084860312156145a05761459f613202565b5b60006145ae86828701614572565b93505060206145bf86828701614572565b92505060406145d086828701614572565b915050925092509256fea264697066735822122069528eb05a3cdb95b7d42e742e1615163164c93583556aac295653137abd04ed64736f6c634300080c0033

Deployed Bytecode Sourcemap

13138:8473:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20225:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13458:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2344:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19539:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4511:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3464:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19966:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14015:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5162:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21001:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13381:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13983:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3306:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5993:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14113:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20076:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13346:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13416:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20485:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13316:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3635:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11915:94;;;;;;;;;;;;;:::i;:::-;;13899:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13623:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18973:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13510:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20731:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11692:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13705:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2563:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18855:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20881:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6711:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13256:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3975:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13561:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19840:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20606:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14057:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4213:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18754:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20339:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19255:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12017:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13939:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13228:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20225:106;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20318:5:::1;20301;:14;20307:7;20301:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20225:106:::0;;:::o;13458:45::-;;;;:::o;2344:100::-;2398:13;2431:5;2424:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2344:100;:::o;19539:289::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19686:3:::1;19678:4;19665:10;19652;:23;;;;:::i;:::-;:30;;;;:::i;:::-;:37;;19644:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19731:35;;;;;;;;19737:10;19731:35;;;;19749:10;19731:35;;;;19761:4;19731:35;;::::0;19719:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;19816:4;19803:10;19790;:23;;;;:::i;:::-;:30;;;;:::i;:::-;19777:10;:43;;;;19539:289:::0;;;:::o;4511:169::-;4594:4;4611:39;4620:12;:10;:12::i;:::-;4634:7;4643:6;4611:8;:39::i;:::-;4668:4;4661:11;;4511:169;;;;:::o;3464:108::-;3525:7;3552:12;;3545:19;;3464:108;:::o;19966:102::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20051:9:::1;20039;;:21;;;;;;;;;;;;;;;;;;19966:102:::0;:::o;14015:29::-;;;;:::o;5162:422::-;5268:4;5285:36;5295:6;5303:9;5314:6;5285:9;:36::i;:::-;5334:24;5361:11;:19;5373:6;5361:19;;;;;;;;;;;;;;;:33;5381:12;:10;:12::i;:::-;5361:33;;;;;;;;;;;;;;;;5334:60;;5433:6;5413:16;:26;;5405:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5495:57;5504:6;5512:12;:10;:12::i;:::-;5545:6;5526:16;:25;;;;:::i;:::-;5495:8;:57::i;:::-;5572:4;5565:11;;;5162:422;;;;;:::o;21001:546::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21118:19:::1;21140:21;21118:43;;21172:24;21189:6;21172:16;:24::i;:::-;21207:18;21252:11;21228:21;:35;;;;:::i;:::-;21207:56;;21299:1;21277:19;:23;21274:136;;;21302:108;21389:19;21373:13;:35;;;;:::i;:::-;21350:19;21337:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;21310:15;;;;;;;;;;;21302:34;;;;:108;;;;:::i;:::-;21274:136;21440:1;21424:13;:17;21421:118;;;21443:96;21518:19;21502:13;:35;;;;:::i;:::-;21485:13;21472:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;21451:9;;;;;;;;;;;21443:28;;;;:96;;;;:::i;:::-;21421:118;21107:440;;21001:546:::0;;;:::o;13381:28::-;;;;:::o;13983:25::-;;;;:::o;3306:93::-;3364:5;3389:2;3382:9;;3306:93;:::o;5993:215::-;6081:4;6098:80;6107:12;:10;:12::i;:::-;6121:7;6167:10;6130:11;:25;6142:12;:10;:12::i;:::-;6130:25;;;;;;;;;;;;;;;:34;6156:7;6130:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6098:8;:80::i;:::-;6196:4;6189:11;;5993:215;;;;:::o;14113:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;20076:137::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20175:7:::1;20166:6;;:16;;;;;;;;;;;;;;;;;;20200:5;20193:4;;:12;;;;;;;;;;;;;;;;;;20076:137:::0;;:::o;13346:26::-;;;;;;;;;;;;;:::o;13416:29::-;;;;:::o;20485:109::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20580:6:::1;20571;:15;;;;:::i;:::-;20557:11;:29;;;;20485:109:::0;:::o;13316:23::-;;;;;;;;;;;;;:::o;3635:127::-;3709:7;3736:9;:18;3746:7;3736:18;;;;;;;;;;;;;;;;3729:25;;3635:127;;;:::o;11915:94::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11980:21:::1;11998:1;11980:9;:21::i;:::-;11915:94::o:0;13899:33::-;;;;;;;;;;;;;;;;;;;:::o;13623:75::-;;;;;;;;;;;;;:::o;18973:274::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19059:14:::1;;;;;;;;;;;19058:15;19050:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19128:4;19111:14;;:21;;;;;;;;;;;;;;;;;;19157:4;19143:11;;:18;;;;;;;;;;;;;;;;;;19188:12;19172:13;:28;;;;19224:15;19211:10;:28;;;;18973:274:::0;:::o;13510:44::-;;;;:::o;20731:142::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20826:12:::1;20819:29;;;20849:7;:5;:7::i;:::-;20858:6;20819:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20731:142:::0;;:::o;11692:87::-;11738:7;11765:6;;;;;;;;;;;11758:13;;11692:87;:::o;13705:69::-;;;;;;;;;;;;;:::o;2563:104::-;2619:13;2652:7;2645:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:104;:::o;18855:110::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18947:10:::1;18931:13;:26;;;;18855:110:::0;:::o;20881:112::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20948:37:::1;20975:9;20956:7;:5;:7::i;:::-;20948:26;;;;:37;;;;:::i;:::-;20881:112:::0;:::o;6711:377::-;6804:4;6821:24;6848:11;:25;6860:12;:10;:12::i;:::-;6848:25;;;;;;;;;;;;;;;:34;6874:7;6848:34;;;;;;;;;;;;;;;;6821:61;;6921:15;6901:16;:35;;6893:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6989:67;6998:12;:10;:12::i;:::-;7012:7;7040:15;7021:16;:34;;;;:::i;:::-;6989:8;:67::i;:::-;7076:4;7069:11;;;6711:377;;;;:::o;13256:19::-;;;;;;;;;;;;;:::o;3975:175::-;4061:4;4078:42;4088:12;:10;:12::i;:::-;4102:9;4113:6;4078:9;:42::i;:::-;4138:4;4131:11;;3975:175;;;;:::o;13561:49::-;;;;:::o;19840:114::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19937:9:::1;19919:15;;:27;;;;;;;;;;;;;;;;;;19840:114:::0;:::o;20606:117::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20709:6:::1;20700;:15;;;;:::i;:::-;20682;:33;;;;20606:117:::0;:::o;14057:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4213:151::-;4302:7;4329:11;:18;4341:5;4329:18;;;;;;;;;;;;;;;:27;4348:7;4329:27;;;;;;;;;;;;;;;;4322:34;;4213:151;;;;:::o;18754:93::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18834:5:::1;18820:11;;:19;;;;;;;;;;;;;;;;;;18754:93:::0;:::o;20339:134::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20460:5:::1;20431:16;:26;20448:8;20431:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20339:134:::0;;:::o;19255:276::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19398:2:::1;19390:4;19377:10;19364;:23;;;;:::i;:::-;:30;;;;:::i;:::-;:36;;19356:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19438:35;;;;;;;;19444:10;19438:35;;;;19456:10;19438:35;;;;19468:4;19438:35;;::::0;19430:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;19519:4;19506:10;19493;:23;;;;:::i;:::-;:30;;;;:::i;:::-;19484:6;:39;;;;19255:276:::0;;;:::o;12017:192::-;11838:12;:10;:12::i;:::-;11827:23;;:7;:5;:7::i;:::-;:23;;;11819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12126:1:::1;12106:22;;:8;:22;;;;12098:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12182:19;12192:8;12182:9;:19::i;:::-;12017:192:::0;:::o;13939:37::-;;;;;;;;;;;;;;;;;;;:::o;13228:21::-;;;;;;;;;;;;;:::o;60:98::-;113:7;140:10;133:17;;60:98;:::o;10067:346::-;10186:1;10169:19;;:5;:19;;;;10161:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10267:1;10248:21;;:7;:21;;;;10240:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10351:6;10321:11;:18;10333:5;10321:18;;;;;;;;;;;;;;;:27;10340:7;10321:27;;;;;;;;;;;;;;;:36;;;;10389:7;10373:32;;10382:5;10373:32;;;10398:6;10373:32;;;;;;:::i;:::-;;;;;;;;10067:346;;;:::o;14876:1573::-;14992:1;14983:6;:10;14975:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15059:5;:13;15065:6;15059:13;;;;;;;;;;;;;;;;;;;;;;;;;15058:14;:35;;;;;15077:5;:16;15083:9;15077:16;;;;;;;;;;;;;;;;;;;;;;;;;15076:17;15058:35;15050:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15166:16;:24;15183:6;15166:24;;;;;;;;;;;;;;;;;;;;;;;;;15165:25;:57;;;;;15195:16;:27;15212:9;15195:27;;;;;;;;;;;;;;;;;;;;;;;;;15194:28;15165:57;:70;;;;;15227:8;;;;;;;;;;;15226:9;15165:70;15162:589;;;15259:14;;;;;;;;;;;15251:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15347:12;15334:10;;15318:13;;:26;;;;:::i;:::-;:41;15315:183;;;15395:4;;;;;;;;;;;15382:17;;:9;:17;;;15379:45;;15420:4;15401:5;:16;15407:9;15401:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15379:45;15456:4;;;;;;;;;;;15446:14;;:6;:14;;;15443:39;;15478:4;15462:5;:13;15468:6;15462:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15443:39;15315:183;15530:11;;15520:6;:21;;15512:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15606:4;;;;;;;;;;;15593:17;;:9;:17;;;15590:150;;15671:15;;15661:6;15638:20;15648:9;15638;:20::i;:::-;:29;;;;:::i;:::-;:48;;15630:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15590:150;15162:589;15763:11;15870:8;;;;;;;;;;;:36;;;;15882:16;:24;15899:6;15882:24;;;;;;;;;;;;;;;;;;;;;;;;;15870:36;:67;;;;15910:16;:27;15927:9;15910:27;;;;;;;;;;;;;;;;;;;;;;;;;15870:67;15866:257;;;15945:1;15939:7;;15866:257;;;16027:4;;;;;;;;;;;16014:17;;:9;:17;;;16011:100;;;16061:3;16048:10;;16039:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16033:31;;16011:100;;;16108:3;16099:6;;16090;:15;;;;:::i;:::-;:21;;;;:::i;:::-;16084:27;;16011:100;15866:257;16244:11;;;;;;;;;;;:24;;;;;16260:8;;;;;;;;;;;16259:9;16244:24;:42;;;;;16282:4;;;;;;;;;;;16272:14;;:6;:14;;;;16244:42;:53;;;;;16296:1;16290:3;:7;16244:53;16240:72;;;16299:13;:11;:13::i;:::-;16240:72;16325:48;16341:6;16349:9;16369:3;16360:6;:12;;;;:::i;:::-;16325:15;:48::i;:::-;16393:1;16387:3;:7;16384:55;;;16396:43;16412:6;16428:4;16435:3;16396:15;:43::i;:::-;16384:55;14964:1485;14876:1573;;;:::o;17841:400::-;17907:21;17945:1;17931:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17907:40;;17976:4;17958;17963:1;17958:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18002:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17992:4;17997:1;17992:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18028:53;18045:4;18060:6;;;;;;;;;;;18069:11;18028:8;:53::i;:::-;18120:6;;;;;;;;;;;:57;;;18178:11;18191:1;18194:4;18208;18215:15;18120:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17896:345;17841:400;:::o;11137:317::-;11252:6;11227:21;:31;;11219:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11306:12;11324:9;:14;;11346:6;11324:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11305:52;;;11376:7;11368:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11208:246;11137:317;;:::o;12217:173::-;12273:16;12292:6;;;;;;;;;;;12273:25;;12318:8;12309:6;;:17;;;;;;;;;;;;;;;;;;12373:8;12342:40;;12363:8;12342:40;;;;;;;;;;;;12262:128;12217:173;:::o;16457:1374::-;14198:8;;;;;;;;;;;14193:104;;14234:4;14223:8;;:15;;;;;;;;;;;;;;;;;;16506:23:::1;16532:24;16550:4;16532:9;:24::i;:::-;16506:50;;16590:13;;16571:15;:32;16567:1257;;16677:19;16712:1;16699:10;;:14;;;;:::i;:::-;16677:36;;16728:32;16803:11;16781:9;:19;;;16763:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;16728:86;;16829:14;16864:24;16846:15;:42;;;;:::i;:::-;16829:59;;16909:22;16934:21;16909:46;;16976:24;16993:6;16976:16;:24::i;:::-;17021:20;17068:14;17044:21;:38;;;;:::i;:::-;17021:61;;17097:19;17148:9;:19;;;17134:11;:33;;;;:::i;:::-;17118:12;:50;;;;:::i;:::-;17097:71;;17183:29;17229:9;:19;;;17215:11;:33;;;;:::i;:::-;17183:65;;17296:1;17272:21;:25;17269:170;;;17362:61;17375:24;17401:21;17362:12;:61::i;:::-;17269:170;17459:20;17500:9;:19;;;17496:1;17482:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17459:60;;17552:1;17537:12;:16;17534:103;;;17573:48;17608:12;17581:15;;;;;;;;;;;17573:34;;;;:48;;;;:::i;:::-;17534:103;17665:14;17700:9;:13;;;17696:1;17682:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;17665:48;;17740:1;17731:6;:10;17728:85;;;17761:36;17790:6;17769:9;;;;;;;;;;;17761:28;;;;:36;;;;:::i;:::-;17728:85;16605:1219;;;;;;;;;16567:1257;16495:1336;14280:5:::0;14269:8;;:16;;;;;;;;;;;;;;;;;;14193:104;16457:1374::o;7578:604::-;7702:1;7684:20;;:6;:20;;;;7676:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7786:1;7765:23;;:9;:23;;;;7757:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7841:47;7862:6;7870:9;7881:6;7841:20;:47::i;:::-;7901:21;7925:9;:17;7935:6;7925:17;;;;;;;;;;;;;;;;7901:41;;7978:6;7961:13;:23;;7953:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8074:6;8058:13;:22;;;;:::i;:::-;8038:9;:17;8048:6;8038:17;;;;;;;;;;;;;;;:42;;;;8115:6;8091:9;:20;8101:9;8091:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8156:9;8139:35;;8148:6;8139:35;;;8167:6;8139:35;;;;;;:::i;:::-;;;;;;;;7665:517;7578:604;;;:::o;18249:497::-;18397:53;18414:4;18429:6;;;;;;;;;;;18438:11;18397:8;:53::i;:::-;18493:6;;;;;;;;;;;:22;;;18523:9;18556:4;18576:11;18602:1;18645;18688:9;;;;;;;;;;;18712:15;18493:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18249:497;;:::o;11016:92::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:77::-;1709:7;1738:5;1727:16;;1672:77;;;:::o;1755:118::-;1842:24;1860:5;1842:24;:::i;:::-;1837:3;1830:37;1755:118;;:::o;1879:222::-;1972:4;2010:2;1999:9;1995:18;1987:26;;2023:71;2091:1;2080:9;2076:17;2067:6;2023:71;:::i;:::-;1879:222;;;;:::o;2107:99::-;2159:6;2193:5;2187:12;2177:22;;2107:99;;;:::o;2212:169::-;2296:11;2330:6;2325:3;2318:19;2370:4;2365:3;2361:14;2346:29;;2212:169;;;;:::o;2387:307::-;2455:1;2465:113;2479:6;2476:1;2473:13;2465:113;;;2564:1;2559:3;2555:11;2549:18;2545:1;2540:3;2536:11;2529:39;2501:2;2498:1;2494:10;2489:15;;2465:113;;;2596:6;2593:1;2590:13;2587:101;;;2676:1;2667:6;2662:3;2658:16;2651:27;2587:101;2436:258;2387:307;;;:::o;2700:102::-;2741:6;2792:2;2788:7;2783:2;2776:5;2772:14;2768:28;2758:38;;2700:102;;;:::o;2808:364::-;2896:3;2924:39;2957:5;2924:39;:::i;:::-;2979:71;3043:6;3038:3;2979:71;:::i;:::-;2972:78;;3059:52;3104:6;3099:3;3092:4;3085:5;3081:16;3059:52;:::i;:::-;3136:29;3158:6;3136:29;:::i;:::-;3131:3;3127:39;3120:46;;2900:272;2808:364;;;;:::o;3178:313::-;3291:4;3329:2;3318:9;3314:18;3306:26;;3378:9;3372:4;3368:20;3364:1;3353:9;3349:17;3342:47;3406:78;3479:4;3470:6;3406:78;:::i;:::-;3398:86;;3178:313;;;;:::o;3497:122::-;3570:24;3588:5;3570:24;:::i;:::-;3563:5;3560:35;3550:63;;3609:1;3606;3599:12;3550:63;3497:122;:::o;3625:139::-;3671:5;3709:6;3696:20;3687:29;;3725:33;3752:5;3725:33;:::i;:::-;3625:139;;;;:::o;3770:619::-;3847:6;3855;3863;3912:2;3900:9;3891:7;3887:23;3883:32;3880:119;;;3918:79;;:::i;:::-;3880:119;4038:1;4063:53;4108:7;4099:6;4088:9;4084:22;4063:53;:::i;:::-;4053:63;;4009:117;4165:2;4191:53;4236:7;4227:6;4216:9;4212:22;4191:53;:::i;:::-;4181:63;;4136:118;4293:2;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4264:118;3770:619;;;;;:::o;4395:474::-;4463:6;4471;4520:2;4508:9;4499:7;4495:23;4491:32;4488:119;;;4526:79;;:::i;:::-;4488:119;4646:1;4671:53;4716:7;4707:6;4696:9;4692:22;4671:53;:::i;:::-;4661:63;;4617:117;4773:2;4799:53;4844:7;4835:6;4824:9;4820:22;4799:53;:::i;:::-;4789:63;;4744:118;4395:474;;;;;:::o;4875:109::-;4956:21;4971:5;4956:21;:::i;:::-;4951:3;4944:34;4875:109;;:::o;4990:210::-;5077:4;5115:2;5104:9;5100:18;5092:26;;5128:65;5190:1;5179:9;5175:17;5166:6;5128:65;:::i;:::-;4990:210;;;;:::o;5206:329::-;5265:6;5314:2;5302:9;5293:7;5289:23;5285:32;5282:119;;;5320:79;;:::i;:::-;5282:119;5440:1;5465:53;5510:7;5501:6;5490:9;5486:22;5465:53;:::i;:::-;5455:63;;5411:117;5206:329;;;;:::o;5541:619::-;5618:6;5626;5634;5683:2;5671:9;5662:7;5658:23;5654:32;5651:119;;;5689:79;;:::i;:::-;5651:119;5809:1;5834:53;5879:7;5870:6;5859:9;5855:22;5834:53;:::i;:::-;5824:63;;5780:117;5936:2;5962:53;6007:7;5998:6;5987:9;5983:22;5962:53;:::i;:::-;5952:63;;5907:118;6064:2;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6035:118;5541:619;;;;;:::o;6166:86::-;6201:7;6241:4;6234:5;6230:16;6219:27;;6166:86;;;:::o;6258:112::-;6341:22;6357:5;6341:22;:::i;:::-;6336:3;6329:35;6258:112;;:::o;6376:214::-;6465:4;6503:2;6492:9;6488:18;6480:26;;6516:67;6580:1;6569:9;6565:17;6556:6;6516:67;:::i;:::-;6376:214;;;;:::o;6596:111::-;6648:7;6677:24;6695:5;6677:24;:::i;:::-;6666:35;;6596:111;;;:::o;6713:152::-;6801:39;6834:5;6801:39;:::i;:::-;6794:5;6791:50;6781:78;;6855:1;6852;6845:12;6781:78;6713:152;:::o;6871:169::-;6932:5;6970:6;6957:20;6948:29;;6986:48;7028:5;6986:48;:::i;:::-;6871:169;;;;:::o;7046:504::-;7129:6;7137;7186:2;7174:9;7165:7;7161:23;7157:32;7154:119;;;7192:79;;:::i;:::-;7154:119;7312:1;7337:68;7397:7;7388:6;7377:9;7373:22;7337:68;:::i;:::-;7327:78;;7283:132;7454:2;7480:53;7525:7;7516:6;7505:9;7501:22;7480:53;:::i;:::-;7470:63;;7425:118;7046:504;;;;;:::o;7556:329::-;7615:6;7664:2;7652:9;7643:7;7639:23;7635:32;7632:119;;;7670:79;;:::i;:::-;7632:119;7790:1;7815:53;7860:7;7851:6;7840:9;7836:22;7815:53;:::i;:::-;7805:63;;7761:117;7556:329;;;;:::o;7891:442::-;8040:4;8078:2;8067:9;8063:18;8055:26;;8091:71;8159:1;8148:9;8144:17;8135:6;8091:71;:::i;:::-;8172:72;8240:2;8229:9;8225:18;8216:6;8172:72;:::i;:::-;8254;8322:2;8311:9;8307:18;8298:6;8254:72;:::i;:::-;7891:442;;;;;;:::o;8339:118::-;8426:24;8444:5;8426:24;:::i;:::-;8421:3;8414:37;8339:118;;:::o;8463:222::-;8556:4;8594:2;8583:9;8579:18;8571:26;;8607:71;8675:1;8664:9;8660:17;8651:6;8607:71;:::i;:::-;8463:222;;;;:::o;8691:474::-;8759:6;8767;8816:2;8804:9;8795:7;8791:23;8787:32;8784:119;;;8822:79;;:::i;:::-;8784:119;8942:1;8967:53;9012:7;9003:6;8992:9;8988:22;8967:53;:::i;:::-;8957:63;;8913:117;9069:2;9095:53;9140:7;9131:6;9120:9;9116:22;9095:53;:::i;:::-;9085:63;;9040:118;8691:474;;;;;:::o;9171:323::-;9227:6;9276:2;9264:9;9255:7;9251:23;9247:32;9244:119;;;9282:79;;:::i;:::-;9244:119;9402:1;9427:50;9469:7;9460:6;9449:9;9445:22;9427:50;:::i;:::-;9417:60;;9373:114;9171:323;;;;:::o;9500:60::-;9528:3;9549:5;9542:12;;9500:60;;;:::o;9566:142::-;9616:9;9649:53;9667:34;9676:24;9694:5;9676:24;:::i;:::-;9667:34;:::i;:::-;9649:53;:::i;:::-;9636:66;;9566:142;;;:::o;9714:126::-;9764:9;9797:37;9828:5;9797:37;:::i;:::-;9784:50;;9714:126;;;:::o;9846:141::-;9911:9;9944:37;9975:5;9944:37;:::i;:::-;9931:50;;9846:141;;;:::o;9993:161::-;10095:52;10141:5;10095:52;:::i;:::-;10090:3;10083:65;9993:161;;:::o;10160:252::-;10268:4;10306:2;10295:9;10291:18;10283:26;;10319:86;10402:1;10391:9;10387:17;10378:6;10319:86;:::i;:::-;10160:252;;;;:::o;10418:182::-;10558:34;10554:1;10546:6;10542:14;10535:58;10418:182;:::o;10606:366::-;10748:3;10769:67;10833:2;10828:3;10769:67;:::i;:::-;10762:74;;10845:93;10934:3;10845:93;:::i;:::-;10963:2;10958:3;10954:12;10947:19;;10606:366;;;:::o;10978:419::-;11144:4;11182:2;11171:9;11167:18;11159:26;;11231:9;11225:4;11221:20;11217:1;11206:9;11202:17;11195:47;11259:131;11385:4;11259:131;:::i;:::-;11251:139;;10978:419;;;:::o;11403:180::-;11451:77;11448:1;11441:88;11548:4;11545:1;11538:15;11572:4;11569:1;11562:15;11589:320;11633:6;11670:1;11664:4;11660:12;11650:22;;11717:1;11711:4;11707:12;11738:18;11728:81;;11794:4;11786:6;11782:17;11772:27;;11728:81;11856:2;11848:6;11845:14;11825:18;11822:38;11819:84;;;11875:18;;:::i;:::-;11819:84;11640:269;11589:320;;;:::o;11915:180::-;11963:77;11960:1;11953:88;12060:4;12057:1;12050:15;12084:4;12081:1;12074:15;12101:305;12141:3;12160:20;12178:1;12160:20;:::i;:::-;12155:25;;12194:20;12212:1;12194:20;:::i;:::-;12189:25;;12348:1;12280:66;12276:74;12273:1;12270:81;12267:107;;;12354:18;;:::i;:::-;12267:107;12398:1;12395;12391:9;12384:16;;12101:305;;;;:::o;12412:164::-;12552:16;12548:1;12540:6;12536:14;12529:40;12412:164;:::o;12582:366::-;12724:3;12745:67;12809:2;12804:3;12745:67;:::i;:::-;12738:74;;12821:93;12910:3;12821:93;:::i;:::-;12939:2;12934:3;12930:12;12923:19;;12582:366;;;:::o;12954:419::-;13120:4;13158:2;13147:9;13143:18;13135:26;;13207:9;13201:4;13197:20;13193:1;13182:9;13178:17;13171:47;13235:131;13361:4;13235:131;:::i;:::-;13227:139;;12954:419;;;:::o;13379:227::-;13519:34;13515:1;13507:6;13503:14;13496:58;13588:10;13583:2;13575:6;13571:15;13564:35;13379:227;:::o;13612:366::-;13754:3;13775:67;13839:2;13834:3;13775:67;:::i;:::-;13768:74;;13851:93;13940:3;13851:93;:::i;:::-;13969:2;13964:3;13960:12;13953:19;;13612:366;;;:::o;13984:419::-;14150:4;14188:2;14177:9;14173:18;14165:26;;14237:9;14231:4;14227:20;14223:1;14212:9;14208:17;14201:47;14265:131;14391:4;14265:131;:::i;:::-;14257:139;;13984:419;;;:::o;14409:191::-;14449:4;14469:20;14487:1;14469:20;:::i;:::-;14464:25;;14503:20;14521:1;14503:20;:::i;:::-;14498:25;;14542:1;14539;14536:8;14533:34;;;14547:18;;:::i;:::-;14533:34;14592:1;14589;14585:9;14577:17;;14409:191;;;;:::o;14606:348::-;14646:7;14669:20;14687:1;14669:20;:::i;:::-;14664:25;;14703:20;14721:1;14703:20;:::i;:::-;14698:25;;14891:1;14823:66;14819:74;14816:1;14813:81;14808:1;14801:9;14794:17;14790:105;14787:131;;;14898:18;;:::i;:::-;14787:131;14946:1;14943;14939:9;14928:20;;14606:348;;;;:::o;14960:180::-;15008:77;15005:1;14998:88;15105:4;15102:1;15095:15;15129:4;15126:1;15119:15;15146:185;15186:1;15203:20;15221:1;15203:20;:::i;:::-;15198:25;;15237:20;15255:1;15237:20;:::i;:::-;15232:25;;15276:1;15266:35;;15281:18;;:::i;:::-;15266:35;15323:1;15320;15316:9;15311:14;;15146:185;;;;:::o;15337:172::-;15477:24;15473:1;15465:6;15461:14;15454:48;15337:172;:::o;15515:366::-;15657:3;15678:67;15742:2;15737:3;15678:67;:::i;:::-;15671:74;;15754:93;15843:3;15754:93;:::i;:::-;15872:2;15867:3;15863:12;15856:19;;15515:366;;;:::o;15887:419::-;16053:4;16091:2;16080:9;16076:18;16068:26;;16140:9;16134:4;16130:20;16126:1;16115:9;16111:17;16104:47;16168:131;16294:4;16168:131;:::i;:::-;16160:139;;15887:419;;;:::o;16312:332::-;16433:4;16471:2;16460:9;16456:18;16448:26;;16484:71;16552:1;16541:9;16537:17;16528:6;16484:71;:::i;:::-;16565:72;16633:2;16622:9;16618:18;16609:6;16565:72;:::i;:::-;16312:332;;;;;:::o;16650:137::-;16704:5;16735:6;16729:13;16720:22;;16751:30;16775:5;16751:30;:::i;:::-;16650:137;;;;:::o;16793:345::-;16860:6;16909:2;16897:9;16888:7;16884:23;16880:32;16877:119;;;16915:79;;:::i;:::-;16877:119;17035:1;17060:61;17113:7;17104:6;17093:9;17089:22;17060:61;:::i;:::-;17050:71;;17006:125;16793:345;;;;:::o;17144:224::-;17284:34;17280:1;17272:6;17268:14;17261:58;17353:7;17348:2;17340:6;17336:15;17329:32;17144:224;:::o;17374:366::-;17516:3;17537:67;17601:2;17596:3;17537:67;:::i;:::-;17530:74;;17613:93;17702:3;17613:93;:::i;:::-;17731:2;17726:3;17722:12;17715:19;;17374:366;;;:::o;17746:419::-;17912:4;17950:2;17939:9;17935:18;17927:26;;17999:9;17993:4;17989:20;17985:1;17974:9;17970:17;17963:47;18027:131;18153:4;18027:131;:::i;:::-;18019:139;;17746:419;;;:::o;18171:225::-;18311:34;18307:1;18299:6;18295:14;18288:58;18380:8;18375:2;18367:6;18363:15;18356:33;18171:225;:::o;18402:366::-;18544:3;18565:67;18629:2;18624:3;18565:67;:::i;:::-;18558:74;;18641:93;18730:3;18641:93;:::i;:::-;18759:2;18754:3;18750:12;18743:19;;18402:366;;;:::o;18774:419::-;18940:4;18978:2;18967:9;18963:18;18955:26;;19027:9;19021:4;19017:20;19013:1;19002:9;18998:17;18991:47;19055:131;19181:4;19055:131;:::i;:::-;19047:139;;18774:419;;;:::o;19199:223::-;19339:34;19335:1;19327:6;19323:14;19316:58;19408:6;19403:2;19395:6;19391:15;19384:31;19199:223;:::o;19428:366::-;19570:3;19591:67;19655:2;19650:3;19591:67;:::i;:::-;19584:74;;19667:93;19756:3;19667:93;:::i;:::-;19785:2;19780:3;19776:12;19769:19;;19428:366;;;:::o;19800:419::-;19966:4;20004:2;19993:9;19989:18;19981:26;;20053:9;20047:4;20043:20;20039:1;20028:9;20024:17;20017:47;20081:131;20207:4;20081:131;:::i;:::-;20073:139;;19800:419;;;:::o;20225:221::-;20365:34;20361:1;20353:6;20349:14;20342:58;20434:4;20429:2;20421:6;20417:15;20410:29;20225:221;:::o;20452:366::-;20594:3;20615:67;20679:2;20674:3;20615:67;:::i;:::-;20608:74;;20691:93;20780:3;20691:93;:::i;:::-;20809:2;20804:3;20800:12;20793:19;;20452:366;;;:::o;20824:419::-;20990:4;21028:2;21017:9;21013:18;21005:26;;21077:9;21071:4;21067:20;21063:1;21052:9;21048:17;21041:47;21105:131;21231:4;21105:131;:::i;:::-;21097:139;;20824:419;;;:::o;21249:228::-;21389:34;21385:1;21377:6;21373:14;21366:58;21458:11;21453:2;21445:6;21441:15;21434:36;21249:228;:::o;21483:366::-;21625:3;21646:67;21710:2;21705:3;21646:67;:::i;:::-;21639:74;;21722:93;21811:3;21722:93;:::i;:::-;21840:2;21835:3;21831:12;21824:19;;21483:366;;;:::o;21855:419::-;22021:4;22059:2;22048:9;22044:18;22036:26;;22108:9;22102:4;22098:20;22094:1;22083:9;22079:17;22072:47;22136:131;22262:4;22136:131;:::i;:::-;22128:139;;21855:419;;;:::o;22280:175::-;22420:27;22416:1;22408:6;22404:14;22397:51;22280:175;:::o;22461:366::-;22603:3;22624:67;22688:2;22683:3;22624:67;:::i;:::-;22617:74;;22700:93;22789:3;22700:93;:::i;:::-;22818:2;22813:3;22809:12;22802:19;;22461:366;;;:::o;22833:419::-;22999:4;23037:2;23026:9;23022:18;23014:26;;23086:9;23080:4;23076:20;23072:1;23061:9;23057:17;23050:47;23114:131;23240:4;23114:131;:::i;:::-;23106:139;;22833:419;;;:::o;23258:172::-;23398:24;23394:1;23386:6;23382:14;23375:48;23258:172;:::o;23436:366::-;23578:3;23599:67;23663:2;23658:3;23599:67;:::i;:::-;23592:74;;23675:93;23764:3;23675:93;:::i;:::-;23793:2;23788:3;23784:12;23777:19;;23436:366;;;:::o;23808:419::-;23974:4;24012:2;24001:9;23997:18;23989:26;;24061:9;24055:4;24051:20;24047:1;24036:9;24032:17;24025:47;24089:131;24215:4;24089:131;:::i;:::-;24081:139;;23808:419;;;:::o;24233:179::-;24373:31;24369:1;24361:6;24357:14;24350:55;24233:179;:::o;24418:366::-;24560:3;24581:67;24645:2;24640:3;24581:67;:::i;:::-;24574:74;;24657:93;24746:3;24657:93;:::i;:::-;24775:2;24770:3;24766:12;24759:19;;24418:366;;;:::o;24790:419::-;24956:4;24994:2;24983:9;24979:18;24971:26;;25043:9;25037:4;25033:20;25029:1;25018:9;25014:17;25007:47;25071:131;25197:4;25071:131;:::i;:::-;25063:139;;24790:419;;;:::o;25215:220::-;25355:34;25351:1;25343:6;25339:14;25332:58;25424:3;25419:2;25411:6;25407:15;25400:28;25215:220;:::o;25441:366::-;25583:3;25604:67;25668:2;25663:3;25604:67;:::i;:::-;25597:74;;25680:93;25769:3;25680:93;:::i;:::-;25798:2;25793:3;25789:12;25782:19;;25441:366;;;:::o;25813:419::-;25979:4;26017:2;26006:9;26002:18;25994:26;;26066:9;26060:4;26056:20;26052:1;26041:9;26037:17;26030:47;26094:131;26220:4;26094:131;:::i;:::-;26086:139;;25813:419;;;:::o;26238:180::-;26286:77;26283:1;26276:88;26383:4;26380:1;26373:15;26407:4;26404:1;26397:15;26424:180;26472:77;26469:1;26462:88;26569:4;26566:1;26559:15;26593:4;26590:1;26583:15;26610:143;26667:5;26698:6;26692:13;26683:22;;26714:33;26741:5;26714:33;:::i;:::-;26610:143;;;;:::o;26759:351::-;26829:6;26878:2;26866:9;26857:7;26853:23;26849:32;26846:119;;;26884:79;;:::i;:::-;26846:119;27004:1;27029:64;27085:7;27076:6;27065:9;27061:22;27029:64;:::i;:::-;27019:74;;26975:128;26759:351;;;;:::o;27116:85::-;27161:7;27190:5;27179:16;;27116:85;;;:::o;27207:158::-;27265:9;27298:61;27316:42;27325:32;27351:5;27325:32;:::i;:::-;27316:42;:::i;:::-;27298:61;:::i;:::-;27285:74;;27207:158;;;:::o;27371:147::-;27466:45;27505:5;27466:45;:::i;:::-;27461:3;27454:58;27371:147;;:::o;27524:114::-;27591:6;27625:5;27619:12;27609:22;;27524:114;;;:::o;27644:184::-;27743:11;27777:6;27772:3;27765:19;27817:4;27812:3;27808:14;27793:29;;27644:184;;;;:::o;27834:132::-;27901:4;27924:3;27916:11;;27954:4;27949:3;27945:14;27937:22;;27834:132;;;:::o;27972:108::-;28049:24;28067:5;28049:24;:::i;:::-;28044:3;28037:37;27972:108;;:::o;28086:179::-;28155:10;28176:46;28218:3;28210:6;28176:46;:::i;:::-;28254:4;28249:3;28245:14;28231:28;;28086:179;;;;:::o;28271:113::-;28341:4;28373;28368:3;28364:14;28356:22;;28271:113;;;:::o;28420:732::-;28539:3;28568:54;28616:5;28568:54;:::i;:::-;28638:86;28717:6;28712:3;28638:86;:::i;:::-;28631:93;;28748:56;28798:5;28748:56;:::i;:::-;28827:7;28858:1;28843:284;28868:6;28865:1;28862:13;28843:284;;;28944:6;28938:13;28971:63;29030:3;29015:13;28971:63;:::i;:::-;28964:70;;29057:60;29110:6;29057:60;:::i;:::-;29047:70;;28903:224;28890:1;28887;28883:9;28878:14;;28843:284;;;28847:14;29143:3;29136:10;;28544:608;;;28420:732;;;;:::o;29158:831::-;29421:4;29459:3;29448:9;29444:19;29436:27;;29473:71;29541:1;29530:9;29526:17;29517:6;29473:71;:::i;:::-;29554:80;29630:2;29619:9;29615:18;29606:6;29554:80;:::i;:::-;29681:9;29675:4;29671:20;29666:2;29655:9;29651:18;29644:48;29709:108;29812:4;29803:6;29709:108;:::i;:::-;29701:116;;29827:72;29895:2;29884:9;29880:18;29871:6;29827:72;:::i;:::-;29909:73;29977:3;29966:9;29962:19;29953:6;29909:73;:::i;:::-;29158:831;;;;;;;;:::o;29995:179::-;30135:31;30131:1;30123:6;30119:14;30112:55;29995:179;:::o;30180:366::-;30322:3;30343:67;30407:2;30402:3;30343:67;:::i;:::-;30336:74;;30419:93;30508:3;30419:93;:::i;:::-;30537:2;30532:3;30528:12;30521:19;;30180:366;;;:::o;30552:419::-;30718:4;30756:2;30745:9;30741:18;30733:26;;30805:9;30799:4;30795:20;30791:1;30780:9;30776:17;30769:47;30833:131;30959:4;30833:131;:::i;:::-;30825:139;;30552:419;;;:::o;30977:147::-;31078:11;31115:3;31100:18;;30977:147;;;;:::o;31130:114::-;;:::o;31250:398::-;31409:3;31430:83;31511:1;31506:3;31430:83;:::i;:::-;31423:90;;31522:93;31611:3;31522:93;:::i;:::-;31640:1;31635:3;31631:11;31624:18;;31250:398;;;:::o;31654:379::-;31838:3;31860:147;32003:3;31860:147;:::i;:::-;31853:154;;32024:3;32017:10;;31654:379;;;:::o;32039:245::-;32179:34;32175:1;32167:6;32163:14;32156:58;32248:28;32243:2;32235:6;32231:15;32224:53;32039:245;:::o;32290:366::-;32432:3;32453:67;32517:2;32512:3;32453:67;:::i;:::-;32446:74;;32529:93;32618:3;32529:93;:::i;:::-;32647:2;32642:3;32638:12;32631:19;;32290:366;;;:::o;32662:419::-;32828:4;32866:2;32855:9;32851:18;32843:26;;32915:9;32909:4;32905:20;32901:1;32890:9;32886:17;32879:47;32943:131;33069:4;32943:131;:::i;:::-;32935:139;;32662:419;;;:::o;33087:224::-;33227:34;33223:1;33215:6;33211:14;33204:58;33296:7;33291:2;33283:6;33279:15;33272:32;33087:224;:::o;33317:366::-;33459:3;33480:67;33544:2;33539:3;33480:67;:::i;:::-;33473:74;;33556:93;33645:3;33556:93;:::i;:::-;33674:2;33669:3;33665:12;33658:19;;33317:366;;;:::o;33689:419::-;33855:4;33893:2;33882:9;33878:18;33870:26;;33942:9;33936:4;33932:20;33928:1;33917:9;33913:17;33906:47;33970:131;34096:4;33970:131;:::i;:::-;33962:139;;33689:419;;;:::o;34114:222::-;34254:34;34250:1;34242:6;34238:14;34231:58;34323:5;34318:2;34310:6;34306:15;34299:30;34114:222;:::o;34342:366::-;34484:3;34505:67;34569:2;34564:3;34505:67;:::i;:::-;34498:74;;34581:93;34670:3;34581:93;:::i;:::-;34699:2;34694:3;34690:12;34683:19;;34342:366;;;:::o;34714:419::-;34880:4;34918:2;34907:9;34903:18;34895:26;;34967:9;34961:4;34957:20;34953:1;34942:9;34938:17;34931:47;34995:131;35121:4;34995:131;:::i;:::-;34987:139;;34714:419;;;:::o;35139:225::-;35279:34;35275:1;35267:6;35263:14;35256:58;35348:8;35343:2;35335:6;35331:15;35324:33;35139:225;:::o;35370:366::-;35512:3;35533:67;35597:2;35592:3;35533:67;:::i;:::-;35526:74;;35609:93;35698:3;35609:93;:::i;:::-;35727:2;35722:3;35718:12;35711:19;;35370:366;;;:::o;35742:419::-;35908:4;35946:2;35935:9;35931:18;35923:26;;35995:9;35989:4;35985:20;35981:1;35970:9;35966:17;35959:47;36023:131;36149:4;36023:131;:::i;:::-;36015:139;;35742:419;;;:::o;36167:807::-;36416:4;36454:3;36443:9;36439:19;36431:27;;36468:71;36536:1;36525:9;36521:17;36512:6;36468:71;:::i;:::-;36549:72;36617:2;36606:9;36602:18;36593:6;36549:72;:::i;:::-;36631:80;36707:2;36696:9;36692:18;36683:6;36631:80;:::i;:::-;36721;36797:2;36786:9;36782:18;36773:6;36721:80;:::i;:::-;36811:73;36879:3;36868:9;36864:19;36855:6;36811:73;:::i;:::-;36894;36962:3;36951:9;36947:19;36938:6;36894:73;:::i;:::-;36167:807;;;;;;;;;:::o;36980:143::-;37037:5;37068:6;37062:13;37053:22;;37084:33;37111:5;37084:33;:::i;:::-;36980:143;;;;:::o;37129:663::-;37217:6;37225;37233;37282:2;37270:9;37261:7;37257:23;37253:32;37250:119;;;37288:79;;:::i;:::-;37250:119;37408:1;37433:64;37489:7;37480:6;37469:9;37465:22;37433:64;:::i;:::-;37423:74;;37379:128;37546:2;37572:64;37628:7;37619:6;37608:9;37604:22;37572:64;:::i;:::-;37562:74;;37517:129;37685:2;37711:64;37767:7;37758:6;37747:9;37743:22;37711:64;:::i;:::-;37701:74;;37656:129;37129:663;;;;;:::o

Swarm Source

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