ETH Price: $2,361.50 (+3.83%)

Token

Seagen (SEAGEN)
 

Overview

Max Total Supply

10,000,000 SEAGEN

Holders

84

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
46,850.163138960930310382 SEAGEN

Value
$0.00
0xf46c619f7d4cbb522c93b5afeb55b35aa6f14c7e
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:
seageneth

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-11-10
*/

// 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 seageneth 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 = "Seagen";
    string private _symbol = "SEAGEN";
    uint8 private _decimals = 18;
    uint256 private _tTotal = 10000000 * 10**uint8(_decimals);
    uint256 private _tFeeTotal;

    // 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 = 5;

    // Setting the initial fees
    uint256 private _TotalFee = 2;
    uint256 public _buyFee = 0;
    uint256 public _sellFee = 0;
    bool public feesEnabled = false;
    // '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 approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function setFeesEnabled(bool newValue) public onlyOwner {
        feesEnabled = newValue;
    }

    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 <= maxPossibleFee, "Buy Fee is too high!");
        require(Sell_Fee <= maxPossibleFee, "Sell 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;
    }

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

        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 = feesEnabled;

        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            (noFeeToTransfer && from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else if (from == uniswapV2Pair) {
            _TotalFee = _buyFee;
        } else if (to == uniswapV2Pair) {
            _TotalFee = _sellFee;
        }

        _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":[],"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":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"newValue","type":"bool"}],"name":"setFeesEnabled","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"}]

6080604052733d5e71a041fd15f83f96a97347108b5f5e57a5a3600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600681526020017f53656167656e0000000000000000000000000000000000000000000000000000815250600590816200009f9190620009df565b506040518060400160405280600681526020017f53454147454e000000000000000000000000000000000000000000000000000081525060069081620000e69190620009df565b506012600760006101000a81548160ff021916908360ff160217905550600760009054906101000a900460ff16600a62000121919062000c56565b6298968062000131919062000ca7565b6008556000600a60006101000a81548160ff021916908360ff1602179055506002600a60016101000a81548160ff021916908360ff1602179055506005600b556002600c556000600d556000600e556000600f60006101000a81548160ff021916908315150217905550600c54601055600d54601155600e54601255620001e46064620001d060016008546200070c60201b62001d621790919060201c565b6200072460201b62001d781790919060201c565b6013556013546014556001601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff0219169083151502179055503480156200022f57600080fd5b50733d5e71a041fd15f83f96a97347108b5f5e57a5a36000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360085460016000620003166200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000447573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046d919062000d5c565b6040518363ffffffff1660e01b81526004016200048c92919062000d9f565b6020604051808303816000875af1158015620004ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d2919062000d5c565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620005696200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200069c6200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620006fd919062000ddd565b60405180910390a35062000e61565b600081836200071c919062000ca7565b905092915050565b6000818362000734919062000e29565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e757607f821691505b602082108103620007fd57620007fc6200079f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000828565b62000873868362000828565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008c0620008ba620008b4846200088b565b62000895565b6200088b565b9050919050565b6000819050919050565b620008dc836200089f565b620008f4620008eb82620008c7565b84845462000835565b825550505050565b600090565b6200090b620008fc565b62000918818484620008d1565b505050565b5b8181101562000940576200093460008262000901565b6001810190506200091e565b5050565b601f8211156200098f57620009598162000803565b620009648462000818565b8101602085101562000974578190505b6200098c620009838562000818565b8301826200091d565b50505b505050565b600082821c905092915050565b6000620009b46000198460080262000994565b1980831691505092915050565b6000620009cf8383620009a1565b9150826002028217905092915050565b620009ea8262000765565b67ffffffffffffffff81111562000a065762000a0562000770565b5b62000a128254620007ce565b62000a1f82828562000944565b600060209050601f83116001811462000a57576000841562000a42578287015190505b62000a4e8582620009c1565b86555062000abe565b601f19841662000a678662000803565b60005b8281101562000a915784890151825560018201915060208501945060208101905062000a6a565b8683101562000ab1578489015162000aad601f891682620009a1565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b545780860481111562000b2c5762000b2b62000ac6565b5b600185161562000b3c5780820291505b808102905062000b4c8562000af5565b945062000b0c565b94509492505050565b60008262000b6f576001905062000c42565b8162000b7f576000905062000c42565b816001811462000b98576002811462000ba35762000bd9565b600191505062000c42565b60ff84111562000bb85762000bb762000ac6565b5b8360020a91508482111562000bd25762000bd162000ac6565b5b5062000c42565b5060208310610133831016604e8410600b841016171562000c135782820a90508381111562000c0d5762000c0c62000ac6565b5b62000c42565b62000c22848484600162000b02565b9250905081840481111562000c3c5762000c3b62000ac6565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c63826200088b565b915062000c708362000c49565b925062000c9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b5d565b905092915050565b600062000cb4826200088b565b915062000cc1836200088b565b925082820262000cd1816200088b565b9150828204841483151762000ceb5762000cea62000ac6565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d248262000cf7565b9050919050565b62000d368162000d17565b811462000d4257600080fd5b50565b60008151905062000d568162000d2b565b92915050565b60006020828403121562000d755762000d7462000cf2565b5b600062000d858482850162000d45565b91505092915050565b62000d998162000d17565b82525050565b600060408201905062000db6600083018562000d8e565b62000dc5602083018462000d8e565b9392505050565b62000dd7816200088b565b82525050565b600060208201905062000df4600083018462000dcc565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e36826200088b565b915062000e43836200088b565b92508262000e565762000e5562000dfa565b5b828204905092915050565b6137818062000e716000396000f3fe60806040526004361061021e5760003560e01c806370a0823111610123578063a514a07d116100ab578063dd62ed3e1161006f578063dd62ed3e146107e0578063ddbf52661461081d578063ea2f0b3714610846578063f2fde38b1461086f578063f7739b5f1461089857610225565b8063a514a07d146106fd578063a64e4f8a14610726578063a901dd9214610751578063a9059cbb1461077a578063d785d5be146107b757610225565b80637d1db4a5116100f25780637d1db4a5146106165780638824e16e146106415780638da5cb5b1461066a57806395d89b4114610695578063a457c2d7146106c057610225565b806370a082311461055c578063715018a614610599578063768dc710146105b05780637caefa89146105ed57610225565b8063313ce567116101a6578063437823ec11610175578063437823ec1461048957806349bd5a5e146104b25780634a74bb02146104dd578063590f897e1461050857806367cbd84c1461053357610225565b8063313ce567146103cd57806336b1a1bc146103f8578063395093511461042157806340b9a54b1461045e57610225565b80631694505e116101ed5780631694505e146102e657806318160ddd14610311578063220f66961461033c57806323b872dd146103675780632e39c6c6146103a457610225565b806306fdde031461022a578063095ea7b3146102555780631282a0a01461029257806313fad07a146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108c1565b60405161024c9190612af4565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612baf565b610953565b6040516102899190612c0a565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612c25565b610971565b005b3480156102c757600080fd5b506102d0610bd1565b6040516102dd9190612c0a565b60405180910390f35b3480156102f257600080fd5b506102fb610be2565b6040516103089190612cb1565b60405180910390f35b34801561031d57600080fd5b50610326610c08565b6040516103339190612cdb565b60405180910390f35b34801561034857600080fd5b50610351610c12565b60405161035e9190612c0a565b60405180910390f35b34801561037357600080fd5b5061038e60048036038101906103899190612cf6565b610c25565b60405161039b9190612c0a565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190612d49565b610cfe565b005b3480156103d957600080fd5b506103e2610d9e565b6040516103ef9190612d92565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612c25565b610db5565b005b34801561042d57600080fd5b5061044860048036038101906104439190612baf565b610e7b565b6040516104559190612c0a565b60405180910390f35b34801561046a57600080fd5b50610473610f2e565b6040516104809190612cdb565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190612c25565b610f34565b005b3480156104be57600080fd5b506104c761100b565b6040516104d49190612dbc565b60405180910390f35b3480156104e957600080fd5b506104f2611031565b6040516104ff9190612c0a565b60405180910390f35b34801561051457600080fd5b5061051d611044565b60405161052a9190612cdb565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190612dd7565b61104a565b005b34801561056857600080fd5b50610583600480360381019061057e9190612c25565b611162565b6040516105909190612cdb565b60405180910390f35b3480156105a557600080fd5b506105ae6111ab565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612c25565b6112e5565b6040516105e49190612c0a565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612e43565b611305565b005b34801561062257600080fd5b5061062b61139f565b6040516106389190612cdb565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612eae565b6113a5565b005b34801561067657600080fd5b5061067f6114df565b60405161068c9190612dbc565b60405180910390f35b3480156106a157600080fd5b506106aa611508565b6040516106b79190612af4565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190612baf565b61159a565b6040516106f49190612c0a565b60405180910390f35b34801561070957600080fd5b50610724600480360381019061071f9190612f07565b611667565b005b34801561073257600080fd5b5061073b6116ff565b6040516107489190612c0a565b60405180910390f35b34801561075d57600080fd5b5061077860048036038101906107739190612f07565b611712565b005b34801561078657600080fd5b506107a1600480360381019061079c9190612baf565b6117ab565b6040516107ae9190612c0a565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d99190612c25565b6117c9565b005b3480156107ec57600080fd5b5061080760048036038101906108029190612f34565b611889565b6040516108149190612cdb565b60405180910390f35b34801561082957600080fd5b50610844600480360381019061083f9190612d49565b611910565b005b34801561085257600080fd5b5061086d60048036038101906108689190612c25565b611a13565b005b34801561087b57600080fd5b5061089660048036038101906108919190612c25565b611aea565b005b3480156108a457600080fd5b506108bf60048036038101906108ba9190612f07565b611c92565b005b6060600580546108d090612fa3565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc90612fa3565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000610967610960611d8e565b8484611d96565b6001905092915050565b610979611d8e565b73ffffffffffffffffffffffffffffffffffffffff166109976114df565b73ffffffffffffffffffffffffffffffffffffffff16146109ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e490613020565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a619190613055565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec9190613055565b6040518363ffffffff1660e01b8152600401610b09929190613082565b6020604051808303816000875af1158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c9190613055565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60168054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854905090565b601660149054906101000a900460ff1681565b6000610c32848484611f2a565b610cf384610c3e611d8e565b610cee856040518060600160405280602881526020016136ff60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca4611d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237e9092919063ffffffff16565b611d96565b600190509392505050565b610d06611d8e565b73ffffffffffffffffffffffffffffffffffffffff16610d246114df565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190613020565b60405180910390fd5b61271081600854610d8b91906130da565b610d95919061314b565b60138190555050565b6000600760009054906101000a900460ff16905090565b610dbd611d8e565b73ffffffffffffffffffffffffffffffffffffffff16610ddb6114df565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890613020565b60405180910390fd5b600081905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000610f24610e88611d8e565b84610f1f8560026000610e99611d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b611d96565b6001905092915050565b600d5481565b610f3c611d8e565b73ffffffffffffffffffffffffffffffffffffffff16610f5a6114df565b73ffffffffffffffffffffffffffffffffffffffff1614610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790613020565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660159054906101000a900460ff1681565b600e5481565b611052611d8e565b73ffffffffffffffffffffffffffffffffffffffff166110706114df565b73ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd90613020565b60405180910390fd5b600b5482111561110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906131c8565b60405180910390fd5b600b54811115611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790613234565b60405180910390fd5b80600e8190555081600d819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111b3611d8e565b73ffffffffffffffffffffffffffffffffffffffff166111d16114df565b73ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613020565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b61130d611d8e565b73ffffffffffffffffffffffffffffffffffffffff1661132b6114df565b73ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890613020565b60405180910390fd5b80600a60016101000a81548160ff021916908360ff16021790555050565b60135481565b6113ad611d8e565b73ffffffffffffffffffffffffffffffffffffffff166113cb6114df565b73ffffffffffffffffffffffffffffffffffffffff1614611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613020565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461151790612fa3565b80601f016020809104026020016040519081016040528092919081815260200182805461154390612fa3565b80156115905780601f1061156557610100808354040283529160200191611590565b820191906000526020600020905b81548152906001019060200180831161157357829003601f168201915b5050505050905090565b600061165d6115a7611d8e565b846116588560405180606001604052806025815260200161372760259139600260006115d1611d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237e9092919063ffffffff16565b611d96565b6001905092915050565b61166f611d8e565b73ffffffffffffffffffffffffffffffffffffffff1661168d6114df565b73ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90613020565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b600f60009054906101000a900460ff1681565b61171a611d8e565b73ffffffffffffffffffffffffffffffffffffffff166117386114df565b73ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590613020565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b60006117bf6117b8611d8e565b8484611f2a565b6001905092915050565b6117d1611d8e565b73ffffffffffffffffffffffffffffffffffffffff166117ef6114df565b73ffffffffffffffffffffffffffffffffffffffff1614611845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183c90613020565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611918611d8e565b73ffffffffffffffffffffffffffffffffffffffff166119366114df565b73ffffffffffffffffffffffffffffffffffffffff161461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613020565b60405180910390fd5b601660149054906101000a900460ff16156119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d3906132a0565b60405180910390fd5b60006119e730611162565b90506000606483836119f991906130da565b611a03919061314b565b9050611a0e816123e9565b505050565b611a1b611d8e565b73ffffffffffffffffffffffffffffffffffffffff16611a396114df565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613020565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611af2611d8e565b73ffffffffffffffffffffffffffffffffffffffff16611b106114df565b73ffffffffffffffffffffffffffffffffffffffff1614611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d90613020565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc90613332565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c9a611d8e565b73ffffffffffffffffffffffffffffffffffffffff16611cb86114df565b73ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613020565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d579190612c0a565b60405180910390a150565b60008183611d7091906130da565b905092915050565b60008183611d86919061314b565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e005750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e369061339e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1d9190612cdb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f945750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca9061340a565b60405180910390fd5b60008111612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d9061349c565b60405180910390fd5b600a60019054906101000a900460ff1660ff16600a60009054906101000a900460ff1660ff16101580156120575750601660149054906101000a900460ff16155b80156120b15750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120c95750601660159054906101000a900460ff165b1561211c576000600a60006101000a81548160ff021916908360ff16021790555060006120f530611162565b90506013548111156121075760135490505b600081111561211a57612119816123e9565b5b505b6000600f60009054906101000a900460ff169050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121d15750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061229a575060168054906101000a900460ff16801561223f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122995750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156122a8576000905061236c565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361230b57600d54600c8190555061236b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361236a57600e54600c819055505b5b5b6123788484848461245d565b50505050565b60008383111582906123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd9190612af4565b60405180910390fd5b5082840390509392505050565b600081836123e191906134bc565b905092915050565b6001601660146101000a81548160ff02191690831515021790555061240d816124c7565b600047905061243e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261270a565b506000601660146101000a81548160ff02191690831515021790555050565b8061246f5761246a612755565b6124a8565b600a600081819054906101000a900460ff168092919061248e906134f0565b91906101000a81548160ff021916908360ff160217905550505b6124b38484846127b1565b806124c1576124c06129ec565b5b50505050565b6000600267ffffffffffffffff8111156124e4576124e3613519565b5b6040519080825280602002602001820160405280156125125781602001602082028036833780820191505090505b509050308160008151811061252a57612529613548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f59190613055565b8160018151811061260957612608613548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061267030601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d96565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126d4959493929190613670565b600060405180830381600087803b1580156126ee57600080fd5b505af1158015612702573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612750573d6000803e3d6000fd5b505050565b6000600c5414801561276957506000600d54145b801561277757506000600e54145b6127af57600d54601181905550600e54601281905550600c546010819055506000600d819055506000600e819055506000600c819055505b565b6000806127bd83612a09565b9150915061281383600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4e90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293d81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129dd9190612cdb565b60405180910390a35050505050565b601054600c81905550601154600d81905550601254600e81905550565b60008060006064600c5485612a1e91906130da565b612a28919061314b565b90506000612a3f8286612a4e90919063ffffffff16565b90508082935093505050915091565b60008183612a5c91906136ca565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a9e578082015181840152602081019050612a83565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ac682612a64565b612ad08185612a6f565b9350612ae0818560208601612a80565b612ae981612aaa565b840191505092915050565b60006020820190508181036000830152612b0e8184612abb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4682612b1b565b9050919050565b612b5681612b3b565b8114612b6157600080fd5b50565b600081359050612b7381612b4d565b92915050565b6000819050919050565b612b8c81612b79565b8114612b9757600080fd5b50565b600081359050612ba981612b83565b92915050565b60008060408385031215612bc657612bc5612b16565b5b6000612bd485828601612b64565b9250506020612be585828601612b9a565b9150509250929050565b60008115159050919050565b612c0481612bef565b82525050565b6000602082019050612c1f6000830184612bfb565b92915050565b600060208284031215612c3b57612c3a612b16565b5b6000612c4984828501612b64565b91505092915050565b6000819050919050565b6000612c77612c72612c6d84612b1b565b612c52565b612b1b565b9050919050565b6000612c8982612c5c565b9050919050565b6000612c9b82612c7e565b9050919050565b612cab81612c90565b82525050565b6000602082019050612cc66000830184612ca2565b92915050565b612cd581612b79565b82525050565b6000602082019050612cf06000830184612ccc565b92915050565b600080600060608486031215612d0f57612d0e612b16565b5b6000612d1d86828701612b64565b9350506020612d2e86828701612b64565b9250506040612d3f86828701612b9a565b9150509250925092565b600060208284031215612d5f57612d5e612b16565b5b6000612d6d84828501612b9a565b91505092915050565b600060ff82169050919050565b612d8c81612d76565b82525050565b6000602082019050612da76000830184612d83565b92915050565b612db681612b3b565b82525050565b6000602082019050612dd16000830184612dad565b92915050565b60008060408385031215612dee57612ded612b16565b5b6000612dfc85828601612b9a565b9250506020612e0d85828601612b9a565b9150509250929050565b612e2081612d76565b8114612e2b57600080fd5b50565b600081359050612e3d81612e17565b92915050565b600060208284031215612e5957612e58612b16565b5b6000612e6784828501612e2e565b91505092915050565b6000612e7b82612b1b565b9050919050565b612e8b81612e70565b8114612e9657600080fd5b50565b600081359050612ea881612e82565b92915050565b600060208284031215612ec457612ec3612b16565b5b6000612ed284828501612e99565b91505092915050565b612ee481612bef565b8114612eef57600080fd5b50565b600081359050612f0181612edb565b92915050565b600060208284031215612f1d57612f1c612b16565b5b6000612f2b84828501612ef2565b91505092915050565b60008060408385031215612f4b57612f4a612b16565b5b6000612f5985828601612b64565b9250506020612f6a85828601612b64565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fbb57607f821691505b602082108103612fce57612fcd612f74565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061300a602083612a6f565b915061301582612fd4565b602082019050919050565b6000602082019050818103600083015261303981612ffd565b9050919050565b60008151905061304f81612b4d565b92915050565b60006020828403121561306b5761306a612b16565b5b600061307984828501613040565b91505092915050565b60006040820190506130976000830185612dad565b6130a46020830184612dad565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130e582612b79565b91506130f083612b79565b92508282026130fe81612b79565b91508282048414831517613115576131146130ab565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061315682612b79565b915061316183612b79565b9250826131715761317061311c565b5b828204905092915050565b7f4275792046656520697320746f6f206869676821000000000000000000000000600082015250565b60006131b2601483612a6f565b91506131bd8261317c565b602082019050919050565b600060208201905081810360008301526131e1816131a5565b9050919050565b7f53656c6c2046656520697320746f6f2068696768210000000000000000000000600082015250565b600061321e601583612a6f565b9150613229826131e8565b602082019050919050565b6000602082019050818103600083015261324d81613211565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b600061328a602083612a6f565b915061329582613254565b602082019050919050565b600060208201905081810360008301526132b98161327d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061331c602683612a6f565b9150613327826132c0565b604082019050919050565b6000602082019050818103600083015261334b8161330f565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000613388601183612a6f565b915061339382613352565b602082019050919050565b600060208201905081810360008301526133b78161337b565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b60006133f4601083612a6f565b91506133ff826133be565b602082019050919050565b60006020820190508181036000830152613423816133e7565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b6000613486602583612a6f565b91506134918261342a565b604082019050919050565b600060208201905081810360008301526134b581613479565b9050919050565b60006134c782612b79565b91506134d283612b79565b92508282019050808211156134ea576134e96130ab565b5b92915050565b60006134fb82612d76565b915060ff820361350e5761350d6130ab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061359c61359761359284613577565b612c52565b612b79565b9050919050565b6135ac81613581565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135e781612b3b565b82525050565b60006135f983836135de565b60208301905092915050565b6000602082019050919050565b600061361d826135b2565b61362781856135bd565b9350613632836135ce565b8060005b8381101561366357815161364a88826135ed565b975061365583613605565b925050600181019050613636565b5085935050505092915050565b600060a0820190506136856000830188612ccc565b61369260208301876135a3565b81810360408301526136a48186613612565b90506136b36060830185612dad565b6136c06080830184612ccc565b9695505050505050565b60006136d582612b79565b91506136e083612b79565b92508282039050818111156136f8576136f76130ab565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203c5949014a2dbb3a3b66198c8682dd773e1494c334eb623e97aa9492b8f1ada764736f6c63430008110033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c806370a0823111610123578063a514a07d116100ab578063dd62ed3e1161006f578063dd62ed3e146107e0578063ddbf52661461081d578063ea2f0b3714610846578063f2fde38b1461086f578063f7739b5f1461089857610225565b8063a514a07d146106fd578063a64e4f8a14610726578063a901dd9214610751578063a9059cbb1461077a578063d785d5be146107b757610225565b80637d1db4a5116100f25780637d1db4a5146106165780638824e16e146106415780638da5cb5b1461066a57806395d89b4114610695578063a457c2d7146106c057610225565b806370a082311461055c578063715018a614610599578063768dc710146105b05780637caefa89146105ed57610225565b8063313ce567116101a6578063437823ec11610175578063437823ec1461048957806349bd5a5e146104b25780634a74bb02146104dd578063590f897e1461050857806367cbd84c1461053357610225565b8063313ce567146103cd57806336b1a1bc146103f8578063395093511461042157806340b9a54b1461045e57610225565b80631694505e116101ed5780631694505e146102e657806318160ddd14610311578063220f66961461033c57806323b872dd146103675780632e39c6c6146103a457610225565b806306fdde031461022a578063095ea7b3146102555780631282a0a01461029257806313fad07a146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108c1565b60405161024c9190612af4565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612baf565b610953565b6040516102899190612c0a565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612c25565b610971565b005b3480156102c757600080fd5b506102d0610bd1565b6040516102dd9190612c0a565b60405180910390f35b3480156102f257600080fd5b506102fb610be2565b6040516103089190612cb1565b60405180910390f35b34801561031d57600080fd5b50610326610c08565b6040516103339190612cdb565b60405180910390f35b34801561034857600080fd5b50610351610c12565b60405161035e9190612c0a565b60405180910390f35b34801561037357600080fd5b5061038e60048036038101906103899190612cf6565b610c25565b60405161039b9190612c0a565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190612d49565b610cfe565b005b3480156103d957600080fd5b506103e2610d9e565b6040516103ef9190612d92565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612c25565b610db5565b005b34801561042d57600080fd5b5061044860048036038101906104439190612baf565b610e7b565b6040516104559190612c0a565b60405180910390f35b34801561046a57600080fd5b50610473610f2e565b6040516104809190612cdb565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190612c25565b610f34565b005b3480156104be57600080fd5b506104c761100b565b6040516104d49190612dbc565b60405180910390f35b3480156104e957600080fd5b506104f2611031565b6040516104ff9190612c0a565b60405180910390f35b34801561051457600080fd5b5061051d611044565b60405161052a9190612cdb565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190612dd7565b61104a565b005b34801561056857600080fd5b50610583600480360381019061057e9190612c25565b611162565b6040516105909190612cdb565b60405180910390f35b3480156105a557600080fd5b506105ae6111ab565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612c25565b6112e5565b6040516105e49190612c0a565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612e43565b611305565b005b34801561062257600080fd5b5061062b61139f565b6040516106389190612cdb565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612eae565b6113a5565b005b34801561067657600080fd5b5061067f6114df565b60405161068c9190612dbc565b60405180910390f35b3480156106a157600080fd5b506106aa611508565b6040516106b79190612af4565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190612baf565b61159a565b6040516106f49190612c0a565b60405180910390f35b34801561070957600080fd5b50610724600480360381019061071f9190612f07565b611667565b005b34801561073257600080fd5b5061073b6116ff565b6040516107489190612c0a565b60405180910390f35b34801561075d57600080fd5b5061077860048036038101906107739190612f07565b611712565b005b34801561078657600080fd5b506107a1600480360381019061079c9190612baf565b6117ab565b6040516107ae9190612c0a565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d99190612c25565b6117c9565b005b3480156107ec57600080fd5b5061080760048036038101906108029190612f34565b611889565b6040516108149190612cdb565b60405180910390f35b34801561082957600080fd5b50610844600480360381019061083f9190612d49565b611910565b005b34801561085257600080fd5b5061086d60048036038101906108689190612c25565b611a13565b005b34801561087b57600080fd5b5061089660048036038101906108919190612c25565b611aea565b005b3480156108a457600080fd5b506108bf60048036038101906108ba9190612f07565b611c92565b005b6060600580546108d090612fa3565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc90612fa3565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000610967610960611d8e565b8484611d96565b6001905092915050565b610979611d8e565b73ffffffffffffffffffffffffffffffffffffffff166109976114df565b73ffffffffffffffffffffffffffffffffffffffff16146109ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e490613020565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a619190613055565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aec9190613055565b6040518363ffffffff1660e01b8152600401610b09929190613082565b6020604051808303816000875af1158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c9190613055565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60168054906101000a900460ff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600854905090565b601660149054906101000a900460ff1681565b6000610c32848484611f2a565b610cf384610c3e611d8e565b610cee856040518060600160405280602881526020016136ff60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca4611d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237e9092919063ffffffff16565b611d96565b600190509392505050565b610d06611d8e565b73ffffffffffffffffffffffffffffffffffffffff16610d246114df565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190613020565b60405180910390fd5b61271081600854610d8b91906130da565b610d95919061314b565b60138190555050565b6000600760009054906101000a900460ff16905090565b610dbd611d8e565b73ffffffffffffffffffffffffffffffffffffffff16610ddb6114df565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890613020565b60405180910390fd5b600081905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000610f24610e88611d8e565b84610f1f8560026000610e99611d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b611d96565b6001905092915050565b600d5481565b610f3c611d8e565b73ffffffffffffffffffffffffffffffffffffffff16610f5a6114df565b73ffffffffffffffffffffffffffffffffffffffff1614610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790613020565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660159054906101000a900460ff1681565b600e5481565b611052611d8e565b73ffffffffffffffffffffffffffffffffffffffff166110706114df565b73ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd90613020565b60405180910390fd5b600b5482111561110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906131c8565b60405180910390fd5b600b54811115611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790613234565b60405180910390fd5b80600e8190555081600d819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111b3611d8e565b73ffffffffffffffffffffffffffffffffffffffff166111d16114df565b73ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90613020565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b61130d611d8e565b73ffffffffffffffffffffffffffffffffffffffff1661132b6114df565b73ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890613020565b60405180910390fd5b80600a60016101000a81548160ff021916908360ff16021790555050565b60135481565b6113ad611d8e565b73ffffffffffffffffffffffffffffffffffffffff166113cb6114df565b73ffffffffffffffffffffffffffffffffffffffff1614611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613020565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461151790612fa3565b80601f016020809104026020016040519081016040528092919081815260200182805461154390612fa3565b80156115905780601f1061156557610100808354040283529160200191611590565b820191906000526020600020905b81548152906001019060200180831161157357829003601f168201915b5050505050905090565b600061165d6115a7611d8e565b846116588560405180606001604052806025815260200161372760259139600260006115d1611d8e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237e9092919063ffffffff16565b611d96565b6001905092915050565b61166f611d8e565b73ffffffffffffffffffffffffffffffffffffffff1661168d6114df565b73ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90613020565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b600f60009054906101000a900460ff1681565b61171a611d8e565b73ffffffffffffffffffffffffffffffffffffffff166117386114df565b73ffffffffffffffffffffffffffffffffffffffff161461178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590613020565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b60006117bf6117b8611d8e565b8484611f2a565b6001905092915050565b6117d1611d8e565b73ffffffffffffffffffffffffffffffffffffffff166117ef6114df565b73ffffffffffffffffffffffffffffffffffffffff1614611845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183c90613020565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611918611d8e565b73ffffffffffffffffffffffffffffffffffffffff166119366114df565b73ffffffffffffffffffffffffffffffffffffffff161461198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613020565b60405180910390fd5b601660149054906101000a900460ff16156119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d3906132a0565b60405180910390fd5b60006119e730611162565b90506000606483836119f991906130da565b611a03919061314b565b9050611a0e816123e9565b505050565b611a1b611d8e565b73ffffffffffffffffffffffffffffffffffffffff16611a396114df565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613020565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611af2611d8e565b73ffffffffffffffffffffffffffffffffffffffff16611b106114df565b73ffffffffffffffffffffffffffffffffffffffff1614611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d90613020565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc90613332565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c9a611d8e565b73ffffffffffffffffffffffffffffffffffffffff16611cb86114df565b73ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613020565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d579190612c0a565b60405180910390a150565b60008183611d7091906130da565b905092915050565b60008183611d86919061314b565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e005750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e369061339e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f1d9190612cdb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f945750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca9061340a565b60405180910390fd5b60008111612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d9061349c565b60405180910390fd5b600a60019054906101000a900460ff1660ff16600a60009054906101000a900460ff1660ff16101580156120575750601660149054906101000a900460ff16155b80156120b15750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120c95750601660159054906101000a900460ff165b1561211c576000600a60006101000a81548160ff021916908360ff16021790555060006120f530611162565b90506013548111156121075760135490505b600081111561211a57612119816123e9565b5b505b6000600f60009054906101000a900460ff169050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121d15750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061229a575060168054906101000a900460ff16801561223f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122995750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156122a8576000905061236c565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361230b57600d54600c8190555061236b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361236a57600e54600c819055505b5b5b6123788484848461245d565b50505050565b60008383111582906123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd9190612af4565b60405180910390fd5b5082840390509392505050565b600081836123e191906134bc565b905092915050565b6001601660146101000a81548160ff02191690831515021790555061240d816124c7565b600047905061243e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261270a565b506000601660146101000a81548160ff02191690831515021790555050565b8061246f5761246a612755565b6124a8565b600a600081819054906101000a900460ff168092919061248e906134f0565b91906101000a81548160ff021916908360ff160217905550505b6124b38484846127b1565b806124c1576124c06129ec565b5b50505050565b6000600267ffffffffffffffff8111156124e4576124e3613519565b5b6040519080825280602002602001820160405280156125125781602001602082028036833780820191505090505b509050308160008151811061252a57612529613548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f59190613055565b8160018151811061260957612608613548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061267030601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d96565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126d4959493929190613670565b600060405180830381600087803b1580156126ee57600080fd5b505af1158015612702573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612750573d6000803e3d6000fd5b505050565b6000600c5414801561276957506000600d54145b801561277757506000600e54145b6127af57600d54601181905550600e54601281905550600c546010819055506000600d819055506000600e819055506000600c819055505b565b6000806127bd83612a09565b9150915061281383600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a4e90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128a882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293d81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129dd9190612cdb565b60405180910390a35050505050565b601054600c81905550601154600d81905550601254600e81905550565b60008060006064600c5485612a1e91906130da565b612a28919061314b565b90506000612a3f8286612a4e90919063ffffffff16565b90508082935093505050915091565b60008183612a5c91906136ca565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a9e578082015181840152602081019050612a83565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ac682612a64565b612ad08185612a6f565b9350612ae0818560208601612a80565b612ae981612aaa565b840191505092915050565b60006020820190508181036000830152612b0e8184612abb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4682612b1b565b9050919050565b612b5681612b3b565b8114612b6157600080fd5b50565b600081359050612b7381612b4d565b92915050565b6000819050919050565b612b8c81612b79565b8114612b9757600080fd5b50565b600081359050612ba981612b83565b92915050565b60008060408385031215612bc657612bc5612b16565b5b6000612bd485828601612b64565b9250506020612be585828601612b9a565b9150509250929050565b60008115159050919050565b612c0481612bef565b82525050565b6000602082019050612c1f6000830184612bfb565b92915050565b600060208284031215612c3b57612c3a612b16565b5b6000612c4984828501612b64565b91505092915050565b6000819050919050565b6000612c77612c72612c6d84612b1b565b612c52565b612b1b565b9050919050565b6000612c8982612c5c565b9050919050565b6000612c9b82612c7e565b9050919050565b612cab81612c90565b82525050565b6000602082019050612cc66000830184612ca2565b92915050565b612cd581612b79565b82525050565b6000602082019050612cf06000830184612ccc565b92915050565b600080600060608486031215612d0f57612d0e612b16565b5b6000612d1d86828701612b64565b9350506020612d2e86828701612b64565b9250506040612d3f86828701612b9a565b9150509250925092565b600060208284031215612d5f57612d5e612b16565b5b6000612d6d84828501612b9a565b91505092915050565b600060ff82169050919050565b612d8c81612d76565b82525050565b6000602082019050612da76000830184612d83565b92915050565b612db681612b3b565b82525050565b6000602082019050612dd16000830184612dad565b92915050565b60008060408385031215612dee57612ded612b16565b5b6000612dfc85828601612b9a565b9250506020612e0d85828601612b9a565b9150509250929050565b612e2081612d76565b8114612e2b57600080fd5b50565b600081359050612e3d81612e17565b92915050565b600060208284031215612e5957612e58612b16565b5b6000612e6784828501612e2e565b91505092915050565b6000612e7b82612b1b565b9050919050565b612e8b81612e70565b8114612e9657600080fd5b50565b600081359050612ea881612e82565b92915050565b600060208284031215612ec457612ec3612b16565b5b6000612ed284828501612e99565b91505092915050565b612ee481612bef565b8114612eef57600080fd5b50565b600081359050612f0181612edb565b92915050565b600060208284031215612f1d57612f1c612b16565b5b6000612f2b84828501612ef2565b91505092915050565b60008060408385031215612f4b57612f4a612b16565b5b6000612f5985828601612b64565b9250506020612f6a85828601612b64565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fbb57607f821691505b602082108103612fce57612fcd612f74565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061300a602083612a6f565b915061301582612fd4565b602082019050919050565b6000602082019050818103600083015261303981612ffd565b9050919050565b60008151905061304f81612b4d565b92915050565b60006020828403121561306b5761306a612b16565b5b600061307984828501613040565b91505092915050565b60006040820190506130976000830185612dad565b6130a46020830184612dad565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130e582612b79565b91506130f083612b79565b92508282026130fe81612b79565b91508282048414831517613115576131146130ab565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061315682612b79565b915061316183612b79565b9250826131715761317061311c565b5b828204905092915050565b7f4275792046656520697320746f6f206869676821000000000000000000000000600082015250565b60006131b2601483612a6f565b91506131bd8261317c565b602082019050919050565b600060208201905081810360008301526131e1816131a5565b9050919050565b7f53656c6c2046656520697320746f6f2068696768210000000000000000000000600082015250565b600061321e601583612a6f565b9150613229826131e8565b602082019050919050565b6000602082019050818103600083015261324d81613211565b9050919050565b7f43757272656e746c792070726f63657373696e672c20747279206c617465722e600082015250565b600061328a602083612a6f565b915061329582613254565b602082019050919050565b600060208201905081810360008301526132b98161327d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061331c602683612a6f565b9150613327826132c0565b604082019050919050565b6000602082019050818103600083015261334b8161330f565b9050919050565b7f4552523a207a65726f2061646472657373000000000000000000000000000000600082015250565b6000613388601183612a6f565b915061339382613352565b602082019050919050565b600060208201905081810360008301526133b78161337b565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b60006133f4601083612a6f565b91506133ff826133be565b602082019050919050565b60006020820190508181036000830152613423816133e7565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b6000613486602583612a6f565b91506134918261342a565b604082019050919050565b600060208201905081810360008301526134b581613479565b9050919050565b60006134c782612b79565b91506134d283612b79565b92508282019050808211156134ea576134e96130ab565b5b92915050565b60006134fb82612d76565b915060ff820361350e5761350d6130ab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061359c61359761359284613577565b612c52565b612b79565b9050919050565b6135ac81613581565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135e781612b3b565b82525050565b60006135f983836135de565b60208301905092915050565b6000602082019050919050565b600061361d826135b2565b61362781856135bd565b9350613632836135ce565b8060005b8381101561366357815161364a88826135ed565b975061365583613605565b925050600181019050613636565b5085935050505092915050565b600060a0820190506136856000830188612ccc565b61369260208301876135a3565b81810360408301526136a48186613612565b90506136b36060830185612dad565b6136c06080830184612ccc565b9695505050505050565b60006136d582612b79565b91506136e083612b79565b92508282039050818111156136f8576136f76130ab565b5b9291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203c5949014a2dbb3a3b66198c8682dd773e1494c334eb623e97aa9492b8f1ada764736f6c63430008110033

Deployed Bytecode Sourcemap

16506:12126:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19044:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19948:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26790:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22845:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17979:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19321:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18062:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20254:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23086:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19230:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27174:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20708:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17460:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21502:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18027:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18097:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17493:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21807:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19424:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6817:148;;;;;;;;;;;;;:::i;:::-;;16751:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22623:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17859:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22096:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6502:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21016:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22888:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17527:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20149:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19549:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27375:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19756:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25706:544;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21689:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7021:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22321:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19044:83;19081:13;19114:5;19107:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19044:83;:::o;19948:193::-;20050:4;20072:39;20081:12;:10;:12::i;:::-;20095:7;20104:6;20072:8;:39::i;:::-;20129:4;20122:11;;19948:193;;;;:::o;26790:353::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26875:32:::1;26929:9;26875:64;;26984:13;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26966:53;;;27042:4;27062:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26966:127;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26950:13;;:143;;;;;;;;;;;;;;;;;;27122:13;27104:15;;:31;;;;;;;;;;;;;;;;;;26864:279;26790:353:::0;:::o;22845:34::-;;;;;;;;;;;;:::o;17979:41::-;;;;;;;;;;;;;:::o;19321:95::-;19374:7;19401;;19394:14;;19321:95;:::o;18062:28::-;;;;;;;;;;;;;:::o;20254:446::-;20386:4;20403:36;20413:6;20421:9;20432:6;20403:9;:36::i;:::-;20450:220;20473:6;20494:12;:10;:12::i;:::-;20521:138;20577:6;20521:138;;;;;;;;;;;;;;;;;:11;:19;20533:6;20521:19;;;;;;;;;;;;;;;:33;20541:12;:10;:12::i;:::-;20521:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;20450:8;:220::i;:::-;20688:4;20681:11;;20254:446;;;;;:::o;23086:177::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23250:5:::1;23229:17;23219:7;;:27;;;;:::i;:::-;23218:37;;;;:::i;:::-;23203:12;:52;;;;23086:177:::0;:::o;19230:83::-;19271:5;19296:9;;;;;;;;;;;19289:16;;19230:83;:::o;27174:193::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27253:32:::1;27307:9;27253:64;;27346:13;27328:15;;:31;;;;;;;;;;;;;;;;;;27242:125;27174:193:::0;:::o;20708:300::-;20823:4;20845:133;20868:12;:10;:12::i;:::-;20895:7;20917:50;20956:10;20917:11;:25;20929:12;:10;:12::i;:::-;20917:25;;;;;;;;;;;;;;;:34;20943:7;20917:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20845:8;:133::i;:::-;20996:4;20989:11;;20708:300;;;;:::o;17460:26::-;;;;:::o;21502:111::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21601:4:::1;21571:18;:27;21590:7;21571:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;21502:111:::0;:::o;18027:28::-;;;;;;;;;;;;;:::o;18097:40::-;;;;;;;;;;;;;:::o;17493:27::-;;;;:::o;21807:281::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21910:14:::1;;21899:7;:25;;21891:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21980:14;;21968:8;:26;;21960:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22044:8;22033;:19;;;;22073:7;22063;:17;;;;21807:281:::0;;:::o;19424:117::-;19490:7;19517;:16;19525:7;19517:16;;;;;;;;;;;;;;;;19510:23;;19424: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;16751:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;22623:177::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22770:22:::1;22756:11;;:36;;;;;;;;;;;;;;;;;;22623:177:::0;:::o;17859:53::-;;;;:::o;22096:154::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22188:6:::1;22175:10;;:19;;;;;;;;;;;;;;;;;;22238:4;22205:18;:30;22224:10;;;;;;;;;;;22205:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22096:154:::0;:::o;6502:87::-;6548:7;6575:6;;;;;;;;;;;6568:13;;6502:87;:::o;19135:::-;19174:13;19207:7;19200:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19135:87;:::o;21016:400::-;21136:4;21158:228;21181:12;:10;:12::i;:::-;21208:7;21230:145;21287:15;21230:145;;;;;;;;;;;;;;;;;:11;:25;21242:12;:10;:12::i;:::-;21230:25;;;;;;;;;;;;;;;:34;21256:7;21230:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;21158:8;:228::i;:::-;21404:4;21397:11;;21016:400;;;;:::o;22888:125::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22992:13:::1;22974:15;::::0;:31:::1;;;;;;;;;;;;;;;;;;22888:125:::0;:::o;17527:31::-;;;;;;;;;;;;;:::o;20149:97::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20230:8:::1;20216:11;;:22;;;;;;;;;;;;;;;;;;20149:97:::0;:::o;19549:199::-;19654:4;19676:42;19686:12;:10;:12::i;:::-;19700:9;19711:6;19676:9;:42::i;:::-;19736:4;19729:11;;19549:199;;;;:::o;27375:106::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27466:7:::1;27450:13;;:23;;;;;;;;;;;;;;;;;;27375:106:::0;:::o;19756:184::-;19873:7;19905:11;:18;19917:5;19905:18;;;;;;;;;;;;;;;:27;19924:7;19905:27;;;;;;;;;;;;;;;;19898:34;;19756:184;;;;:::o;25706:544::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25878:16:::1;;;;;;;;;;;25877:17;25869:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;26054:24;26081;26099:4;26081:9;:24::i;:::-;26054:51;;26116:18;26202:3;26157:28;26138:16;:47;;;;:::i;:::-;26137:68;;;;:::i;:::-;26116:89;;26216:26;26231:10;26216:14;:26::i;:::-;25812:438;;25706:544:::0;:::o;21689:110::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21786:5:::1;21756:18;:27;21775:7;21756:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;21689: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;22321:190::-;6697:12;:10;:12::i;:::-;6686:23;;:7;:5;:7::i;:::-;:23;;;6678:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22431:13:::1;22407:21;;:37;;;;;;;;;;;;;;;;;;22460:43;22489:13;22460:43;;;;;;:::i;:::-;;;;;;;;22321: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;23737:333::-;23895:1;23878:19;;:5;:19;;;;:44;;;;;23920:1;23901:21;;:7;:21;;;;23878:44;23856:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;24008:6;23978:11;:18;23990:5;23978:18;;;;;;;;;;;;;;;:27;23997:7;23978:27;;;;;;;;;;;;;;;:36;;;;24046:7;24030:32;;24039:5;24030:32;;;24055:6;24030:32;;;;;;:::i;:::-;;;;;;;;23737:333;;;:::o;24078:1259::-;24218:1;24202:18;;:4;:18;;;;:38;;;;;24238:1;24224:16;;:2;:16;;;;24202:38;24194:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24289:1;24280:6;:10;24272:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24372:11;;;;;;;;;;;24361:22;;:7;;;;;;;;;;;:22;;;;:56;;;;;24401:16;;;;;;;;;;;24400:17;24361:56;:94;;;;;24442:13;;;;;;;;;;;24434:21;;:4;:21;;;;24361:94;:132;;;;;24472:21;;;;;;;;;;;24361:132;24343:510;;;24530:1;24520:7;;:11;;;;;;;;;;;;;;;;;;24546:28;24577:24;24595:4;24577:9;:24::i;:::-;24546:55;;24643:12;;24620:20;:35;24616:111;;;24699:12;;24676:35;;24616:111;24768:1;24745:20;:24;24741:101;;;24790:36;24805:20;24790:14;:36::i;:::-;24741:101;24505:348;24343:510;24863:12;24878:11;;;;;;;;;;;24863:26;;24920:18;:24;24939:4;24920:24;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;24961:18;:22;24980:2;24961:22;;;;;;;;;;;;;;;;;;;;;;;;;24920:63;:145;;;;25001:15;;;;;;;;;;:40;;;;;25028:13;;;;;;;;;;;25020:21;;:4;:21;;;;25001:40;:63;;;;;25051:13;;;;;;;;;;;25045:19;;:2;:19;;;;25001:63;24920:145;24902:374;;;25102:5;25092:15;;24902:374;;;25137:13;;;;;;;;;;;25129:21;;:4;:21;;;25125:151;;25179:7;;25167:9;:19;;;;25125:151;;;25214:13;;;;;;;;;;;25208:19;;:2;:19;;;25204:72;;25256:8;;25244:9;:20;;;;25204:72;25125:151;24902:374;25288:41;25303:4;25309:2;25313:6;25321:7;25288:14;:41::i;:::-;24181:1156;24078:1259;;;:::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;25465:233::-;18389:4;18370:16;;:23;;;;;;;;;;;;;;;;;;25550:38:::1;25567:20;25550:16;:38::i;:::-;25599:19;25621:21;25599:43;;25653:37;25666:10;;;;;;;;;;;25678:11;25653:12;:37::i;:::-;25539:159;18435:5:::0;18416:16;;:24;;;;;;;;;;;;;;;;;;25465:233;:::o;27543:350::-;27699:7;27694:97;;27723:14;:12;:14::i;:::-;27694:97;;;27770:7;;:9;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;27694:97;27801:42;27817:6;27825:9;27836:6;27801:15;:42::i;:::-;27861:7;27856:29;;27870:15;:13;:15::i;:::-;27856:29;27543:350;;;;:::o;26258:471::-;26324:21;26362:1;26348:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26324:40;;26393:4;26375;26380:1;26375:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26419:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26409:4;26414:1;26409:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26452:62;26469:4;26484:15;;;;;;;;;;;26502:11;26452:8;:62::i;:::-;26525:15;;;;;;;;;;;:66;;;26606:11;26632:1;26648:4;26675;26695:15;26525:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26313:416;26258:471;:::o;25345:112::-;25426:6;:15;;:23;25442:6;25426:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25345:112;;:::o;23271:295::-;23331:1;23318:9;;:14;:30;;;;;23347:1;23336:7;;:12;23318:30;:47;;;;;23364:1;23352:8;;:13;23318:47;23367:7;23314:60;23404:7;;23386:15;:25;;;;23441:8;;23422:16;:27;;;;23480:9;;23460:17;:29;;;;23510:1;23500:7;:11;;;;23533:1;23522:8;:12;;;;23557:1;23545:9;:13;;;;23271:295;:::o;27901:455::-;28032:23;28057:12;28073:19;28084:7;28073:10;:19::i;:::-;28031:61;;;;28121:28;28141:7;28121;:15;28129:6;28121:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28103:7;:15;28111:6;28103:15;;;;;;;;;;;;;;;:46;;;;28181:39;28204:15;28181:7;:18;28189:9;28181:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28160:7;:18;28168:9;28160:18;;;;;;;;;;;;;;;:60;;;;28256:32;28283:4;28256:7;:22;28272:4;28256:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;28231:7;:22;28247:4;28231:22;;;;;;;;;;;;;;;:57;;;;28321:9;28304:44;;28313:6;28304:44;;;28332:15;28304:44;;;;;;:::i;:::-;;;;;;;;28020:336;;27901:455;;;:::o;23574:155::-;23630:17;;23618:9;:29;;;;23668:15;;23658:7;:25;;;;23705:16;;23694:8;:27;;;;23574:155::o;28364:265::-;28450:7;28459;28484:12;28523:3;28510:9;;28500:7;:19;;;;:::i;:::-;28499:27;;;;:::i;:::-;28484:42;;28537:23;28563:17;28575:4;28563:7;:11;;:17;;;;:::i;:::-;28537:43;;28599:15;28616:4;28591:30;;;;;;28364:265;;;:::o;999:98::-;1057:7;1088:1;1084;:5;;;;:::i;:::-;1077:12;;999:98;;;;:::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:170::-;13225:22;13221:1;13213:6;13209:14;13202:46;13085:170;:::o;13261:366::-;13403:3;13424:67;13488:2;13483:3;13424:67;:::i;:::-;13417:74;;13500:93;13589:3;13500:93;:::i;:::-;13618:2;13613:3;13609:12;13602:19;;13261:366;;;:::o;13633:419::-;13799:4;13837:2;13826:9;13822:18;13814:26;;13886:9;13880:4;13876:20;13872:1;13861:9;13857:17;13850:47;13914:131;14040:4;13914:131;:::i;:::-;13906:139;;13633:419;;;:::o;14058:171::-;14198:23;14194:1;14186:6;14182:14;14175:47;14058:171;:::o;14235:366::-;14377:3;14398:67;14462:2;14457:3;14398:67;:::i;:::-;14391:74;;14474:93;14563:3;14474:93;:::i;:::-;14592:2;14587:3;14583:12;14576:19;;14235:366;;;:::o;14607:419::-;14773:4;14811:2;14800:9;14796:18;14788:26;;14860:9;14854:4;14850:20;14846:1;14835:9;14831:17;14824:47;14888:131;15014:4;14888:131;:::i;:::-;14880:139;;14607:419;;;:::o;15032:182::-;15172:34;15168:1;15160:6;15156:14;15149:58;15032:182;:::o;15220:366::-;15362:3;15383:67;15447:2;15442:3;15383:67;:::i;:::-;15376:74;;15459:93;15548:3;15459:93;:::i;:::-;15577:2;15572:3;15568:12;15561:19;;15220:366;;;:::o;15592:419::-;15758:4;15796:2;15785:9;15781:18;15773:26;;15845:9;15839:4;15835:20;15831:1;15820:9;15816:17;15809:47;15873:131;15999:4;15873:131;:::i;:::-;15865:139;;15592:419;;;:::o;16017:225::-;16157:34;16153:1;16145:6;16141:14;16134:58;16226:8;16221:2;16213:6;16209:15;16202:33;16017:225;:::o;16248:366::-;16390:3;16411:67;16475:2;16470:3;16411:67;:::i;:::-;16404:74;;16487:93;16576:3;16487:93;:::i;:::-;16605:2;16600:3;16596:12;16589:19;;16248:366;;;:::o;16620:419::-;16786:4;16824:2;16813:9;16809:18;16801:26;;16873:9;16867:4;16863:20;16859:1;16848:9;16844:17;16837:47;16901:131;17027:4;16901:131;:::i;:::-;16893:139;;16620:419;;;:::o;17045:167::-;17185:19;17181:1;17173:6;17169:14;17162:43;17045:167;:::o;17218:366::-;17360:3;17381:67;17445:2;17440:3;17381:67;:::i;:::-;17374:74;;17457:93;17546:3;17457:93;:::i;:::-;17575:2;17570:3;17566:12;17559:19;;17218:366;;;:::o;17590:419::-;17756:4;17794:2;17783:9;17779:18;17771:26;;17843:9;17837:4;17833:20;17829:1;17818:9;17814:17;17807:47;17871:131;17997:4;17871:131;:::i;:::-;17863:139;;17590:419;;;:::o;18015:166::-;18155:18;18151:1;18143:6;18139:14;18132:42;18015:166;:::o;18187:366::-;18329:3;18350:67;18414:2;18409:3;18350:67;:::i;:::-;18343:74;;18426:93;18515:3;18426:93;:::i;:::-;18544:2;18539:3;18535:12;18528:19;;18187:366;;;:::o;18559:419::-;18725:4;18763:2;18752:9;18748:18;18740:26;;18812:9;18806:4;18802:20;18798:1;18787:9;18783:17;18776:47;18840:131;18966:4;18840:131;:::i;:::-;18832:139;;18559:419;;;:::o;18984:224::-;19124:34;19120:1;19112:6;19108:14;19101:58;19193:7;19188:2;19180:6;19176:15;19169:32;18984:224;:::o;19214:366::-;19356:3;19377:67;19441:2;19436:3;19377:67;:::i;:::-;19370:74;;19453:93;19542:3;19453:93;:::i;:::-;19571:2;19566:3;19562:12;19555:19;;19214:366;;;:::o;19586:419::-;19752:4;19790:2;19779:9;19775:18;19767:26;;19839:9;19833:4;19829:20;19825:1;19814:9;19810:17;19803:47;19867:131;19993:4;19867:131;:::i;:::-;19859:139;;19586:419;;;:::o;20011:191::-;20051:3;20070:20;20088:1;20070:20;:::i;:::-;20065:25;;20104:20;20122:1;20104:20;:::i;:::-;20099:25;;20147:1;20144;20140:9;20133:16;;20168:3;20165:1;20162:10;20159:36;;;20175:18;;:::i;:::-;20159:36;20011:191;;;;:::o;20208:167::-;20245:3;20268:22;20284:5;20268:22;:::i;:::-;20259:31;;20312:4;20305:5;20302:15;20299:41;;20320:18;;:::i;:::-;20299:41;20367:1;20360:5;20356:13;20349:20;;20208:167;;;:::o;20381:180::-;20429:77;20426:1;20419:88;20526:4;20523:1;20516:15;20550:4;20547:1;20540:15;20567:180;20615:77;20612:1;20605:88;20712:4;20709:1;20702:15;20736:4;20733:1;20726:15;20753:85;20798:7;20827:5;20816:16;;20753:85;;;:::o;20844:158::-;20902:9;20935:61;20953:42;20962:32;20988:5;20962:32;:::i;:::-;20953:42;:::i;:::-;20935:61;:::i;:::-;20922:74;;20844:158;;;:::o;21008:147::-;21103:45;21142:5;21103:45;:::i;:::-;21098:3;21091:58;21008:147;;:::o;21161:114::-;21228:6;21262:5;21256:12;21246:22;;21161:114;;;:::o;21281:184::-;21380:11;21414:6;21409:3;21402:19;21454:4;21449:3;21445:14;21430:29;;21281:184;;;;:::o;21471:132::-;21538:4;21561:3;21553:11;;21591:4;21586:3;21582:14;21574:22;;21471:132;;;:::o;21609:108::-;21686:24;21704:5;21686:24;:::i;:::-;21681:3;21674:37;21609:108;;:::o;21723:179::-;21792:10;21813:46;21855:3;21847:6;21813:46;:::i;:::-;21891:4;21886:3;21882:14;21868:28;;21723:179;;;;:::o;21908:113::-;21978:4;22010;22005:3;22001:14;21993:22;;21908:113;;;:::o;22057:732::-;22176:3;22205:54;22253:5;22205:54;:::i;:::-;22275:86;22354:6;22349:3;22275:86;:::i;:::-;22268:93;;22385:56;22435:5;22385:56;:::i;:::-;22464:7;22495:1;22480:284;22505:6;22502:1;22499:13;22480:284;;;22581:6;22575:13;22608:63;22667:3;22652:13;22608:63;:::i;:::-;22601:70;;22694:60;22747:6;22694:60;:::i;:::-;22684:70;;22540:224;22527:1;22524;22520:9;22515:14;;22480:284;;;22484:14;22780:3;22773:10;;22181:608;;;22057:732;;;;:::o;22795:831::-;23058:4;23096:3;23085:9;23081:19;23073:27;;23110:71;23178:1;23167:9;23163:17;23154:6;23110:71;:::i;:::-;23191:80;23267:2;23256:9;23252:18;23243:6;23191:80;:::i;:::-;23318:9;23312:4;23308:20;23303:2;23292:9;23288:18;23281:48;23346:108;23449:4;23440:6;23346:108;:::i;:::-;23338:116;;23464:72;23532:2;23521:9;23517:18;23508:6;23464:72;:::i;:::-;23546:73;23614:3;23603:9;23599:19;23590:6;23546:73;:::i;:::-;22795:831;;;;;;;;:::o;23632:194::-;23672:4;23692:20;23710:1;23692:20;:::i;:::-;23687:25;;23726:20;23744:1;23726:20;:::i;:::-;23721:25;;23770:1;23767;23763:9;23755:17;;23794:1;23788:4;23785:11;23782:37;;;23799:18;;:::i;:::-;23782:37;23632:194;;;;:::o

Swarm Source

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