ETH Price: $3,080.71 (-6.75%)
Gas: 8 Gwei

Token

Captain Cuck AI (SEAGEN)
 

Overview

Max Total Supply

1,718,325.407232378430435594 SEAGEN

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.815345397225593659 SEAGEN

Value
$0.00
0xa69c7d711ad1d87a422cc4df2a43e8c6a25c03be
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:
captaincuck

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.17;

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

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

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

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

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

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        //Contract By Techaddict
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
}

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

    // Set original owner
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

    // Restrict function to contract owner only
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    // Renounce ownership of the contract
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

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

contract captaincuck is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;

    address payable private Wallet_Dev =
        payable(0x3d5e71A041fD15F83F96a97347108b5f5e57A5A3);

    string private _name = "Captain Cuck AI";
    string private _symbol = "SEAGEN";
    uint8 private _decimals = 18;
    uint256 private _tTotal = 7000000 * 10**uint8(_decimals);
    uint256 private _tFeeTotal;

    bool public limitedBuyOnly = true;

    // Counter for liquify trigger
    uint8 private txCount = 0;
    uint8 private swapTrigger = 2;

    // This is the max fee that the contract will accept, it is hard-coded to protect buyers, note: it's 20 / 10
    uint256 private maxPossibleFee = 8;

    // Setting the initial fees
    uint256 private _TotalFee = 2;
    uint256 public _buyFee = 2;
    uint256 public _sellFee = 2;

    // 'Previous fees' are used to keep track of fee settings when removing and restoring fees
    uint256 private _previousTotalFee = _TotalFee;
    uint256 private _previousBuyFee = _buyFee;
    uint256 private _previousSellFee = _sellFee;

    /*

    WALLET LIMITS 
    
    */

    uint256 public _maxTxAmount = _tTotal.mul(1).div(100);
    uint256 private _previousMaxTxAmount = _maxTxAmount;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        _tOwned[owner()] = _tTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Wallet_Dev] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

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

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

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

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

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

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

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

    function burn(uint256 amount) external onlyOwner {
        // Ensure the account is valid
        require(msg.sender != address(0), "ERC20: burn from the zero address");

        // Reduce the account's balance by the burn amount
        _tOwned[msg.sender] = _tOwned[msg.sender].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        // Reduce the total supply by the burn amount
        _tTotal = _tTotal.sub(amount);
        emit Transfer(msg.sender, address(0), amount);
    }

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

        // Reduce the account's balance by the burn amount
        _tOwned[account] = _tOwned[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );

        // Reduce the total supply by the burn amount
        _tTotal = _tTotal.sub(amount);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    // Set a wallet address so that it does not have to pay transaction fees
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    // Set a wallet address so that it has to pay transaction fees
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function _set_Fees(uint256 Buy_Fee, uint256 Sell_Fee) external onlyOwner {
        require((Buy_Fee + Sell_Fee) <= maxPossibleFee, "Fee is too high!");
        _sellFee = Sell_Fee;
        _buyFee = Buy_Fee;
    }

    function Wallet_Update_Dev(address payable wallet) public onlyOwner {
        Wallet_Dev = wallet;
        _isExcludedFromFee[Wallet_Dev] = true;
    }

    function setMaxBuyOnly(bool toggle) public onlyOwner {
        limitedBuyOnly = toggle;
    }

    // Toggle on and off to auto process tokens to ETH wallet
    function set_Swap_And_Liquify_Enabled(bool true_or_false) public onlyOwner {
        swapAndLiquifyEnabled = true_or_false;
        emit SwapAndLiquifyEnabledUpdated(true_or_false);
    }

    // This will set the number of transactions required before the 'swapAndLiquify' function triggers
    function set_Number_Of_Transactions_Before_Liquify_Trigger(
        uint8 number_of_transactions
    ) public onlyOwner {
        swapTrigger = number_of_transactions;
    }

    receive() external payable {}

    bool public noFeeToTransfer = true;

    function set_Transfers_Without_Fees(bool true_or_false) external onlyOwner {
        noFeeToTransfer = true_or_false;
    }

   
    // Set the Max transaction amount (percent of total supply)
    function set_Max_Transaction_Percent(uint256 maxTxPercent_x100)
        external
        onlyOwner
    {
        _maxTxAmount = (_tTotal * maxTxPercent_x100) / 10000;
    }

    function removeAllFee() private {
        if (_TotalFee == 0 && _buyFee == 0 && _sellFee == 0) return;

        _previousBuyFee = _buyFee;
        _previousSellFee = _sellFee;
        _previousTotalFee = _TotalFee;
        _buyFee = 0;
        _sellFee = 0;
        _TotalFee = 0;
    }

    function restoreAllFee() private {
        _TotalFee = _previousTotalFee;
        _buyFee = _previousBuyFee;
        _sellFee = _previousSellFee;
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(
            owner != address(0) && spender != address(0),
            "ERR: zero address"
        );
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
       // Limit the maximum number of tokens that can be bought in one transaction

        if (from == uniswapV2Pair && to != owner() && limitedBuyOnly == true) {
            require(
                amount <= _maxTxAmount,
                "You are trying to buy more than the max transaction limit."
            );
        }
        require(from != address(0) && to != address(0), "Using 0 address!");
        require(amount > 0, "Token value must be higher than zero.");
        if (
            txCount >= swapTrigger &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            txCount = 0;
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance > _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }
            if (contractTokenBalance > 0) {
                swapAndLiquify(contractTokenBalance);
            }
        }
        bool takeFee = true;

        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            (noFeeToTransfer && from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else if (from == uniswapV2Pair) {
            _TotalFee = _buyFee;
        } else if (to == uniswapV2Pair) {
            _TotalFee = _sellFee;
            uint256 burnAmount = amount.div(100);
            // Burn 1% of the sell transaction
            _burn(from, burnAmount);

            // Update the amount to be transferred after the burn
            amount = amount.sub(burnAmount);
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function sendToWallet(address payable wallet, uint256 amount) private {
        wallet.transfer(amount);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        swapTokensForETH(contractTokenBalance);
        uint256 contractETH = address(this).balance;
        sendToWallet(Wallet_Dev, contractETH);
    }
    function process_Tokens_Now(uint256 percent_Of_Tokens_To_Process)
        public
        onlyOwner
    {
        // Do not trigger if already in swap
        require(!inSwapAndLiquify, "Currently processing, try later.");
        if (percent_Of_Tokens_To_Process > 100) {
            percent_Of_Tokens_To_Process == 100;
        }
        uint256 tokensOnContract = balanceOf(address(this));
        uint256 sendTokens = (tokensOnContract * percent_Of_Tokens_To_Process) /
            100;
        swapAndLiquify(sendTokens);
    }
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    // Set new router and make the new pair address
    function set_New_Router_and_Make_Pair(address newRouter) public onlyOwner {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Pair = IUniswapV2Factory(_newPCSRouter.factory()).createPair(
            address(this),
            _newPCSRouter.WETH()
        );
        uniswapV2Router = _newPCSRouter;
    }

    // Set new router
    function set_New_Router_Address(address newRouter) public onlyOwner {
        IUniswapV2Router02 _newPCSRouter = IUniswapV2Router02(newRouter);
        uniswapV2Router = _newPCSRouter;
    }

    function set_New_Pair_Address(address newPair) public onlyOwner {
        uniswapV2Pair = newPair;
    }


    // Check if token transfer needs to process fees
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {
            removeAllFee();
        } else {
            txCount++;
        }
        _transferTokens(sender, recipient, amount);

        if (!takeFee) restoreAllFee();
    }

    function _transferTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (uint256 tTransferAmount, uint256 tDev) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _tOwned[address(this)] = _tOwned[address(this)].add(tDev);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _getValues(uint256 tAmount)
        private
        view
        returns (uint256, uint256)
    {
        uint256 tDev = (tAmount * _TotalFee) / 100;
        uint256 tTransferAmount = tAmount.sub(tDev);
        return (tTransferAmount, tDev);
    }
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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 payable","name":"wallet","type":"address"}],"name":"Wallet_Update_Dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Buy_Fee","type":"uint256"},{"internalType":"uint256","name":"Sell_Fee","type":"uint256"}],"name":"_set_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitedBuyOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noFeeToTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_Of_Tokens_To_Process","type":"uint256"}],"name":"process_Tokens_Now","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setMaxBuyOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent_x100","type":"uint256"}],"name":"set_Max_Transaction_Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"set_New_Pair_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"set_New_Router_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"set_New_Router_and_Make_Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"number_of_transactions","type":"uint8"}],"name":"set_Number_Of_Transactions_Before_Liquify_Trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_Swap_And_Liquify_Enabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"true_or_false","type":"bool"}],"name":"set_Transfers_Without_Fees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052733d5e71a041fd15f83f96a97347108b5f5e57a5a3600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600f81526020017f4361707461696e204375636b2041490000000000000000000000000000000000815250600590816200009f9190620009df565b506040518060400160405280600681526020017f53454147454e000000000000000000000000000000000000000000000000000081525060069081620000e69190620009df565b506012600760006101000a81548160ff021916908360ff160217905550600760009054906101000a900460ff16600a62000121919062000c56565b626acfc062000131919062000ca7565b6008556001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff021916908360ff1602179055506002600a60026101000a81548160ff021916908360ff1602179055506008600b556002600c556002600d556002600e55600c54600f55600d54601055600e54601155620001e46064620001d060016008546200070c60201b62001f7a1790919060201c565b6200072460201b62001f901790919060201c565b60125560125460135560016015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055503480156200022f57600080fd5b50733d5e71a041fd15f83f96a97347108b5f5e57a5a36000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360085460016000620003166200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000447573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046d919062000d5c565b6040518363ffffffff1660e01b81526004016200048c92919062000d9f565b6020604051808303816000875af1158015620004ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d2919062000d5c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620005696200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200069c6200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620006fd919062000ddd565b60405180910390a35062000e61565b600081836200071c919062000ca7565b905092915050565b6000818362000734919062000e29565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e757607f821691505b602082108103620007fd57620007fc6200079f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000828565b62000873868362000828565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008c0620008ba620008b4846200088b565b62000895565b6200088b565b9050919050565b6000819050919050565b620008dc836200089f565b620008f4620008eb82620008c7565b84845462000835565b825550505050565b600090565b6200090b620008fc565b62000918818484620008d1565b505050565b5b8181101562000940576200093460008262000901565b6001810190506200091e565b5050565b601f8211156200098f57620009598162000803565b620009648462000818565b8101602085101562000974578190505b6200098c620009838562000818565b8301826200091d565b50505b505050565b600082821c905092915050565b6000620009b46000198460080262000994565b1980831691505092915050565b6000620009cf8383620009a1565b9150826002028217905092915050565b620009ea8262000765565b67ffffffffffffffff81111562000a065762000a0562000770565b5b62000a128254620007ce565b62000a1f82828562000944565b600060209050601f83116001811462000a57576000841562000a42578287015190505b62000a4e8582620009c1565b86555062000abe565b601f19841662000a678662000803565b60005b8281101562000a915784890151825560018201915060208501945060208101905062000a6a565b8683101562000ab1578489015162000aad601f891682620009a1565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b545780860481111562000b2c5762000b2b62000ac6565b5b600185161562000b3c5780820291505b808102905062000b4c8562000af5565b945062000b0c565b94509492505050565b60008262000b6f576001905062000c42565b8162000b7f576000905062000c42565b816001811462000b98576002811462000ba35762000bd9565b600191505062000c42565b60ff84111562000bb85762000bb762000ac6565b5b8360020a91508482111562000bd25762000bd162000ac6565b5b5062000c42565b5060208310610133831016604e8410600b841016171562000c135782820a90508381111562000c0d5762000c0c62000ac6565b5b62000c42565b62000c22848484600162000b02565b9250905081840481111562000c3c5762000c3b62000ac6565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c63826200088b565b915062000c708362000c49565b925062000c9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b5d565b905092915050565b600062000cb4826200088b565b915062000cc1836200088b565b925082820262000cd1816200088b565b9150828204841483151762000ceb5762000cea62000ac6565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d248262000cf7565b9050919050565b62000d368162000d17565b811462000d4257600080fd5b50565b60008151905062000d568162000d2b565b92915050565b60006020828403121562000d755762000d7462000cf2565b5b600062000d858482850162000d45565b91505092915050565b62000d998162000d17565b82525050565b600060408201905062000db6600083018562000d8e565b62000dc5602083018462000d8e565b9392505050565b62000dd7816200088b565b82525050565b600060208201905062000df4600083018462000dcc565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e36826200088b565b915062000e43836200088b565b92508262000e565762000e5562000dfa565b5b828204905092915050565b613d3a8062000e716000396000f3fe6080604052600436106102295760003560e01c806370a0823111610123578063a457c2d7116100ab578063dd62ed3e1161006f578063dd62ed3e14610814578063ddbf526614610851578063ea2f0b371461087a578063f2fde38b146108a3578063f7739b5f146108cc57610230565b8063a457c2d71461071f578063a514a07d1461075c578063a9059cbb14610785578063ba0382b5146107c2578063d785d5be146107eb57610230565b80637d1db4a5116100f25780637d1db4a51461064a5780638824e16e146106755780638a6034b11461069e5780638da5cb5b146106c957806395d89b41146106f457610230565b806370a0823114610590578063715018a6146105cd578063768dc710146105e45780637caefa891461062157610230565b8063313ce567116101b1578063437823ec11610175578063437823ec146104bd57806349bd5a5e146104e65780634a74bb0214610511578063590f897e1461053c57806367cbd84c1461056757610230565b8063313ce567146103d857806336b1a1bc14610403578063395093511461042c57806340b9a54b1461046957806342966c681461049457610230565b80631694505e116101f85780631694505e146102f157806318160ddd1461031c578063220f66961461034757806323b872dd146103725780632e39c6c6146103af57610230565b806306fdde0314610235578063095ea7b3146102605780631282a0a01461029d57806313fad07a146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108f5565b6040516102579190612fd3565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061308e565b610987565b60405161029491906130e9565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190613104565b6109a5565b005b3480156102d257600080fd5b506102db610c05565b6040516102e891906130e9565b60405180910390f35b3480156102fd57600080fd5b50610306610c18565b6040516103139190613190565b60405180910390f35b34801561032857600080fd5b50610331610c3e565b60405161033e91906131ba565b60405180910390f35b34801561035357600080fd5b5061035c610c48565b60405161036991906130e9565b60405180910390f35b34801561037e57600080fd5b50610399600480360381019061039491906131d5565b610c5b565b6040516103a691906130e9565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190613228565b610d34565b005b3480156103e457600080fd5b506103ed610dd4565b6040516103fa9190613271565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190613104565b610deb565b005b34801561043857600080fd5b50610453600480360381019061044e919061308e565b610eb1565b60405161046091906130e9565b60405180910390f35b34801561047557600080fd5b5061047e610f64565b60405161048b91906131ba565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190613228565b610f6a565b005b3480156104c957600080fd5b506104e460048036038101906104df9190613104565b611188565b005b3480156104f257600080fd5b506104fb61125f565b604051610508919061329b565b60405180910390f35b34801561051d57600080fd5b50610526611285565b60405161053391906130e9565b60405180910390f35b34801561054857600080fd5b50610551611296565b60405161055e91906131ba565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906132b6565b61129c565b005b34801561059c57600080fd5b506105b760048036038101906105b29190613104565b61137a565b6040516105c491906131ba565b60405180910390f35b3480156105d957600080fd5b506105e26113c3565b005b3480156105f057600080fd5b5061060b60048036038101906106069190613104565b6114fd565b60405161061891906130e9565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190613322565b61151d565b005b34801561065657600080fd5b5061065f6115b7565b60405161066c91906131ba565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061338d565b6115bd565b005b3480156106aa57600080fd5b506106b36116f7565b6040516106c091906130e9565b60405180910390f35b3480156106d557600080fd5b506106de61170a565b6040516106eb919061329b565b60405180910390f35b34801561070057600080fd5b50610709611733565b6040516107169190612fd3565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061308e565b6117c5565b60405161075391906130e9565b60405180910390f35b34801561076857600080fd5b50610783600480360381019061077e91906133e6565b611892565b005b34801561079157600080fd5b506107ac60048036038101906107a7919061308e565b61192b565b6040516107b991906130e9565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e491906133e6565b611949565b005b3480156107f757600080fd5b50610812600480360381019061080d9190613104565b6119e2565b005b34801561082057600080fd5b5061083b60048036038101906108369190613413565b611aa2565b60405161084891906131ba565b60405180910390f35b34801561085d57600080fd5b5061087860048036038101906108739190613228565b611b29565b005b34801561088657600080fd5b506108a1600480360381019061089c9190613104565b611c2c565b005b3480156108af57600080fd5b506108ca60048036038101906108c59190613104565b611d03565b005b3480156108d857600080fd5b506108f360048036038101906108ee91906133e6565b611eab565b005b60606005805461090490613482565b80601f016020809104026020016040519081016040528092919081815260200182805461093090613482565b801561097d5780601f106109525761010080835404028352916020019161097d565b820191906000526020600020905b81548152906001019060200180831161096057829003601f168201915b5050505050905090565b600061099b610994611fa6565b8484611fae565b6001905092915050565b6109ad611fa6565b73ffffffffffffffffffffffffffffffffffffffff166109cb61170a565b73ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a18906134ff565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613534565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190613534565b6040518363ffffffff1660e01b8152600401610b3d929190613561565b6020604051808303816000875af1158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190613534565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601560169054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854905090565b601560149054906101000a900460ff1681565b6000610c68848484612142565b610d2984610c74611fa6565b610d2485604051806060016040528060288152602001613cb860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cda611fa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b611fae565b600190509392505050565b610d3c611fa6565b73ffffffffffffffffffffffffffffffffffffffff16610d5a61170a565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da7906134ff565b60405180910390fd5b61271081600854610dc191906135b9565b610dcb919061362a565b60128190555050565b6000600760009054906101000a900460ff16905090565b610df3611fa6565b73ffffffffffffffffffffffffffffffffffffffff16610e1161170a565b73ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e906134ff565b60405180910390fd5b600081905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000610f5a610ebe611fa6565b84610f558560026000610ecf611fa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b611fae565b6001905092915050565b600d5481565b610f72611fa6565b73ffffffffffffffffffffffffffffffffffffffff16610f9061170a565b73ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906134ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c906136cd565b60405180910390fd5b6110c181604051806060016040528060228152602001613c9660229139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111198160085461272590919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161117d91906131ba565b60405180910390a350565b611190611fa6565b73ffffffffffffffffffffffffffffffffffffffff166111ae61170a565b73ffffffffffffffffffffffffffffffffffffffff1614611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb906134ff565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b600e5481565b6112a4611fa6565b73ffffffffffffffffffffffffffffffffffffffff166112c261170a565b73ffffffffffffffffffffffffffffffffffffffff1614611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f906134ff565b60405180910390fd5b600b54818361132791906136ed565b1115611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f9061376d565b60405180910390fd5b80600e8190555081600d819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113cb611fa6565b73ffffffffffffffffffffffffffffffffffffffff166113e961170a565b73ffffffffffffffffffffffffffffffffffffffff161461143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906134ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b611525611fa6565b73ffffffffffffffffffffffffffffffffffffffff1661154361170a565b73ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611590906134ff565b60405180910390fd5b80600a60026101000a81548160ff021916908360ff16021790555050565b60125481565b6115c5611fa6565b73ffffffffffffffffffffffffffffffffffffffff166115e361170a565b73ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906134ff565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461174290613482565b80601f016020809104026020016040519081016040528092919081815260200182805461176e90613482565b80156117bb5780601f10611790576101008083540402835291602001916117bb565b820191906000526020600020905b81548152906001019060200180831161179e57829003601f168201915b5050505050905090565b60006118886117d2611fa6565b8461188385604051806060016040528060258152602001613ce060259139600260006117fc611fa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b611fae565b6001905092915050565b61189a611fa6565b73ffffffffffffffffffffffffffffffffffffffff166118b861170a565b73ffffffffffffffffffffffffffffffffffffffff161461190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906134ff565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b600061193f611938611fa6565b8484612142565b6001905092915050565b611951611fa6565b73ffffffffffffffffffffffffffffffffffffffff1661196f61170a565b73ffffffffffffffffffffffffffffffffffffffff16146119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc906134ff565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6119ea611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611a0861170a565b73ffffffffffffffffffffffffffffffffffffffff1614611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a55906134ff565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b31611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611b4f61170a565b73ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c906134ff565b60405180910390fd5b601560149054906101000a900460ff1615611bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec906137d9565b60405180910390fd5b6000611c003061137a565b9050600060648383611c1291906135b9565b611c1c919061362a565b9050611c278161273b565b505050565b611c34611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611c5261170a565b73ffffffffffffffffffffffffffffffffffffffff1614611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f906134ff565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d0b611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611d2961170a565b73ffffffffffffffffffffffffffffffffffffffff1614611d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d76906134ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de59061386b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611eb3611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611ed161170a565b73ffffffffffffffffffffffffffffffffffffffff1614611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906134ff565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611f6f91906130e9565b60405180910390a150565b60008183611f8891906135b9565b905092915050565b60008183611f9e919061362a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120185750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e906138d7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161213591906131ba565b60405180910390a3505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121d257506121a261170a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121f1575060011515600a60009054906101000a900460ff161515145b1561223c5760125481111561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290613969565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122a65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906139d5565b60405180910390fd5b60008111612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90613a67565b60405180910390fd5b600a60029054906101000a900460ff1660ff16600a60019054906101000a900460ff1660ff16101580156123695750601560149054906101000a900460ff16155b80156123c35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d9575060158054906101000a900460ff165b1561242c576000600a60016101000a81548160ff021916908360ff16021790555060006124053061137a565b90506012548111156124175760125490505b600081111561242a576124298161273b565b5b505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124d35750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061259e5750601560169054906101000a900460ff1680156125435750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561259d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156125ac57600090506126a8565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361260f57600d54600c819055506126a7565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126a657600e54600c819055506000612683606484611f9090919063ffffffff16565b905061268f85826127af565b6126a2818461272590919063ffffffff16565b9250505b5b5b6126b484848484612952565b50505050565b6000838311158290612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f99190612fd3565b60405180910390fd5b5082840390509392505050565b6000818361271d91906136ed565b905092915050565b600081836127339190613a87565b905092915050565b6001601560146101000a81548160ff02191690831515021790555061275f816129bc565b6000479050612790600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612bff565b506000601560146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361281e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612815906136cd565b60405180910390fd5b61288a81604051806060016040528060228152602001613c9660229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e28160085461272590919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161294691906131ba565b60405180910390a35050565b806129645761295f612c4a565b61299d565b600a600181819054906101000a900460ff168092919061298390613abb565b91906101000a81548160ff021916908360ff160217905550505b6129a8848484612ca6565b806129b6576129b5612ee1565b5b50505050565b6000600267ffffffffffffffff8111156129d9576129d8613ae4565b5b604051908082528060200260200182016040528015612a075781602001602082028036833780820191505090505b5090503081600081518110612a1f57612a1e613b13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aea9190613534565b81600181518110612afe57612afd613b13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fae565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc9959493929190613c3b565b600060405180830381600087803b158015612be357600080fd5b505af1158015612bf7573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c45573d6000803e3d6000fd5b505050565b6000600c54148015612c5e57506000600d54145b8015612c6c57506000600e54145b612ca457600d54601081905550600e54601181905550600c54600f819055506000600d819055506000600e819055506000600c819055505b565b600080612cb283612efe565b91509150612d0883600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d9d82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e3281600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed291906131ba565b60405180910390a35050505050565b600f54600c81905550601054600d81905550601154600e81905550565b60008060006064600c5485612f1391906135b9565b612f1d919061362a565b90506000612f34828661272590919063ffffffff16565b90508082935093505050915091565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f7d578082015181840152602081019050612f62565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fa582612f43565b612faf8185612f4e565b9350612fbf818560208601612f5f565b612fc881612f89565b840191505092915050565b60006020820190508181036000830152612fed8184612f9a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061302582612ffa565b9050919050565b6130358161301a565b811461304057600080fd5b50565b6000813590506130528161302c565b92915050565b6000819050919050565b61306b81613058565b811461307657600080fd5b50565b60008135905061308881613062565b92915050565b600080604083850312156130a5576130a4612ff5565b5b60006130b385828601613043565b92505060206130c485828601613079565b9150509250929050565b60008115159050919050565b6130e3816130ce565b82525050565b60006020820190506130fe60008301846130da565b92915050565b60006020828403121561311a57613119612ff5565b5b600061312884828501613043565b91505092915050565b6000819050919050565b600061315661315161314c84612ffa565b613131565b612ffa565b9050919050565b60006131688261313b565b9050919050565b600061317a8261315d565b9050919050565b61318a8161316f565b82525050565b60006020820190506131a56000830184613181565b92915050565b6131b481613058565b82525050565b60006020820190506131cf60008301846131ab565b92915050565b6000806000606084860312156131ee576131ed612ff5565b5b60006131fc86828701613043565b935050602061320d86828701613043565b925050604061321e86828701613079565b9150509250925092565b60006020828403121561323e5761323d612ff5565b5b600061324c84828501613079565b91505092915050565b600060ff82169050919050565b61326b81613255565b82525050565b60006020820190506132866000830184613262565b92915050565b6132958161301a565b82525050565b60006020820190506132b0600083018461328c565b92915050565b600080604083850312156132cd576132cc612ff5565b5b60006132db85828601613079565b92505060206132ec85828601613079565b9150509250929050565b6132ff81613255565b811461330a57600080fd5b50565b60008135905061331c816132f6565b92915050565b60006020828403121561333857613337612ff5565b5b60006133468482850161330d565b91505092915050565b600061335a82612ffa565b9050919050565b61336a8161334f565b811461337557600080fd5b50565b60008135905061338781613361565b92915050565b6000602082840312156133a3576133a2612ff5565b5b60006133b184828501613378565b91505092915050565b6133c3816130ce565b81146133ce57600080fd5b50565b6000813590506133e0816133ba565b92915050565b6000602082840312156133fc576133fb612ff5565b5b600061340a848285016133d1565b91505092915050565b6000806040838503121561342a57613429612ff5565b5b600061343885828601613043565b925050602061344985828601613043565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061349a57607f821691505b6020821081036134ad576134ac613453565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134e9602083612f4e565b91506134f4826134b3565b602082019050919050565b60006020820190508181036000830152613518816134dc565b9050919050565b60008151905061352e8161302c565b92915050565b60006020828403121561354a57613549612ff5565b5b60006135588482850161351f565b91505092915050565b6000604082019050613576600083018561328c565b613583602083018461328c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135c482613058565b91506135cf83613058565b92508282026135dd81613058565b915082820484148315176135f4576135f361358a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061363582613058565b915061364083613058565b9250826136505761364f6135fb565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006136b7602183612f4e565b91506136c28261365b565b604082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b60006136f882613058565b915061370383613058565b925082820190508082111561371b5761371a61358a565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b6000613757601083612f4e565b915061376282613721565b602082019050919050565b600060208201905081810360008301526137868161374a565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b60006137c3602083612f4e565b91506137ce8261378d565b602082019050919050565b600060208201905081810360008301526137f2816137b6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613855602683612f4e565b9150613860826137f9565b604082019050919050565b6000602082019050818103600083015261388481613848565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b60006138c1601183612f4e565b91506138cc8261388b565b602082019050919050565b600060208201905081810360008301526138f0816138b4565b9050919050565b7f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060008201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000602082015250565b6000613953603a83612f4e565b915061395e826138f7565b604082019050919050565b6000602082019050818103600083015261398281613946565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b60006139bf601083612f4e565b91506139ca82613989565b602082019050919050565b600060208201905081810360008301526139ee816139b2565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b6000613a51602583612f4e565b9150613a5c826139f5565b604082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b6000613a9282613058565b9150613a9d83613058565b9250828203905081811115613ab557613ab461358a565b5b92915050565b6000613ac682613255565b915060ff8203613ad957613ad861358a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613b67613b62613b5d84613b42565b613131565b613058565b9050919050565b613b7781613b4c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bb28161301a565b82525050565b6000613bc48383613ba9565b60208301905092915050565b6000602082019050919050565b6000613be882613b7d565b613bf28185613b88565b9350613bfd83613b99565b8060005b83811015613c2e578151613c158882613bb8565b9750613c2083613bd0565b925050600181019050613c01565b5085935050505092915050565b600060a082019050613c5060008301886131ab565b613c5d6020830187613b6e565b8181036040830152613c6f8186613bdd565b9050613c7e606083018561328c565b613c8b60808301846131ab565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209e6a78eb60cb0986d2c7246774a9109626d381fd5691b499f6b9b47a649b8b2764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806370a0823111610123578063a457c2d7116100ab578063dd62ed3e1161006f578063dd62ed3e14610814578063ddbf526614610851578063ea2f0b371461087a578063f2fde38b146108a3578063f7739b5f146108cc57610230565b8063a457c2d71461071f578063a514a07d1461075c578063a9059cbb14610785578063ba0382b5146107c2578063d785d5be146107eb57610230565b80637d1db4a5116100f25780637d1db4a51461064a5780638824e16e146106755780638a6034b11461069e5780638da5cb5b146106c957806395d89b41146106f457610230565b806370a0823114610590578063715018a6146105cd578063768dc710146105e45780637caefa891461062157610230565b8063313ce567116101b1578063437823ec11610175578063437823ec146104bd57806349bd5a5e146104e65780634a74bb0214610511578063590f897e1461053c57806367cbd84c1461056757610230565b8063313ce567146103d857806336b1a1bc14610403578063395093511461042c57806340b9a54b1461046957806342966c681461049457610230565b80631694505e116101f85780631694505e146102f157806318160ddd1461031c578063220f66961461034757806323b872dd146103725780632e39c6c6146103af57610230565b806306fdde0314610235578063095ea7b3146102605780631282a0a01461029d57806313fad07a146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108f5565b6040516102579190612fd3565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061308e565b610987565b60405161029491906130e9565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190613104565b6109a5565b005b3480156102d257600080fd5b506102db610c05565b6040516102e891906130e9565b60405180910390f35b3480156102fd57600080fd5b50610306610c18565b6040516103139190613190565b60405180910390f35b34801561032857600080fd5b50610331610c3e565b60405161033e91906131ba565b60405180910390f35b34801561035357600080fd5b5061035c610c48565b60405161036991906130e9565b60405180910390f35b34801561037e57600080fd5b50610399600480360381019061039491906131d5565b610c5b565b6040516103a691906130e9565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190613228565b610d34565b005b3480156103e457600080fd5b506103ed610dd4565b6040516103fa9190613271565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190613104565b610deb565b005b34801561043857600080fd5b50610453600480360381019061044e919061308e565b610eb1565b60405161046091906130e9565b60405180910390f35b34801561047557600080fd5b5061047e610f64565b60405161048b91906131ba565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190613228565b610f6a565b005b3480156104c957600080fd5b506104e460048036038101906104df9190613104565b611188565b005b3480156104f257600080fd5b506104fb61125f565b604051610508919061329b565b60405180910390f35b34801561051d57600080fd5b50610526611285565b60405161053391906130e9565b60405180910390f35b34801561054857600080fd5b50610551611296565b60405161055e91906131ba565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906132b6565b61129c565b005b34801561059c57600080fd5b506105b760048036038101906105b29190613104565b61137a565b6040516105c491906131ba565b60405180910390f35b3480156105d957600080fd5b506105e26113c3565b005b3480156105f057600080fd5b5061060b60048036038101906106069190613104565b6114fd565b60405161061891906130e9565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190613322565b61151d565b005b34801561065657600080fd5b5061065f6115b7565b60405161066c91906131ba565b60405180910390f35b34801561068157600080fd5b5061069c6004803603810190610697919061338d565b6115bd565b005b3480156106aa57600080fd5b506106b36116f7565b6040516106c091906130e9565b60405180910390f35b3480156106d557600080fd5b506106de61170a565b6040516106eb919061329b565b60405180910390f35b34801561070057600080fd5b50610709611733565b6040516107169190612fd3565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061308e565b6117c5565b60405161075391906130e9565b60405180910390f35b34801561076857600080fd5b50610783600480360381019061077e91906133e6565b611892565b005b34801561079157600080fd5b506107ac60048036038101906107a7919061308e565b61192b565b6040516107b991906130e9565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e491906133e6565b611949565b005b3480156107f757600080fd5b50610812600480360381019061080d9190613104565b6119e2565b005b34801561082057600080fd5b5061083b60048036038101906108369190613413565b611aa2565b60405161084891906131ba565b60405180910390f35b34801561085d57600080fd5b5061087860048036038101906108739190613228565b611b29565b005b34801561088657600080fd5b506108a1600480360381019061089c9190613104565b611c2c565b005b3480156108af57600080fd5b506108ca60048036038101906108c59190613104565b611d03565b005b3480156108d857600080fd5b506108f360048036038101906108ee91906133e6565b611eab565b005b60606005805461090490613482565b80601f016020809104026020016040519081016040528092919081815260200182805461093090613482565b801561097d5780601f106109525761010080835404028352916020019161097d565b820191906000526020600020905b81548152906001019060200180831161096057829003601f168201915b5050505050905090565b600061099b610994611fa6565b8484611fae565b6001905092915050565b6109ad611fa6565b73ffffffffffffffffffffffffffffffffffffffff166109cb61170a565b73ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a18906134ff565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613534565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190613534565b6040518363ffffffff1660e01b8152600401610b3d929190613561565b6020604051808303816000875af1158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190613534565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601560169054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854905090565b601560149054906101000a900460ff1681565b6000610c68848484612142565b610d2984610c74611fa6565b610d2485604051806060016040528060288152602001613cb860289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cda611fa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b611fae565b600190509392505050565b610d3c611fa6565b73ffffffffffffffffffffffffffffffffffffffff16610d5a61170a565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da7906134ff565b60405180910390fd5b61271081600854610dc191906135b9565b610dcb919061362a565b60128190555050565b6000600760009054906101000a900460ff16905090565b610df3611fa6565b73ffffffffffffffffffffffffffffffffffffffff16610e1161170a565b73ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e906134ff565b60405180910390fd5b600081905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000610f5a610ebe611fa6565b84610f558560026000610ecf611fa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b611fae565b6001905092915050565b600d5481565b610f72611fa6565b73ffffffffffffffffffffffffffffffffffffffff16610f9061170a565b73ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906134ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104c906136cd565b60405180910390fd5b6110c181604051806060016040528060228152602001613c9660229139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111198160085461272590919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161117d91906131ba565b60405180910390a350565b611190611fa6565b73ffffffffffffffffffffffffffffffffffffffff166111ae61170a565b73ffffffffffffffffffffffffffffffffffffffff1614611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb906134ff565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b600e5481565b6112a4611fa6565b73ffffffffffffffffffffffffffffffffffffffff166112c261170a565b73ffffffffffffffffffffffffffffffffffffffff1614611318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130f906134ff565b60405180910390fd5b600b54818361132791906136ed565b1115611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f9061376d565b60405180910390fd5b80600e8190555081600d819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113cb611fa6565b73ffffffffffffffffffffffffffffffffffffffff166113e961170a565b73ffffffffffffffffffffffffffffffffffffffff161461143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906134ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b611525611fa6565b73ffffffffffffffffffffffffffffffffffffffff1661154361170a565b73ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611590906134ff565b60405180910390fd5b80600a60026101000a81548160ff021916908360ff16021790555050565b60125481565b6115c5611fa6565b73ffffffffffffffffffffffffffffffffffffffff166115e361170a565b73ffffffffffffffffffffffffffffffffffffffff1614611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906134ff565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461174290613482565b80601f016020809104026020016040519081016040528092919081815260200182805461176e90613482565b80156117bb5780601f10611790576101008083540402835291602001916117bb565b820191906000526020600020905b81548152906001019060200180831161179e57829003601f168201915b5050505050905090565b60006118886117d2611fa6565b8461188385604051806060016040528060258152602001613ce060259139600260006117fc611fa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b611fae565b6001905092915050565b61189a611fa6565b73ffffffffffffffffffffffffffffffffffffffff166118b861170a565b73ffffffffffffffffffffffffffffffffffffffff161461190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906134ff565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b600061193f611938611fa6565b8484612142565b6001905092915050565b611951611fa6565b73ffffffffffffffffffffffffffffffffffffffff1661196f61170a565b73ffffffffffffffffffffffffffffffffffffffff16146119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc906134ff565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6119ea611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611a0861170a565b73ffffffffffffffffffffffffffffffffffffffff1614611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a55906134ff565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b31611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611b4f61170a565b73ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c906134ff565b60405180910390fd5b601560149054906101000a900460ff1615611bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec906137d9565b60405180910390fd5b6000611c003061137a565b9050600060648383611c1291906135b9565b611c1c919061362a565b9050611c278161273b565b505050565b611c34611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611c5261170a565b73ffffffffffffffffffffffffffffffffffffffff1614611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f906134ff565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d0b611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611d2961170a565b73ffffffffffffffffffffffffffffffffffffffff1614611d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d76906134ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de59061386b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611eb3611fa6565b73ffffffffffffffffffffffffffffffffffffffff16611ed161170a565b73ffffffffffffffffffffffffffffffffffffffff1614611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e906134ff565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611f6f91906130e9565b60405180910390a150565b60008183611f8891906135b9565b905092915050565b60008183611f9e919061362a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120185750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e906138d7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161213591906131ba565b60405180910390a3505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121d257506121a261170a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121f1575060011515600a60009054906101000a900460ff161515145b1561223c5760125481111561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223290613969565b60405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122a65750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906139d5565b60405180910390fd5b60008111612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90613a67565b60405180910390fd5b600a60029054906101000a900460ff1660ff16600a60019054906101000a900460ff1660ff16101580156123695750601560149054906101000a900460ff16155b80156123c35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123d9575060158054906101000a900460ff165b1561242c576000600a60016101000a81548160ff021916908360ff16021790555060006124053061137a565b90506012548111156124175760125490505b600081111561242a576124298161273b565b5b505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124d35750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061259e5750601560169054906101000a900460ff1680156125435750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561259d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156125ac57600090506126a8565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361260f57600d54600c819055506126a7565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126a657600e54600c819055506000612683606484611f9090919063ffffffff16565b905061268f85826127af565b6126a2818461272590919063ffffffff16565b9250505b5b5b6126b484848484612952565b50505050565b6000838311158290612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f99190612fd3565b60405180910390fd5b5082840390509392505050565b6000818361271d91906136ed565b905092915050565b600081836127339190613a87565b905092915050565b6001601560146101000a81548160ff02191690831515021790555061275f816129bc565b6000479050612790600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612bff565b506000601560146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361281e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612815906136cd565b60405180910390fd5b61288a81604051806060016040528060228152602001613c9660229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ba9092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e28160085461272590919063ffffffff16565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161294691906131ba565b60405180910390a35050565b806129645761295f612c4a565b61299d565b600a600181819054906101000a900460ff168092919061298390613abb565b91906101000a81548160ff021916908360ff160217905550505b6129a8848484612ca6565b806129b6576129b5612ee1565b5b50505050565b6000600267ffffffffffffffff8111156129d9576129d8613ae4565b5b604051908082528060200260200182016040528015612a075781602001602082028036833780820191505090505b5090503081600081518110612a1f57612a1e613b13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aea9190613534565b81600181518110612afe57612afd613b13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611fae565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc9959493929190613c3b565b600060405180830381600087803b158015612be357600080fd5b505af1158015612bf7573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c45573d6000803e3d6000fd5b505050565b6000600c54148015612c5e57506000600d54145b8015612c6c57506000600e54145b612ca457600d54601081905550600e54601181905550600c54600f819055506000600d819055506000600e819055506000600c819055505b565b600080612cb283612efe565b91509150612d0883600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d9d82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e3281600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270f90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed291906131ba565b60405180910390a35050505050565b600f54600c81905550601054600d81905550601154600e81905550565b60008060006064600c5485612f1391906135b9565b612f1d919061362a565b90506000612f34828661272590919063ffffffff16565b90508082935093505050915091565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f7d578082015181840152602081019050612f62565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fa582612f43565b612faf8185612f4e565b9350612fbf818560208601612f5f565b612fc881612f89565b840191505092915050565b60006020820190508181036000830152612fed8184612f9a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061302582612ffa565b9050919050565b6130358161301a565b811461304057600080fd5b50565b6000813590506130528161302c565b92915050565b6000819050919050565b61306b81613058565b811461307657600080fd5b50565b60008135905061308881613062565b92915050565b600080604083850312156130a5576130a4612ff5565b5b60006130b385828601613043565b92505060206130c485828601613079565b9150509250929050565b60008115159050919050565b6130e3816130ce565b82525050565b60006020820190506130fe60008301846130da565b92915050565b60006020828403121561311a57613119612ff5565b5b600061312884828501613043565b91505092915050565b6000819050919050565b600061315661315161314c84612ffa565b613131565b612ffa565b9050919050565b60006131688261313b565b9050919050565b600061317a8261315d565b9050919050565b61318a8161316f565b82525050565b60006020820190506131a56000830184613181565b92915050565b6131b481613058565b82525050565b60006020820190506131cf60008301846131ab565b92915050565b6000806000606084860312156131ee576131ed612ff5565b5b60006131fc86828701613043565b935050602061320d86828701613043565b925050604061321e86828701613079565b9150509250925092565b60006020828403121561323e5761323d612ff5565b5b600061324c84828501613079565b91505092915050565b600060ff82169050919050565b61326b81613255565b82525050565b60006020820190506132866000830184613262565b92915050565b6132958161301a565b82525050565b60006020820190506132b0600083018461328c565b92915050565b600080604083850312156132cd576132cc612ff5565b5b60006132db85828601613079565b92505060206132ec85828601613079565b9150509250929050565b6132ff81613255565b811461330a57600080fd5b50565b60008135905061331c816132f6565b92915050565b60006020828403121561333857613337612ff5565b5b60006133468482850161330d565b91505092915050565b600061335a82612ffa565b9050919050565b61336a8161334f565b811461337557600080fd5b50565b60008135905061338781613361565b92915050565b6000602082840312156133a3576133a2612ff5565b5b60006133b184828501613378565b91505092915050565b6133c3816130ce565b81146133ce57600080fd5b50565b6000813590506133e0816133ba565b92915050565b6000602082840312156133fc576133fb612ff5565b5b600061340a848285016133d1565b91505092915050565b6000806040838503121561342a57613429612ff5565b5b600061343885828601613043565b925050602061344985828601613043565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061349a57607f821691505b6020821081036134ad576134ac613453565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134e9602083612f4e565b91506134f4826134b3565b602082019050919050565b60006020820190508181036000830152613518816134dc565b9050919050565b60008151905061352e8161302c565b92915050565b60006020828403121561354a57613549612ff5565b5b60006135588482850161351f565b91505092915050565b6000604082019050613576600083018561328c565b613583602083018461328c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135c482613058565b91506135cf83613058565b92508282026135dd81613058565b915082820484148315176135f4576135f361358a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061363582613058565b915061364083613058565b9250826136505761364f6135fb565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006136b7602183612f4e565b91506136c28261365b565b604082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b60006136f882613058565b915061370383613058565b925082820190508082111561371b5761371a61358a565b5b92915050565b7f46656520697320746f6f20686967682100000000000000000000000000000000600082015250565b6000613757601083612f4e565b915061376282613721565b602082019050919050565b600060208201905081810360008301526137868161374a565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b60006137c3602083612f4e565b91506137ce8261378d565b602082019050919050565b600060208201905081810360008301526137f2816137b6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613855602683612f4e565b9150613860826137f9565b604082019050919050565b6000602082019050818103600083015261388481613848565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b60006138c1601183612f4e565b91506138cc8261388b565b602082019050919050565b600060208201905081810360008301526138f0816138b4565b9050919050565b7f596f752061726520747279696e6720746f20627579206d6f7265207468616e2060008201527f746865206d6178207472616e73616374696f6e206c696d69742e000000000000602082015250565b6000613953603a83612f4e565b915061395e826138f7565b604082019050919050565b6000602082019050818103600083015261398281613946565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b60006139bf601083612f4e565b91506139ca82613989565b602082019050919050565b600060208201905081810360008301526139ee816139b2565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b6000613a51602583612f4e565b9150613a5c826139f5565b604082019050919050565b60006020820190508181036000830152613a8081613a44565b9050919050565b6000613a9282613058565b9150613a9d83613058565b9250828203905081811115613ab557613ab461358a565b5b92915050565b6000613ac682613255565b915060ff8203613ad957613ad861358a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613b67613b62613b5d84613b42565b613131565b613058565b9050919050565b613b7781613b4c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bb28161301a565b82525050565b6000613bc48383613ba9565b60208301905092915050565b6000602082019050919050565b6000613be882613b7d565b613bf28185613b88565b9350613bfd83613b99565b8060005b83811015613c2e578151613c158882613bb8565b9750613c2083613bd0565b925050600181019050613c01565b5085935050505092915050565b600060a082019050613c5060008301886131ab565b613c5d6020830187613b6e565b8181036040830152613c6f8186613bdd565b9050613c7e606083018561328c565b613c8b60808301846131ab565b969550505050505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209e6a78eb60cb0986d2c7246774a9109626d381fd5691b499f6b9b47a649b8b2764736f6c63430008110033

Deployed Bytecode Sourcemap

16506:13729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19060:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21040:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28393:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23871:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17995:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19337:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18078:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21241:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24117:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19246:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28777:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21695:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17512:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19964:530;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22489:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18043:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18113:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17545:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22794:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19440:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6817:148;;;;;;;;;;;;;:::i;:::-;;16753:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23649:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17875:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23019:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17138:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6502:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19151;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22003:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23914:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19565:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23181:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28978:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19772:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27311:544;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22676:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7021:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23347:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19060:83;19097:13;19130:5;19123:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19060:83;:::o;21040:193::-;21142:4;21164:39;21173:12;:10;:12::i;:::-;21187:7;21196:6;21164:8;:39::i;:::-;21221:4;21214:11;;21040:193;;;;:::o;28393:353::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28478:32:::1;28532:9;28478:64;;28587:13;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28569:53;;;28645:4;28665:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28569:127;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28553:13;;:143;;;;;;;;;;;;;;;;;;28725:13;28707:15;;:31;;;;;;;;;;;;;;;;;;28467:279;28393:353:::0;:::o;23871:34::-;;;;;;;;;;;;;:::o;17995:41::-;;;;;;;;;;;;;:::o;19337:95::-;19390:7;19417;;19410:14;;19337:95;:::o;18078:28::-;;;;;;;;;;;;;:::o;21241:446::-;21373:4;21390:36;21400:6;21408:9;21419:6;21390:9;:36::i;:::-;21437:220;21460:6;21481:12;:10;:12::i;:::-;21508:138;21564:6;21508:138;;;;;;;;;;;;;;;;;:11;:19;21520:6;21508:19;;;;;;;;;;;;;;;:33;21528:12;:10;:12::i;:::-;21508:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;21437:8;:220::i;:::-;21675:4;21668:11;;21241:446;;;;;:::o;24117:177::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24281:5:::1;24260:17;24250:7;;:27;;;;:::i;:::-;24249:37;;;;:::i;:::-;24234:12;:52;;;;24117:177:::0;:::o;19246:83::-;19287:5;19312:9;;;;;;;;;;;19305:16;;19246:83;:::o;28777:193::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28856:32:::1;28910:9;28856:64;;28949:13;28931:15;;:31;;;;;;;;;;;;;;;;;;28845:125;28777:193:::0;:::o;21695:300::-;21810:4;21832:133;21855:12;:10;:12::i;:::-;21882:7;21904:50;21943:10;21904:11;:25;21916:12;:10;:12::i;:::-;21904:25;;;;;;;;;;;;;;;:34;21930:7;21904:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;21832:8;:133::i;:::-;21983:4;21976:11;;21695:300;;;;:::o;17512:26::-;;;;:::o;19964:530::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20094:1:::1;20072:24;;:10;:24;;::::0;20064:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20229:106;20267:6;20229:106;;;;;;;;;;;;;;;;;:7;:19;20237:10;20229:19;;;;;;;;;;;;;;;;:23;;:106;;;;;:::i;:::-;20207:7;:19;20215:10;20207:19;;;;;;;;;;;;;;;:128;;;;20411:19;20423:6;20411:7;;:11;;:19;;;;:::i;:::-;20401:7;:29;;;;20475:1;20446:40;;20455:10;20446:40;;;20479:6;20446:40;;;;;;:::i;:::-;;;;;;;;19964:530:::0;:::o;22489:111::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22588:4:::1;22558:18;:27;22577:7;22558:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22489:111:::0;:::o;18043:28::-;;;;;;;;;;;;;:::o;18113:40::-;;;;;;;;;;;;:::o;17545:27::-;;;;:::o;22794:217::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22910:14:::1;;22897:8;22887:7;:18;;;;:::i;:::-;22886:38;;22878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22967:8;22956;:19;;;;22996:7;22986;:17;;;;22794:217:::0;;:::o;19440:117::-;19506:7;19533;:16;19541:7;19533:16;;;;;;;;;;;;;;;;19526:23;;19440:117;;;:::o;6817:148::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6924:1:::1;6887:40;;6908:6;::::0;::::1;;;;;;;;6887:40;;;;;;;;;;;;6955:1;6938:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6817:148::o:0;16753:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;23649:177::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23796:22:::1;23782:11;;:36;;;;;;;;;;;;;;;;;;23649:177:::0;:::o;17875:53::-;;;;:::o;23019:154::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23111:6:::1;23098:10;;:19;;;;;;;;;;;;;;;;;;23161:4;23128:18;:30;23147:10;;;;;;;;;;;23128:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23019:154:::0;:::o;17138:33::-;;;;;;;;;;;;;:::o;6502:87::-;6548:7;6575:6;;;;;;;;;;;6568:13;;6502:87;:::o;19151:::-;19190:13;19223:7;19216:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19151:87;:::o;22003:400::-;22123:4;22145:228;22168:12;:10;:12::i;:::-;22195:7;22217:145;22274:15;22217:145;;;;;;;;;;;;;;;;;:11;:25;22229:12;:10;:12::i;:::-;22217:25;;;;;;;;;;;;;;;:34;22243:7;22217:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;22145:8;:228::i;:::-;22391:4;22384:11;;22003:400;;;;:::o;23914:125::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24018:13:::1;24000:15;;:31;;;;;;;;;;;;;;;;;;23914:125:::0;:::o;19565:199::-;19670:4;19692:42;19702:12;:10;:12::i;:::-;19716:9;19727:6;19692:9;:42::i;:::-;19752:4;19745:11;;19565:199;;;;:::o;23181:95::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23262:6:::1;23245:14;;:23;;;;;;;;;;;;;;;;;;23181:95:::0;:::o;28978:106::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29069:7:::1;29053:13;;:23;;;;;;;;;;;;;;;;;;28978:106:::0;:::o;19772:184::-;19889:7;19921:11;:18;19933:5;19921:18;;;;;;;;;;;;;;;:27;19940:7;19921:27;;;;;;;;;;;;;;;;19914:34;;19772:184;;;;:::o;27311:544::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27483:16:::1;;;;;;;;;;;27482:17;27474:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;27659:24;27686;27704:4;27686:9;:24::i;:::-;27659:51;;27721:18;27807:3;27762:28;27743:16;:47;;;;:::i;:::-;27742:68;;;;:::i;:::-;27721:89;;27821:26;27836:10;27821:14;:26::i;:::-;27417:438;;27311:544:::0;:::o;22676:110::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22773:5:::1;22743:18;:27;22762:7;22743:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22676:110:::0;:::o;7021:281::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7144:1:::1;7124:22;;:8;:22;;::::0;7102:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7257:8;7228:38;;7249:6;::::0;::::1;;;;;;;;7228:38;;;;;;;;;;;;7286:8;7277:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7021:281:::0;:::o;23347:190::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23457:13:::1;23433:21;::::0;:37:::1;;;;;;;;;;;;;;;;;;23486:43;23515:13;23486:43;;;;;;:::i;:::-;;;;;;;;23347:190:::0;:::o;1105:98::-;1163:7;1194:1;1190;:5;;;;:::i;:::-;1183:12;;1105:98;;;;:::o;1211:::-;1269:7;1300:1;1296;:5;;;;:::i;:::-;1289:12;;1211:98;;;;:::o;1878:::-;1931:7;1958:10;1951:17;;1878:98;:::o;24766:333::-;24924:1;24907:19;;:5;:19;;;;:44;;;;;24949:1;24930:21;;:7;:21;;;;24907:44;24885:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25037:6;25007:11;:18;25019:5;25007:18;;;;;;;;;;;;;;;:27;25026:7;25007:27;;;;;;;;;;;;;;;:36;;;;25075:7;25059:32;;25068:5;25059:32;;;25084:6;25059:32;;;;;;:::i;:::-;;;;;;;;24766:333;;;:::o;25107:1837::-;25319:13;;;;;;;;;;;25311:21;;:4;:21;;;:38;;;;;25342:7;:5;:7::i;:::-;25336:13;;:2;:13;;;;25311:38;:64;;;;;25371:4;25353:22;;:14;;;;;;;;;;;:22;;;25311:64;25307:239;;;25428:12;;25418:6;:22;;25392:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;25307:239;25580:1;25564:18;;:4;:18;;;;:38;;;;;25600:1;25586:16;;:2;:16;;;;25564:38;25556:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25651:1;25642:6;:10;25634:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25734:11;;;;;;;;;;;25723:22;;:7;;;;;;;;;;;:22;;;;:56;;;;;25763:16;;;;;;;;;;;25762:17;25723:56;:94;;;;;25804:13;;;;;;;;;;;25796:21;;:4;:21;;;;25723:94;:132;;;;;25834:21;;;;;;;;;;25723:132;25705:510;;;25892:1;25882:7;;:11;;;;;;;;;;;;;;;;;;25908:28;25939:24;25957:4;25939:9;:24::i;:::-;25908:55;;26005:12;;25982:20;:35;25978:111;;;26061:12;;26038:35;;25978:111;26130:1;26107:20;:24;26103:101;;;26152:36;26167:20;26152:14;:36::i;:::-;26103:101;25867:348;25705:510;26225:12;26240:4;26225:19;;26275:18;:24;26294:4;26275:24;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;26316:18;:22;26335:2;26316:22;;;;;;;;;;;;;;;;;;;;;;;;;26275:63;:145;;;;26356:15;;;;;;;;;;;:40;;;;;26383:13;;;;;;;;;;;26375:21;;:4;:21;;;;26356:40;:63;;;;;26406:13;;;;;;;;;;;26400:19;;:2;:19;;;;26356:63;26275:145;26257:626;;;26457:5;26447:15;;26257:626;;;26492:13;;;;;;;;;;;26484:21;;:4;:21;;;26480:403;;26534:7;;26522:9;:19;;;;26480:403;;;26569:13;;;;;;;;;;;26563:19;;:2;:19;;;26559:324;;26611:8;;26599:9;:20;;;;26634:18;26655:15;26666:3;26655:6;:10;;:15;;;;:::i;:::-;26634:36;;26733:23;26739:4;26745:10;26733:5;:23::i;:::-;26849:22;26860:10;26849:6;:10;;:22;;;;:::i;:::-;26840:31;;26584:299;26559:324;26480:403;26257:626;26895:41;26910:4;26916:2;26920:6;26928:7;26895:14;:41::i;:::-;25210:1734;25107:1837;;;:::o;1317:240::-;1437:7;1495:1;1490;:6;;1498:12;1482:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1537:1;1533;:5;1526:12;;1317:240;;;;;:::o;893:98::-;951:7;982:1;978;:5;;;;:::i;:::-;971:12;;893:98;;;;:::o;999:::-;1057:7;1088:1;1084;:5;;;;:::i;:::-;1077:12;;999:98;;;;:::o;27072:233::-;18405:4;18386:16;;:23;;;;;;;;;;;;;;;;;;27157:38:::1;27174:20;27157:16;:38::i;:::-;27206:19;27228:21;27206:43;;27260:37;27273:10;;;;;;;;;;;27285:11;27260:12;:37::i;:::-;27146:159;18451:5:::0;18432:16;;:24;;;;;;;;;;;;;;;;;;27072:233;:::o;20502:530::-;20637:1;20618:21;;:7;:21;;;20610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20769:103;20804:6;20769:103;;;;;;;;;;;;;;;;;:7;:16;20777:7;20769:16;;;;;;;;;;;;;;;;:20;;:103;;;;;:::i;:::-;20750:7;:16;20758:7;20750:16;;;;;;;;;;;;;;;:122;;;;20950:19;20962:6;20950:7;;:11;;:19;;;;:::i;:::-;20940:7;:29;;;;21013:1;20987:37;;20996:7;20987:37;;;21017:6;20987:37;;;;;;:::i;:::-;;;;;;;;20502:530;;:::o;29148:350::-;29304:7;29299:97;;29328:14;:12;:14::i;:::-;29299:97;;;29375:7;;:9;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;29299:97;29406:42;29422:6;29430:9;29441:6;29406:15;:42::i;:::-;29466:7;29461:29;;29475:15;:13;:15::i;:::-;29461:29;29148:350;;;;:::o;27861:471::-;27927:21;27965:1;27951:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27927:40;;27996:4;27978;27983:1;27978:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28022:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28012:4;28017:1;28012:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28055:62;28072:4;28087:15;;;;;;;;;;;28105:11;28055:8;:62::i;:::-;28128:15;;;;;;;;;;;:66;;;28209:11;28235:1;28251:4;28278;28298:15;28128:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27916:416;27861:471;:::o;26952:112::-;27033:6;:15;;:23;27049:6;27033:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26952:112;;:::o;24302:295::-;24362:1;24349:9;;:14;:30;;;;;24378:1;24367:7;;:12;24349:30;:47;;;;;24395:1;24383:8;;:13;24349:47;24398:7;24345:60;24435:7;;24417:15;:25;;;;24472:8;;24453:16;:27;;;;24511:9;;24491:17;:29;;;;24541:1;24531:7;:11;;;;24564:1;24553:8;:12;;;;24588:1;24576:9;:13;;;;24302:295;:::o;29506:455::-;29637:23;29662:12;29678:19;29689:7;29678:10;:19::i;:::-;29636:61;;;;29726:28;29746:7;29726;:15;29734:6;29726:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29708:7;:15;29716:6;29708:15;;;;;;;;;;;;;;;:46;;;;29786:39;29809:15;29786:7;:18;29794:9;29786:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29765:7;:18;29773:9;29765:18;;;;;;;;;;;;;;;:60;;;;29861:32;29888:4;29861:7;:22;29877:4;29861:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;29836:7;:22;29852:4;29836:22;;;;;;;;;;;;;;;:57;;;;29926:9;29909:44;;29918:6;29909:44;;;29937:15;29909:44;;;;;;:::i;:::-;;;;;;;;29625:336;;29506:455;;;:::o;24605:155::-;24661:17;;24649:9;:29;;;;24699:15;;24689:7;:25;;;;24736:16;;24725:8;:27;;;;24605:155::o;29967:265::-;30053:7;30062;30087:12;30126:3;30113:9;;30103:7;:19;;;;:::i;:::-;30102:27;;;;:::i;:::-;30087:42;;30140:23;30166:17;30178:4;30166:7;:11;;:17;;;;:::i;:::-;30140:43;;30202:15;30219:4;30194:30;;;;;;29967:265;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:329::-;5795:6;5844:2;5832:9;5823:7;5819:23;5815:32;5812:119;;;5850:79;;:::i;:::-;5812:119;5970:1;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5941:117;5736:329;;;;:::o;6071:86::-;6106:7;6146:4;6139:5;6135:16;6124:27;;6071:86;;;:::o;6163:112::-;6246:22;6262:5;6246:22;:::i;:::-;6241:3;6234:35;6163:112;;:::o;6281:214::-;6370:4;6408:2;6397:9;6393:18;6385:26;;6421:67;6485:1;6474:9;6470:17;6461:6;6421:67;:::i;:::-;6281:214;;;;:::o;6501:118::-;6588:24;6606:5;6588:24;:::i;:::-;6583:3;6576:37;6501:118;;:::o;6625:222::-;6718:4;6756:2;6745:9;6741:18;6733:26;;6769:71;6837:1;6826:9;6822:17;6813:6;6769:71;:::i;:::-;6625:222;;;;:::o;6853:474::-;6921:6;6929;6978:2;6966:9;6957:7;6953:23;6949:32;6946:119;;;6984:79;;:::i;:::-;6946:119;7104:1;7129:53;7174:7;7165:6;7154:9;7150:22;7129:53;:::i;:::-;7119:63;;7075:117;7231:2;7257:53;7302:7;7293:6;7282:9;7278:22;7257:53;:::i;:::-;7247:63;;7202:118;6853:474;;;;;:::o;7333:118::-;7404:22;7420:5;7404:22;:::i;:::-;7397:5;7394:33;7384:61;;7441:1;7438;7431:12;7384:61;7333:118;:::o;7457:135::-;7501:5;7539:6;7526:20;7517:29;;7555:31;7580:5;7555:31;:::i;:::-;7457:135;;;;:::o;7598:325::-;7655:6;7704:2;7692:9;7683:7;7679:23;7675:32;7672:119;;;7710:79;;:::i;:::-;7672:119;7830:1;7855:51;7898:7;7889:6;7878:9;7874:22;7855:51;:::i;:::-;7845:61;;7801:115;7598:325;;;;:::o;7929:104::-;7974:7;8003:24;8021:5;8003:24;:::i;:::-;7992:35;;7929:104;;;:::o;8039:138::-;8120:32;8146:5;8120:32;:::i;:::-;8113:5;8110:43;8100:71;;8167:1;8164;8157:12;8100:71;8039:138;:::o;8183:155::-;8237:5;8275:6;8262:20;8253:29;;8291:41;8326:5;8291:41;:::i;:::-;8183:155;;;;:::o;8344:345::-;8411:6;8460:2;8448:9;8439:7;8435:23;8431:32;8428:119;;;8466:79;;:::i;:::-;8428:119;8586:1;8611:61;8664:7;8655:6;8644:9;8640:22;8611:61;:::i;:::-;8601:71;;8557:125;8344:345;;;;:::o;8695:116::-;8765:21;8780:5;8765:21;:::i;:::-;8758:5;8755:32;8745:60;;8801:1;8798;8791:12;8745:60;8695:116;:::o;8817:133::-;8860:5;8898:6;8885:20;8876:29;;8914:30;8938:5;8914:30;:::i;:::-;8817:133;;;;:::o;8956:323::-;9012:6;9061:2;9049:9;9040:7;9036:23;9032:32;9029:119;;;9067:79;;:::i;:::-;9029:119;9187:1;9212:50;9254:7;9245:6;9234:9;9230:22;9212:50;:::i;:::-;9202:60;;9158:114;8956:323;;;;:::o;9285:474::-;9353:6;9361;9410:2;9398:9;9389:7;9385:23;9381:32;9378:119;;;9416:79;;:::i;:::-;9378:119;9536:1;9561:53;9606:7;9597:6;9586:9;9582:22;9561:53;:::i;:::-;9551:63;;9507:117;9663:2;9689:53;9734:7;9725:6;9714:9;9710:22;9689:53;:::i;:::-;9679:63;;9634:118;9285:474;;;;;:::o;9765:180::-;9813:77;9810:1;9803:88;9910:4;9907:1;9900:15;9934:4;9931:1;9924:15;9951:320;9995:6;10032:1;10026:4;10022:12;10012:22;;10079:1;10073:4;10069:12;10100:18;10090:81;;10156:4;10148:6;10144:17;10134:27;;10090:81;10218:2;10210:6;10207:14;10187:18;10184:38;10181:84;;10237:18;;:::i;:::-;10181:84;10002:269;9951:320;;;:::o;10277:182::-;10417:34;10413:1;10405:6;10401:14;10394:58;10277:182;:::o;10465:366::-;10607:3;10628:67;10692:2;10687:3;10628:67;:::i;:::-;10621:74;;10704:93;10793:3;10704:93;:::i;:::-;10822:2;10817:3;10813:12;10806:19;;10465:366;;;:::o;10837:419::-;11003:4;11041:2;11030:9;11026:18;11018:26;;11090:9;11084:4;11080:20;11076:1;11065:9;11061:17;11054:47;11118:131;11244:4;11118:131;:::i;:::-;11110:139;;10837:419;;;:::o;11262:143::-;11319:5;11350:6;11344:13;11335:22;;11366:33;11393:5;11366:33;:::i;:::-;11262:143;;;;:::o;11411:351::-;11481:6;11530:2;11518:9;11509:7;11505:23;11501:32;11498:119;;;11536:79;;:::i;:::-;11498:119;11656:1;11681:64;11737:7;11728:6;11717:9;11713:22;11681:64;:::i;:::-;11671:74;;11627:128;11411:351;;;;:::o;11768:332::-;11889:4;11927:2;11916:9;11912:18;11904:26;;11940:71;12008:1;11997:9;11993:17;11984:6;11940:71;:::i;:::-;12021:72;12089:2;12078:9;12074:18;12065:6;12021:72;:::i;:::-;11768:332;;;;;:::o;12106:180::-;12154:77;12151:1;12144:88;12251:4;12248:1;12241:15;12275:4;12272:1;12265:15;12292:410;12332:7;12355:20;12373:1;12355:20;:::i;:::-;12350:25;;12389:20;12407:1;12389:20;:::i;:::-;12384:25;;12444:1;12441;12437:9;12466:30;12484:11;12466:30;:::i;:::-;12455:41;;12645:1;12636:7;12632:15;12629:1;12626:22;12606:1;12599:9;12579:83;12556:139;;12675:18;;:::i;:::-;12556:139;12340:362;12292:410;;;;:::o;12708:180::-;12756:77;12753:1;12746:88;12853:4;12850:1;12843:15;12877:4;12874:1;12867:15;12894:185;12934:1;12951:20;12969:1;12951:20;:::i;:::-;12946:25;;12985:20;13003:1;12985:20;:::i;:::-;12980:25;;13024:1;13014:35;;13029:18;;:::i;:::-;13014:35;13071:1;13068;13064:9;13059:14;;12894:185;;;;:::o;13085:220::-;13225:34;13221:1;13213:6;13209:14;13202:58;13294:3;13289:2;13281:6;13277:15;13270:28;13085:220;:::o;13311:366::-;13453:3;13474:67;13538:2;13533:3;13474:67;:::i;:::-;13467:74;;13550:93;13639:3;13550:93;:::i;:::-;13668:2;13663:3;13659:12;13652:19;;13311:366;;;:::o;13683:419::-;13849:4;13887:2;13876:9;13872:18;13864:26;;13936:9;13930:4;13926:20;13922:1;13911:9;13907:17;13900:47;13964:131;14090:4;13964:131;:::i;:::-;13956:139;;13683:419;;;:::o;14108:191::-;14148:3;14167:20;14185:1;14167:20;:::i;:::-;14162:25;;14201:20;14219:1;14201:20;:::i;:::-;14196:25;;14244:1;14241;14237:9;14230:16;;14265:3;14262:1;14259:10;14256:36;;;14272:18;;:::i;:::-;14256:36;14108:191;;;;:::o;14305:166::-;14445:18;14441:1;14433:6;14429:14;14422:42;14305:166;:::o;14477:366::-;14619:3;14640:67;14704:2;14699:3;14640:67;:::i;:::-;14633:74;;14716:93;14805:3;14716:93;:::i;:::-;14834:2;14829:3;14825:12;14818:19;;14477:366;;;:::o;14849:419::-;15015:4;15053:2;15042:9;15038:18;15030:26;;15102:9;15096:4;15092:20;15088:1;15077:9;15073:17;15066:47;15130:131;15256:4;15130:131;:::i;:::-;15122:139;;14849:419;;;:::o;15274:182::-;15414:34;15410:1;15402:6;15398:14;15391:58;15274:182;:::o;15462:366::-;15604:3;15625:67;15689:2;15684:3;15625:67;:::i;:::-;15618:74;;15701:93;15790:3;15701:93;:::i;:::-;15819:2;15814:3;15810:12;15803:19;;15462:366;;;:::o;15834:419::-;16000:4;16038:2;16027:9;16023:18;16015:26;;16087:9;16081:4;16077:20;16073:1;16062:9;16058:17;16051:47;16115:131;16241:4;16115:131;:::i;:::-;16107:139;;15834:419;;;:::o;16259:225::-;16399:34;16395:1;16387:6;16383:14;16376:58;16468:8;16463:2;16455:6;16451:15;16444:33;16259:225;:::o;16490:366::-;16632:3;16653:67;16717:2;16712:3;16653:67;:::i;:::-;16646:74;;16729:93;16818:3;16729:93;:::i;:::-;16847:2;16842:3;16838:12;16831:19;;16490:366;;;:::o;16862:419::-;17028:4;17066:2;17055:9;17051:18;17043:26;;17115:9;17109:4;17105:20;17101:1;17090:9;17086:17;17079:47;17143:131;17269:4;17143:131;:::i;:::-;17135:139;;16862:419;;;:::o;17287:167::-;17427:19;17423:1;17415:6;17411:14;17404:43;17287:167;:::o;17460:366::-;17602:3;17623:67;17687:2;17682:3;17623:67;:::i;:::-;17616:74;;17699:93;17788:3;17699:93;:::i;:::-;17817:2;17812:3;17808:12;17801:19;;17460:366;;;:::o;17832:419::-;17998:4;18036:2;18025:9;18021:18;18013:26;;18085:9;18079:4;18075:20;18071:1;18060:9;18056:17;18049:47;18113:131;18239:4;18113:131;:::i;:::-;18105:139;;17832:419;;;:::o;18257:245::-;18397:34;18393:1;18385:6;18381:14;18374:58;18466:28;18461:2;18453:6;18449:15;18442:53;18257:245;:::o;18508:366::-;18650:3;18671:67;18735:2;18730:3;18671:67;:::i;:::-;18664:74;;18747:93;18836:3;18747:93;:::i;:::-;18865:2;18860:3;18856:12;18849:19;;18508:366;;;:::o;18880:419::-;19046:4;19084:2;19073:9;19069:18;19061:26;;19133:9;19127:4;19123:20;19119:1;19108:9;19104:17;19097:47;19161:131;19287:4;19161:131;:::i;:::-;19153:139;;18880:419;;;:::o;19305:166::-;19445:18;19441:1;19433:6;19429:14;19422:42;19305:166;:::o;19477:366::-;19619:3;19640:67;19704:2;19699:3;19640:67;:::i;:::-;19633:74;;19716:93;19805:3;19716:93;:::i;:::-;19834:2;19829:3;19825:12;19818:19;;19477:366;;;:::o;19849:419::-;20015:4;20053:2;20042:9;20038:18;20030:26;;20102:9;20096:4;20092:20;20088:1;20077:9;20073:17;20066:47;20130:131;20256:4;20130:131;:::i;:::-;20122:139;;19849:419;;;:::o;20274:224::-;20414:34;20410:1;20402:6;20398:14;20391:58;20483:7;20478:2;20470:6;20466:15;20459:32;20274:224;:::o;20504:366::-;20646:3;20667:67;20731:2;20726:3;20667:67;:::i;:::-;20660:74;;20743:93;20832:3;20743:93;:::i;:::-;20861:2;20856:3;20852:12;20845:19;;20504:366;;;:::o;20876:419::-;21042:4;21080:2;21069:9;21065:18;21057:26;;21129:9;21123:4;21119:20;21115:1;21104:9;21100:17;21093:47;21157:131;21283:4;21157:131;:::i;:::-;21149:139;;20876:419;;;:::o;21301:194::-;21341:4;21361:20;21379:1;21361:20;:::i;:::-;21356:25;;21395:20;21413:1;21395:20;:::i;:::-;21390:25;;21439:1;21436;21432:9;21424:17;;21463:1;21457:4;21454:11;21451:37;;;21468:18;;:::i;:::-;21451:37;21301:194;;;;:::o;21501:167::-;21538:3;21561:22;21577:5;21561:22;:::i;:::-;21552:31;;21605:4;21598:5;21595:15;21592:41;;21613:18;;:::i;:::-;21592:41;21660:1;21653:5;21649:13;21642:20;;21501:167;;;:::o;21674:180::-;21722:77;21719:1;21712:88;21819:4;21816:1;21809:15;21843:4;21840:1;21833:15;21860:180;21908:77;21905:1;21898:88;22005:4;22002:1;21995:15;22029:4;22026:1;22019:15;22046:85;22091:7;22120:5;22109:16;;22046:85;;;:::o;22137:158::-;22195:9;22228:61;22246:42;22255:32;22281:5;22255:32;:::i;:::-;22246:42;:::i;:::-;22228:61;:::i;:::-;22215:74;;22137:158;;;:::o;22301:147::-;22396:45;22435:5;22396:45;:::i;:::-;22391:3;22384:58;22301:147;;:::o;22454:114::-;22521:6;22555:5;22549:12;22539:22;;22454:114;;;:::o;22574:184::-;22673:11;22707:6;22702:3;22695:19;22747:4;22742:3;22738:14;22723:29;;22574:184;;;;:::o;22764:132::-;22831:4;22854:3;22846:11;;22884:4;22879:3;22875:14;22867:22;;22764:132;;;:::o;22902:108::-;22979:24;22997:5;22979:24;:::i;:::-;22974:3;22967:37;22902:108;;:::o;23016:179::-;23085:10;23106:46;23148:3;23140:6;23106:46;:::i;:::-;23184:4;23179:3;23175:14;23161:28;;23016:179;;;;:::o;23201:113::-;23271:4;23303;23298:3;23294:14;23286:22;;23201:113;;;:::o;23350:732::-;23469:3;23498:54;23546:5;23498:54;:::i;:::-;23568:86;23647:6;23642:3;23568:86;:::i;:::-;23561:93;;23678:56;23728:5;23678:56;:::i;:::-;23757:7;23788:1;23773:284;23798:6;23795:1;23792:13;23773:284;;;23874:6;23868:13;23901:63;23960:3;23945:13;23901:63;:::i;:::-;23894:70;;23987:60;24040:6;23987:60;:::i;:::-;23977:70;;23833:224;23820:1;23817;23813:9;23808:14;;23773:284;;;23777:14;24073:3;24066:10;;23474:608;;;23350:732;;;;:::o;24088:831::-;24351:4;24389:3;24378:9;24374:19;24366:27;;24403:71;24471:1;24460:9;24456:17;24447:6;24403:71;:::i;:::-;24484:80;24560:2;24549:9;24545:18;24536:6;24484:80;:::i;:::-;24611:9;24605:4;24601:20;24596:2;24585:9;24581:18;24574:48;24639:108;24742:4;24733:6;24639:108;:::i;:::-;24631:116;;24757:72;24825:2;24814:9;24810:18;24801:6;24757:72;:::i;:::-;24839:73;24907:3;24896:9;24892:19;24883:6;24839:73;:::i;:::-;24088:831;;;;;;;;:::o

Swarm Source

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