ETH Price: $3,471.83 (+0.67%)

Token

SIRI (SIRI)
 

Overview

Max Total Supply

1,000,000,000 SIRI

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
24,000,000 SIRI

Value
$0.00
0xfd5f37B5aDC1682E42170fb886Bc1a469e2F2D65
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:
SIRI

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-04
*/

/**

t.me/Siritoken

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

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

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

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

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

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

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

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

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

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

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

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

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

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

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

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 Mint(address indexed sender, uint256 amount0, uint256 amount1);
    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 mint(address to) external returns (uint256 liquidity);

    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 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 SIRI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) private _isExcludedFromFee;

    mapping(address => bool) private _isExcludedFromLimit;

    uint256 private _tTotal = 1000000000 * 10**18;

    address payable private _marketingAddress = payable(address(0x17652a5Ca21386F981609032D043f7c3bE19F1AC));

    string private _name = "SIRI";
    string private _symbol = "SIRI";
    uint8 private _decimals = 18;

    struct BuyFee {
        uint8 liquidity;
        uint8 marketing;
    }

    struct SellFee {
        uint8 liquidity;
        uint8 marketing;
    }

    BuyFee public buyFee;
    SellFee public sellFee;

    uint8 private _liquidityFee;
    uint8 private _marketingFee;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public _maxTxAmount = _tTotal.div(1000).mul(30);
    uint256 private numTokensSellToAddToLiquidity = _tTotal.div(1000).mul(3);
    uint256 public _maxWalletSize = _tTotal.div(1000).mul(30);

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

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

    bool public tradingOpen = false;

    mapping (address => uint256) _lastTrade;

    constructor() {
        _rOwned[_msgSender()] = _tTotal;

        buyFee.liquidity = 1;
        buyFee.marketing = 19;

        sellFee.liquidity = 1;
        sellFee.marketing = 19;

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

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        _isExcludedFromLimit[_marketingAddress] = true;
        _isExcludedFromLimit[owner()] = true;
        _isExcludedFromLimit[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _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 _rOwned[account];
    }

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

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

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

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

    function updateMarketingWallet(address payable newMarketingWallet) public onlyOwner {
    require(newMarketingWallet != address(0), "Invalid address: address cannot be the zero address");
    _marketingAddress = newMarketingWallet;
    
    }


    function removeFees(
        uint8 buy_liquidity,
        uint8 buy_marketing,
        uint8 sell_liquidity,
        uint8 sell_marketing
    ) external onlyOwner {
        buyFee.marketing = buy_marketing;
        buyFee.liquidity = buy_liquidity;

        sellFee.marketing = sell_marketing;
        sellFee.liquidity = sell_liquidity;
    }

    receive() external payable {}

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tWallet = calculateMarketingFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tLiquidity).sub(tWallet);

        return (tTransferAmount, tLiquidity, tWallet);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(tLiquidity);
    }

    function _takeWalletFee(uint256 tWallet) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(tWallet);
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(10**2);
    }

    function calculateMarketingFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_marketingFee).div(10**2);
    }

    function removeAllFee() private {
        _liquidityFee = 0;
        _marketingFee = 0;
    }

    function setBuy() private {
        _liquidityFee = buyFee.liquidity;
        _marketingFee = buyFee.marketing;
    }

    function setSell() private {
        _liquidityFee = sellFee.liquidity;
        _marketingFee = sellFee.marketing;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (from != owner() && to != owner()) require(tradingOpen, "Trading not yet enabled.");

        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        if (takeFee) {
            if (!_isExcludedFromLimit[from] && !_isExcludedFromLimit[to]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                if (to != uniswapV2Pair) {
                    require(amount + balanceOf(to) <= _maxWalletSize, "Recipient exceeds max wallet size.");
                }
            }
        }

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

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 denominator = (buyFee.liquidity + sellFee.liquidity + buyFee.marketing + sellFee.marketing) * 2;
        uint256 tokensToAddLiquidityWith = (tokens * (buyFee.liquidity + sellFee.liquidity)) / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance = deltaBalance / (denominator - (buyFee.liquidity + sellFee.liquidity));
        uint256 ethToAddLiquidityWith = unitBalance * (buyFee.liquidity + sellFee.liquidity);

        if (ethToAddLiquidityWith > 0) {
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * (buyFee.marketing + sellFee.marketing);
        if (marketingAmt > 0) {
            payable(_marketingAddress).transfer(marketingAmt);
        }
    }

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

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

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

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

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (takeFee) {
            removeAllFee();
            if (sender == uniswapV2Pair) {
                setBuy();
            }
            if (recipient == uniswapV2Pair) {
                setSell();
            }
        }

        _transferStandard(sender, recipient, amount);

        removeAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 tTransferAmount,
            uint256 tLiquidity,
            uint256 tWallet
        ) = _getTValues(tAmount);

        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeWalletFee(tWallet);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading is already open.");
        tradingOpen = true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy_liquidity","type":"uint8"},{"internalType":"uint8","name":"buy_marketing","type":"uint8"},{"internalType":"uint8","name":"sell_liquidity","type":"uint8"},{"internalType":"uint8","name":"sell_marketing","type":"uint8"}],"name":"removeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"liquidity","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"}],"stateMutability":"view","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526b033b2e3c9fd0803ce80000006006557317652a5ca21386f981609032d043f7c3be19f1ac60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600481526020017f5349524900000000000000000000000000000000000000000000000000000000815250600890816100ac9190610b7b565b506040518060400160405280600481526020017f5349524900000000000000000000000000000000000000000000000000000000815250600990816100f19190610b7b565b506012600a5f6101000a81548160ff021916908360ff1602179055506001600d60036101000a81548160ff021916908315150217905550610152601e6101446103e86006546107ec60201b90919060201c565b61083b60201b90919060201c565b600e5561017f60036101716103e86006546107ec60201b90919060201c565b61083b60201b90919060201c565b600f556101ac601e61019e6103e86006546107ec60201b90919060201c565b61083b60201b90919060201c565b6010555f60115f6101000a81548160ff0219169083151502179055503480156101d3575f80fd5b505f6101e36108b260201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6102936108b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600b5f015f6101000a81548160ff021916908360ff1602179055506013600b5f0160016101000a81548160ff021916908360ff1602179055506001600c5f015f6101000a81548160ff021916908360ff1602179055506013600c5f0160016101000a81548160ff021916908360ff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cb9190610ca8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610430573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104549190610ca8565b6040518363ffffffff1660e01b8152600401610471929190610ce2565b6020604051808303815f875af115801561048d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b19190610ca8565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160045f61052b6108b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f6106ce6108b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506107806108b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516107de9190610d18565b60405180910390a350610f10565b5f61083383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506108e060201b60201c565b905092915050565b5f80830361084b575f90506108ac565b5f82846108589190610d5e565b90508284826108679190610dcc565b146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90610e7c565b60405180910390fd5b809150505b92915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8083118290610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d9190610ef0565b60405180910390fd5b505f83856109349190610dcc565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806109bc57607f821691505b6020821081036109cf576109ce610978565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610a317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826109f6565b610a3b86836109f6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610a7f610a7a610a7584610a53565b610a5c565b610a53565b9050919050565b5f819050919050565b610a9883610a65565b610aac610aa482610a86565b848454610a02565b825550505050565b5f90565b610ac0610ab4565b610acb818484610a8f565b505050565b5b81811015610aee57610ae35f82610ab8565b600181019050610ad1565b5050565b601f821115610b3357610b04816109d5565b610b0d846109e7565b81016020851015610b1c578190505b610b30610b28856109e7565b830182610ad0565b50505b505050565b5f82821c905092915050565b5f610b535f1984600802610b38565b1980831691505092915050565b5f610b6b8383610b44565b9150826002028217905092915050565b610b8482610941565b67ffffffffffffffff811115610b9d57610b9c61094b565b5b610ba782546109a5565b610bb2828285610af2565b5f60209050601f831160018114610be3575f8415610bd1578287015190505b610bdb8582610b60565b865550610c42565b601f198416610bf1866109d5565b5f5b82811015610c1857848901518255600182019150602085019450602081019050610bf3565b86831015610c355784890151610c31601f891682610b44565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c7782610c4e565b9050919050565b610c8781610c6d565b8114610c91575f80fd5b50565b5f81519050610ca281610c7e565b92915050565b5f60208284031215610cbd57610cbc610c4a565b5b5f610cca84828501610c94565b91505092915050565b610cdc81610c6d565b82525050565b5f604082019050610cf55f830185610cd3565b610d026020830184610cd3565b9392505050565b610d1281610a53565b82525050565b5f602082019050610d2b5f830184610d09565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d6882610a53565b9150610d7383610a53565b9250828202610d8181610a53565b91508282048414831517610d9857610d97610d31565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610dd682610a53565b9150610de183610a53565b925082610df157610df0610d9f565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610e66602183610dfc565b9150610e7182610e0c565b604082019050919050565b5f6020820190508181035f830152610e9381610e5a565b9050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ec282610941565b610ecc8185610dfc565b9350610edc818560208601610e9a565b610ee581610ea8565b840191505092915050565b5f6020820190508181035f830152610f088184610eb8565b905092915050565b60805160a0516131a0610f705f395f8181610726015281816111ac015281816113c00152818161176c01526117c801525f81816105be015281816118d9015281816119b8015281816119df01528181611a750152611a9c01526131a05ff3fe608060405260043610610138575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b4114610405578063a9059cbb1461042f578063aacebbe31461046b578063c9567bf914610493578063dd62ed3e146104a9578063ffb54a99146104e55761013f565b8063715018a6146103495780637d1db4a51461035f5780638da5cb5b146103895780638f9a55c0146103b357806394f2a944146103dd5761013f565b80632b14ca56116100fc5780632b14ca5614610239578063313ce56714610264578063470624021461028e57806349bd5a5e146102b95780634a74bb02146102e357806370a082311461030d5761013f565b806306fdde0314610143578063095ea7b31461016d5780631694505e146101a957806318160ddd146101d357806323b872dd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061015761050f565b6040516101649190612214565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906122c5565b61059f565b6040516101a0919061231d565b60405180910390f35b3480156101b4575f80fd5b506101bd6105bc565b6040516101ca9190612391565b60405180910390f35b3480156101de575f80fd5b506101e76105e0565b6040516101f491906123b9565b60405180910390f35b348015610208575f80fd5b50610223600480360381019061021e91906123d2565b6105e9565b604051610230919061231d565b60405180910390f35b348015610244575f80fd5b5061024d6106bd565b60405161025b92919061243d565b60405180910390f35b34801561026f575f80fd5b506102786106e6565b6040516102859190612464565b60405180910390f35b348015610299575f80fd5b506102a26106fb565b6040516102b092919061243d565b60405180910390f35b3480156102c4575f80fd5b506102cd610724565b6040516102da919061248c565b60405180910390f35b3480156102ee575f80fd5b506102f7610748565b604051610304919061231d565b60405180910390f35b348015610318575f80fd5b50610333600480360381019061032e91906124a5565b61075b565b60405161034091906123b9565b60405180910390f35b348015610354575f80fd5b5061035d6107a1565b005b34801561036a575f80fd5b506103736108ef565b60405161038091906123b9565b60405180910390f35b348015610394575f80fd5b5061039d6108f5565b6040516103aa919061248c565b60405180910390f35b3480156103be575f80fd5b506103c761091c565b6040516103d491906123b9565b60405180910390f35b3480156103e8575f80fd5b5061040360048036038101906103fe91906124fa565b610922565b005b348015610410575f80fd5b50610419610a2e565b6040516104269190612214565b60405180910390f35b34801561043a575f80fd5b50610455600480360381019061045091906122c5565b610abe565b604051610462919061231d565b60405180910390f35b348015610476575f80fd5b50610491600480360381019061048c9190612599565b610adb565b005b34801561049e575f80fd5b506104a7610c20565b005b3480156104b4575f80fd5b506104cf60048036038101906104ca91906125c4565b610d1f565b6040516104dc91906123b9565b60405180910390f35b3480156104f0575f80fd5b506104f9610da1565b604051610506919061231d565b60405180910390f35b60606008805461051e9061262f565b80601f016020809104026020016040519081016040528092919081815260200182805461054a9061262f565b80156105955780601f1061056c57610100808354040283529160200191610595565b820191905f5260205f20905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b5f6105b26105ab610db3565b8484610dba565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600654905090565b5f6105f5848484610f7d565b6106b284610601610db3565b6106ad856040518060600160405280602881526020016131436028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610664610db3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114809092919063ffffffff16565b610dba565b600190509392505050565b600c805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16905082565b5f600a5f9054906101000a900460ff16905090565b600b805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16905082565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60039054906101000a900460ff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107a9610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c906126a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b61092a610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ad906126a9565b60405180910390fd5b82600b5f0160016101000a81548160ff021916908360ff16021790555083600b5f015f6101000a81548160ff021916908360ff16021790555080600c5f0160016101000a81548160ff021916908360ff16021790555081600c5f015f6101000a81548160ff021916908360ff16021790555050505050565b606060098054610a3d9061262f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a699061262f565b8015610ab45780601f10610a8b57610100808354040283529160200191610ab4565b820191905f5260205f20905b815481529060010190602001808311610a9757829003601f168201915b5050505050905090565b5f610ad1610aca610db3565b8484610f7d565b6001905092915050565b610ae3610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b66906126a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd490612737565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c28610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab906126a9565b60405180910390fd5b60115f9054906101000a900460ff1615610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa9061279f565b60405180910390fd5b600160115f6101000a81548160ff021916908315150217905550565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f9061282d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906128bb565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f7091906123b9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290612949565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611059576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611050906129d7565b60405180910390fd5b5f811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290612a65565b60405180910390fd5b6110a36108f5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561111157506110e16108f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156111655760115f9054906101000a900460ff16611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90612acd565b60405180910390fd5b5b5f61116f3061075b565b9050600e54811061118057600e5490505b5f600f5482101590508080156111a35750600d60029054906101000a900460ff16155b80156111fb57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156112135750600d60039054906101000a900460ff165b1561122757600f549150611226826114e2565b5b5f6001905060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806112c7575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156112d0575f90505b801561146c5760055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611374575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561146b57600e548411156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590612b5b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461146a5760105461141d8661075b565b856114289190612ba6565b1115611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090612c49565b60405180910390fd5b5b5b5b6114788686868461175c565b505050505050565b5f8383111582906114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be9190612214565b60405180910390fd5b505f83856114d59190612c67565b9050809150509392505050565b6001600d60026101000a81548160ff0219169083151502179055505f6002600c5f0160019054906101000a900460ff16600b5f0160019054906101000a900460ff16600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff166115509190612c9a565b61155a9190612c9a565b6115649190612c9a565b61156e9190612cce565b60ff1690505f81600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff166115a19190612c9a565b60ff16846115af9190612d0a565b6115b99190612d78565b90505f81846115c89190612c67565b90505f4790506115d78261183c565b5f81476115e49190612c67565b90505f600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff166116139190612c9a565b60ff16866116219190612c67565b8261162c9190612d78565b90505f600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff1661165b9190612c9a565b60ff16826116699190612d0a565b90505f81111561167e5761167d8682611a6f565b5b5f600c5f0160019054906101000a900460ff16600b5f0160019054906101000a900460ff166116ad9190612c9a565b60ff166002846116bd9190612d0a565b6116c79190612d0a565b90505f8111156117375760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611735573d5f803e3d5ffd5b505b50505050505050505f600d60026101000a81548160ff02191690831515021790555050565b80156118235761176a611b46565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117c6576117c5611b7d565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182257611821611bd5565b5b5b61182e848484611c2d565b611836611b46565b50505050565b5f600267ffffffffffffffff81111561185857611857612da8565b5b6040519080825280602002602001820160405280156118865781602001602082028036833780820191505090505b50905030815f8151811061189d5761189c612dd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611940573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119649190612e16565b8160018151811061197857611977612dd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119dd307f000000000000000000000000000000000000000000000000000000000000000084610dba565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611a3e959493929190612f31565b5f604051808303815f87803b158015611a55575f80fd5b505af1158015611a67573d5f803e3d5ffd5b505050505050565b611a9a307f000000000000000000000000000000000000000000000000000000000000000084610dba565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401611afe96959493929190612f89565b60606040518083038185885af1158015611b1a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b3f9190612ffc565b5050505050565b5f600d5f6101000a81548160ff021916908360ff1602179055505f600d60016101000a81548160ff021916908360ff160217905550565b600b5f015f9054906101000a900460ff16600d5f6101000a81548160ff021916908360ff160217905550600b5f0160019054906101000a900460ff16600d60016101000a81548160ff021916908360ff160217905550565b600c5f015f9054906101000a900460ff16600d5f6101000a81548160ff021916908360ff160217905550600c5f0160019054906101000a900460ff16600d60016101000a81548160ff021916908360ff160217905550565b5f805f611c3984611de0565b925092509250611c8f8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e3690919063ffffffff16565b60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d208360025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7f90919063ffffffff16565b60025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d6a82611edc565b611d7381611f70565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dd091906123b9565b60405180910390a3505050505050565b5f805f80611ded85612004565b90505f611df986612043565b90505f611e2182611e13858a611e3690919063ffffffff16565b611e3690919063ffffffff16565b90508083839550955095505050509193909250565b5f611e7783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611480565b905092915050565b5f808284611e8d9190612ba6565b905083811015611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990613096565b60405180910390fd5b8091505092915050565b611f2c8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b611fc08160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b5f61203c606461202e600d5f9054906101000a900460ff1660ff168561208390919063ffffffff16565b6120fa90919063ffffffff16565b9050919050565b5f61207c606461206e600d60019054906101000a900460ff1660ff168561208390919063ffffffff16565b6120fa90919063ffffffff16565b9050919050565b5f808303612093575f90506120f4565b5f82846120a09190612d0a565b90508284826120af9190612d78565b146120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690613124565b60405180910390fd5b809150505b92915050565b5f61213b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612143565b905092915050565b5f8083118290612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809190612214565b60405180910390fd5b505f83856121979190612d78565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6121e6826121a4565b6121f081856121ae565b93506122008185602086016121be565b612209816121cc565b840191505092915050565b5f6020820190508181035f83015261222c81846121dc565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61226182612238565b9050919050565b61227181612257565b811461227b575f80fd5b50565b5f8135905061228c81612268565b92915050565b5f819050919050565b6122a481612292565b81146122ae575f80fd5b50565b5f813590506122bf8161229b565b92915050565b5f80604083850312156122db576122da612234565b5b5f6122e88582860161227e565b92505060206122f9858286016122b1565b9150509250929050565b5f8115159050919050565b61231781612303565b82525050565b5f6020820190506123305f83018461230e565b92915050565b5f819050919050565b5f61235961235461234f84612238565b612336565b612238565b9050919050565b5f61236a8261233f565b9050919050565b5f61237b82612360565b9050919050565b61238b81612371565b82525050565b5f6020820190506123a45f830184612382565b92915050565b6123b381612292565b82525050565b5f6020820190506123cc5f8301846123aa565b92915050565b5f805f606084860312156123e9576123e8612234565b5b5f6123f68682870161227e565b93505060206124078682870161227e565b9250506040612418868287016122b1565b9150509250925092565b5f60ff82169050919050565b61243781612422565b82525050565b5f6040820190506124505f83018561242e565b61245d602083018461242e565b9392505050565b5f6020820190506124775f83018461242e565b92915050565b61248681612257565b82525050565b5f60208201905061249f5f83018461247d565b92915050565b5f602082840312156124ba576124b9612234565b5b5f6124c78482850161227e565b91505092915050565b6124d981612422565b81146124e3575f80fd5b50565b5f813590506124f4816124d0565b92915050565b5f805f806080858703121561251257612511612234565b5b5f61251f878288016124e6565b9450506020612530878288016124e6565b9350506040612541878288016124e6565b9250506060612552878288016124e6565b91505092959194509250565b5f61256882612238565b9050919050565b6125788161255e565b8114612582575f80fd5b50565b5f813590506125938161256f565b92915050565b5f602082840312156125ae576125ad612234565b5b5f6125bb84828501612585565b91505092915050565b5f80604083850312156125da576125d9612234565b5b5f6125e78582860161227e565b92505060206125f88582860161227e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061264657607f821691505b60208210810361265957612658612602565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126936020836121ae565b915061269e8261265f565b602082019050919050565b5f6020820190508181035f8301526126c081612687565b9050919050565b7f496e76616c696420616464726573733a20616464726573732063616e6e6f74205f8201527f626520746865207a65726f206164647265737300000000000000000000000000602082015250565b5f6127216033836121ae565b915061272c826126c7565b604082019050919050565b5f6020820190508181035f83015261274e81612715565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e2e00000000000000005f82015250565b5f6127896018836121ae565b915061279482612755565b602082019050919050565b5f6020820190508181035f8301526127b68161277d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6128176024836121ae565b9150612822826127bd565b604082019050919050565b5f6020820190508181035f8301526128448161280b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128a56022836121ae565b91506128b08261284b565b604082019050919050565b5f6020820190508181035f8301526128d281612899565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6129336025836121ae565b915061293e826128d9565b604082019050919050565b5f6020820190508181035f83015261296081612927565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6129c16023836121ae565b91506129cc82612967565b604082019050919050565b5f6020820190508181035f8301526129ee816129b5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a4f6029836121ae565b9150612a5a826129f5565b604082019050919050565b5f6020820190508181035f830152612a7c81612a43565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f612ab76018836121ae565b9150612ac282612a83565b602082019050919050565b5f6020820190508181035f830152612ae481612aab565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f612b456028836121ae565b9150612b5082612aeb565b604082019050919050565b5f6020820190508181035f830152612b7281612b39565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bb082612292565b9150612bbb83612292565b9250828201905080821115612bd357612bd2612b79565b5b92915050565b7f526563697069656e742065786365656473206d61782077616c6c65742073697a5f8201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c336022836121ae565b9150612c3e82612bd9565b604082019050919050565b5f6020820190508181035f830152612c6081612c27565b9050919050565b5f612c7182612292565b9150612c7c83612292565b9250828203905081811115612c9457612c93612b79565b5b92915050565b5f612ca482612422565b9150612caf83612422565b9250828201905060ff811115612cc857612cc7612b79565b5b92915050565b5f612cd882612422565b9150612ce383612422565b9250828202612cf181612422565b9150808214612d0357612d02612b79565b5b5092915050565b5f612d1482612292565b9150612d1f83612292565b9250828202612d2d81612292565b91508282048414831517612d4457612d43612b79565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d8282612292565b9150612d8d83612292565b925082612d9d57612d9c612d4b565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612e1081612268565b92915050565b5f60208284031215612e2b57612e2a612234565b5b5f612e3884828501612e02565b91505092915050565b5f819050919050565b5f612e64612e5f612e5a84612e41565b612336565b612292565b9050919050565b612e7481612e4a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612eac81612257565b82525050565b5f612ebd8383612ea3565b60208301905092915050565b5f602082019050919050565b5f612edf82612e7a565b612ee98185612e84565b9350612ef483612e94565b805f5b83811015612f24578151612f0b8882612eb2565b9750612f1683612ec9565b925050600181019050612ef7565b5085935050505092915050565b5f60a082019050612f445f8301886123aa565b612f516020830187612e6b565b8181036040830152612f638186612ed5565b9050612f72606083018561247d565b612f7f60808301846123aa565b9695505050505050565b5f60c082019050612f9c5f83018961247d565b612fa960208301886123aa565b612fb66040830187612e6b565b612fc36060830186612e6b565b612fd0608083018561247d565b612fdd60a08301846123aa565b979650505050505050565b5f81519050612ff68161229b565b92915050565b5f805f6060848603121561301357613012612234565b5b5f61302086828701612fe8565b935050602061303186828701612fe8565b925050604061304286828701612fe8565b9150509250925092565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613080601b836121ae565b915061308b8261304c565b602082019050919050565b5f6020820190508181035f8301526130ad81613074565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61310e6021836121ae565b9150613119826130b4565b604082019050919050565b5f6020820190508181035f83015261313b81613102565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ced00adb5024bea4c87a3fba57f0b8dd0860de9577cae5e292003251adde559064736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610138575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b4114610405578063a9059cbb1461042f578063aacebbe31461046b578063c9567bf914610493578063dd62ed3e146104a9578063ffb54a99146104e55761013f565b8063715018a6146103495780637d1db4a51461035f5780638da5cb5b146103895780638f9a55c0146103b357806394f2a944146103dd5761013f565b80632b14ca56116100fc5780632b14ca5614610239578063313ce56714610264578063470624021461028e57806349bd5a5e146102b95780634a74bb02146102e357806370a082311461030d5761013f565b806306fdde0314610143578063095ea7b31461016d5780631694505e146101a957806318160ddd146101d357806323b872dd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061015761050f565b6040516101649190612214565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906122c5565b61059f565b6040516101a0919061231d565b60405180910390f35b3480156101b4575f80fd5b506101bd6105bc565b6040516101ca9190612391565b60405180910390f35b3480156101de575f80fd5b506101e76105e0565b6040516101f491906123b9565b60405180910390f35b348015610208575f80fd5b50610223600480360381019061021e91906123d2565b6105e9565b604051610230919061231d565b60405180910390f35b348015610244575f80fd5b5061024d6106bd565b60405161025b92919061243d565b60405180910390f35b34801561026f575f80fd5b506102786106e6565b6040516102859190612464565b60405180910390f35b348015610299575f80fd5b506102a26106fb565b6040516102b092919061243d565b60405180910390f35b3480156102c4575f80fd5b506102cd610724565b6040516102da919061248c565b60405180910390f35b3480156102ee575f80fd5b506102f7610748565b604051610304919061231d565b60405180910390f35b348015610318575f80fd5b50610333600480360381019061032e91906124a5565b61075b565b60405161034091906123b9565b60405180910390f35b348015610354575f80fd5b5061035d6107a1565b005b34801561036a575f80fd5b506103736108ef565b60405161038091906123b9565b60405180910390f35b348015610394575f80fd5b5061039d6108f5565b6040516103aa919061248c565b60405180910390f35b3480156103be575f80fd5b506103c761091c565b6040516103d491906123b9565b60405180910390f35b3480156103e8575f80fd5b5061040360048036038101906103fe91906124fa565b610922565b005b348015610410575f80fd5b50610419610a2e565b6040516104269190612214565b60405180910390f35b34801561043a575f80fd5b50610455600480360381019061045091906122c5565b610abe565b604051610462919061231d565b60405180910390f35b348015610476575f80fd5b50610491600480360381019061048c9190612599565b610adb565b005b34801561049e575f80fd5b506104a7610c20565b005b3480156104b4575f80fd5b506104cf60048036038101906104ca91906125c4565b610d1f565b6040516104dc91906123b9565b60405180910390f35b3480156104f0575f80fd5b506104f9610da1565b604051610506919061231d565b60405180910390f35b60606008805461051e9061262f565b80601f016020809104026020016040519081016040528092919081815260200182805461054a9061262f565b80156105955780601f1061056c57610100808354040283529160200191610595565b820191905f5260205f20905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b5f6105b26105ab610db3565b8484610dba565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600654905090565b5f6105f5848484610f7d565b6106b284610601610db3565b6106ad856040518060600160405280602881526020016131436028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610664610db3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114809092919063ffffffff16565b610dba565b600190509392505050565b600c805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16905082565b5f600a5f9054906101000a900460ff16905090565b600b805f015f9054906101000a900460ff1690805f0160019054906101000a900460ff16905082565b7f000000000000000000000000d9358462ee83b6e84851653efb4ed087e57b73c281565b600d60039054906101000a900460ff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107a9610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c906126a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b61092a610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ad906126a9565b60405180910390fd5b82600b5f0160016101000a81548160ff021916908360ff16021790555083600b5f015f6101000a81548160ff021916908360ff16021790555080600c5f0160016101000a81548160ff021916908360ff16021790555081600c5f015f6101000a81548160ff021916908360ff16021790555050505050565b606060098054610a3d9061262f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a699061262f565b8015610ab45780601f10610a8b57610100808354040283529160200191610ab4565b820191905f5260205f20905b815481529060010190602001808311610a9757829003601f168201915b5050505050905090565b5f610ad1610aca610db3565b8484610f7d565b6001905092915050565b610ae3610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b66906126a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd490612737565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c28610db3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab906126a9565b60405180910390fd5b60115f9054906101000a900460ff1615610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa9061279f565b60405180910390fd5b600160115f6101000a81548160ff021916908315150217905550565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f9061282d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d906128bb565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f7091906123b9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290612949565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611059576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611050906129d7565b60405180910390fd5b5f811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290612a65565b60405180910390fd5b6110a36108f5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561111157506110e16108f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156111655760115f9054906101000a900460ff16611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90612acd565b60405180910390fd5b5b5f61116f3061075b565b9050600e54811061118057600e5490505b5f600f5482101590508080156111a35750600d60029054906101000a900460ff16155b80156111fb57507f000000000000000000000000d9358462ee83b6e84851653efb4ed087e57b73c273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156112135750600d60039054906101000a900460ff165b1561122757600f549150611226826114e2565b5b5f6001905060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806112c7575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156112d0575f90505b801561146c5760055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611374575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561146b57600e548411156113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b590612b5b565b60405180910390fd5b7f000000000000000000000000d9358462ee83b6e84851653efb4ed087e57b73c273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461146a5760105461141d8661075b565b856114289190612ba6565b1115611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090612c49565b60405180910390fd5b5b5b5b6114788686868461175c565b505050505050565b5f8383111582906114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be9190612214565b60405180910390fd5b505f83856114d59190612c67565b9050809150509392505050565b6001600d60026101000a81548160ff0219169083151502179055505f6002600c5f0160019054906101000a900460ff16600b5f0160019054906101000a900460ff16600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff166115509190612c9a565b61155a9190612c9a565b6115649190612c9a565b61156e9190612cce565b60ff1690505f81600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff166115a19190612c9a565b60ff16846115af9190612d0a565b6115b99190612d78565b90505f81846115c89190612c67565b90505f4790506115d78261183c565b5f81476115e49190612c67565b90505f600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff166116139190612c9a565b60ff16866116219190612c67565b8261162c9190612d78565b90505f600c5f015f9054906101000a900460ff16600b5f015f9054906101000a900460ff1661165b9190612c9a565b60ff16826116699190612d0a565b90505f81111561167e5761167d8682611a6f565b5b5f600c5f0160019054906101000a900460ff16600b5f0160019054906101000a900460ff166116ad9190612c9a565b60ff166002846116bd9190612d0a565b6116c79190612d0a565b90505f8111156117375760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611735573d5f803e3d5ffd5b505b50505050505050505f600d60026101000a81548160ff02191690831515021790555050565b80156118235761176a611b46565b7f000000000000000000000000d9358462ee83b6e84851653efb4ed087e57b73c273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117c6576117c5611b7d565b5b7f000000000000000000000000d9358462ee83b6e84851653efb4ed087e57b73c273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182257611821611bd5565b5b5b61182e848484611c2d565b611836611b46565b50505050565b5f600267ffffffffffffffff81111561185857611857612da8565b5b6040519080825280602002602001820160405280156118865781602001602082028036833780820191505090505b50905030815f8151811061189d5761189c612dd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611940573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119649190612e16565b8160018151811061197857611977612dd5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119dd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610dba565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611a3e959493929190612f31565b5f604051808303815f87803b158015611a55575f80fd5b505af1158015611a67573d5f803e3d5ffd5b505050505050565b611a9a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610dba565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401611afe96959493929190612f89565b60606040518083038185885af1158015611b1a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b3f9190612ffc565b5050505050565b5f600d5f6101000a81548160ff021916908360ff1602179055505f600d60016101000a81548160ff021916908360ff160217905550565b600b5f015f9054906101000a900460ff16600d5f6101000a81548160ff021916908360ff160217905550600b5f0160019054906101000a900460ff16600d60016101000a81548160ff021916908360ff160217905550565b600c5f015f9054906101000a900460ff16600d5f6101000a81548160ff021916908360ff160217905550600c5f0160019054906101000a900460ff16600d60016101000a81548160ff021916908360ff160217905550565b5f805f611c3984611de0565b925092509250611c8f8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e3690919063ffffffff16565b60025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d208360025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7f90919063ffffffff16565b60025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d6a82611edc565b611d7381611f70565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611dd091906123b9565b60405180910390a3505050505050565b5f805f80611ded85612004565b90505f611df986612043565b90505f611e2182611e13858a611e3690919063ffffffff16565b611e3690919063ffffffff16565b90508083839550955095505050509193909250565b5f611e7783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611480565b905092915050565b5f808284611e8d9190612ba6565b905083811015611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990613096565b60405180910390fd5b8091505092915050565b611f2c8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b611fc08160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b5f61203c606461202e600d5f9054906101000a900460ff1660ff168561208390919063ffffffff16565b6120fa90919063ffffffff16565b9050919050565b5f61207c606461206e600d60019054906101000a900460ff1660ff168561208390919063ffffffff16565b6120fa90919063ffffffff16565b9050919050565b5f808303612093575f90506120f4565b5f82846120a09190612d0a565b90508284826120af9190612d78565b146120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690613124565b60405180910390fd5b809150505b92915050565b5f61213b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612143565b905092915050565b5f8083118290612189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121809190612214565b60405180910390fd5b505f83856121979190612d78565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6121e6826121a4565b6121f081856121ae565b93506122008185602086016121be565b612209816121cc565b840191505092915050565b5f6020820190508181035f83015261222c81846121dc565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61226182612238565b9050919050565b61227181612257565b811461227b575f80fd5b50565b5f8135905061228c81612268565b92915050565b5f819050919050565b6122a481612292565b81146122ae575f80fd5b50565b5f813590506122bf8161229b565b92915050565b5f80604083850312156122db576122da612234565b5b5f6122e88582860161227e565b92505060206122f9858286016122b1565b9150509250929050565b5f8115159050919050565b61231781612303565b82525050565b5f6020820190506123305f83018461230e565b92915050565b5f819050919050565b5f61235961235461234f84612238565b612336565b612238565b9050919050565b5f61236a8261233f565b9050919050565b5f61237b82612360565b9050919050565b61238b81612371565b82525050565b5f6020820190506123a45f830184612382565b92915050565b6123b381612292565b82525050565b5f6020820190506123cc5f8301846123aa565b92915050565b5f805f606084860312156123e9576123e8612234565b5b5f6123f68682870161227e565b93505060206124078682870161227e565b9250506040612418868287016122b1565b9150509250925092565b5f60ff82169050919050565b61243781612422565b82525050565b5f6040820190506124505f83018561242e565b61245d602083018461242e565b9392505050565b5f6020820190506124775f83018461242e565b92915050565b61248681612257565b82525050565b5f60208201905061249f5f83018461247d565b92915050565b5f602082840312156124ba576124b9612234565b5b5f6124c78482850161227e565b91505092915050565b6124d981612422565b81146124e3575f80fd5b50565b5f813590506124f4816124d0565b92915050565b5f805f806080858703121561251257612511612234565b5b5f61251f878288016124e6565b9450506020612530878288016124e6565b9350506040612541878288016124e6565b9250506060612552878288016124e6565b91505092959194509250565b5f61256882612238565b9050919050565b6125788161255e565b8114612582575f80fd5b50565b5f813590506125938161256f565b92915050565b5f602082840312156125ae576125ad612234565b5b5f6125bb84828501612585565b91505092915050565b5f80604083850312156125da576125d9612234565b5b5f6125e78582860161227e565b92505060206125f88582860161227e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061264657607f821691505b60208210810361265957612658612602565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126936020836121ae565b915061269e8261265f565b602082019050919050565b5f6020820190508181035f8301526126c081612687565b9050919050565b7f496e76616c696420616464726573733a20616464726573732063616e6e6f74205f8201527f626520746865207a65726f206164647265737300000000000000000000000000602082015250565b5f6127216033836121ae565b915061272c826126c7565b604082019050919050565b5f6020820190508181035f83015261274e81612715565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e2e00000000000000005f82015250565b5f6127896018836121ae565b915061279482612755565b602082019050919050565b5f6020820190508181035f8301526127b68161277d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6128176024836121ae565b9150612822826127bd565b604082019050919050565b5f6020820190508181035f8301526128448161280b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6128a56022836121ae565b91506128b08261284b565b604082019050919050565b5f6020820190508181035f8301526128d281612899565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6129336025836121ae565b915061293e826128d9565b604082019050919050565b5f6020820190508181035f83015261296081612927565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6129c16023836121ae565b91506129cc82612967565b604082019050919050565b5f6020820190508181035f8301526129ee816129b5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a4f6029836121ae565b9150612a5a826129f5565b604082019050919050565b5f6020820190508181035f830152612a7c81612a43565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65642e00000000000000005f82015250565b5f612ab76018836121ae565b9150612ac282612a83565b602082019050919050565b5f6020820190508181035f830152612ae481612aab565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b5f612b456028836121ae565b9150612b5082612aeb565b604082019050919050565b5f6020820190508181035f830152612b7281612b39565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bb082612292565b9150612bbb83612292565b9250828201905080821115612bd357612bd2612b79565b5b92915050565b7f526563697069656e742065786365656473206d61782077616c6c65742073697a5f8201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c336022836121ae565b9150612c3e82612bd9565b604082019050919050565b5f6020820190508181035f830152612c6081612c27565b9050919050565b5f612c7182612292565b9150612c7c83612292565b9250828203905081811115612c9457612c93612b79565b5b92915050565b5f612ca482612422565b9150612caf83612422565b9250828201905060ff811115612cc857612cc7612b79565b5b92915050565b5f612cd882612422565b9150612ce383612422565b9250828202612cf181612422565b9150808214612d0357612d02612b79565b5b5092915050565b5f612d1482612292565b9150612d1f83612292565b9250828202612d2d81612292565b91508282048414831517612d4457612d43612b79565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d8282612292565b9150612d8d83612292565b925082612d9d57612d9c612d4b565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612e1081612268565b92915050565b5f60208284031215612e2b57612e2a612234565b5b5f612e3884828501612e02565b91505092915050565b5f819050919050565b5f612e64612e5f612e5a84612e41565b612336565b612292565b9050919050565b612e7481612e4a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612eac81612257565b82525050565b5f612ebd8383612ea3565b60208301905092915050565b5f602082019050919050565b5f612edf82612e7a565b612ee98185612e84565b9350612ef483612e94565b805f5b83811015612f24578151612f0b8882612eb2565b9750612f1683612ec9565b925050600181019050612ef7565b5085935050505092915050565b5f60a082019050612f445f8301886123aa565b612f516020830187612e6b565b8181036040830152612f638186612ed5565b9050612f72606083018561247d565b612f7f60808301846123aa565b9695505050505050565b5f60c082019050612f9c5f83018961247d565b612fa960208301886123aa565b612fb66040830187612e6b565b612fc36060830186612e6b565b612fd0608083018561247d565b612fdd60a08301846123aa565b979650505050505050565b5f81519050612ff68161229b565b92915050565b5f805f6060848603121561301357613012612234565b5b5f61302086828701612fe8565b935050602061303186828701612fe8565b925050604061304286828701612fe8565b9150509250925092565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613080601b836121ae565b915061308b8261304c565b602082019050919050565b5f6020820190508181035f8301526130ad81613074565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61310e6021836121ae565b9150613119826130b4565b604082019050919050565b5f6020820190508181035f83015261313b81613102565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ced00adb5024bea4c87a3fba57f0b8dd0860de9577cae5e292003251adde559064736f6c634300081a0033

Deployed Bytecode Sourcemap

14040:11043:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16690:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17521:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14975:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16967:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17690:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14874:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16876:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14847:20;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;15033:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15108:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17070:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5549:148;;;;;;;;;;;;;:::i;:::-;;15157:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5335:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15298:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18400:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16781:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17195:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18144:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24939:141;;;;;;;;;;;;;:::i;:::-;;17370:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15742:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16690:83;16727:13;16760:5;16753:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16690:83;:::o;17521:161::-;17596:4;17613:39;17622:12;:10;:12::i;:::-;17636:7;17645:6;17613:8;:39::i;:::-;17670:4;17663:11;;17521:161;;;;:::o;14975:51::-;;;:::o;16967:95::-;17020:7;17047;;17040:14;;16967:95;:::o;17690:446::-;17822:4;17839:36;17849:6;17857:9;17868:6;17839:9;:36::i;:::-;17886:220;17909:6;17930:12;:10;:12::i;:::-;17957:138;18013:6;17957:138;;;;;;;;;;;;;;;;;:11;:19;17969:6;17957:19;;;;;;;;;;;;;;;:33;17977:12;:10;:12::i;:::-;17957:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;17886:8;:220::i;:::-;18124:4;18117:11;;17690:446;;;;;:::o;14874:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16876:83::-;16917:5;16942:9;;;;;;;;;;;16935:16;;16876:83;:::o;14847:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15033:38::-;;;:::o;15108:40::-;;;;;;;;;;;;;:::o;17070:117::-;17136:7;17163;:16;17171:7;17163:16;;;;;;;;;;;;;;;;17156:23;;17070:117;;;:::o;5549:148::-;5472:12;:10;:12::i;:::-;5462:22;;:6;;;;;;;;;;:22;;;5454:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5656:1:::1;5619:40;;5640:6;::::0;::::1;;;;;;;;5619:40;;;;;;;;;;;;5687:1;5670:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5549:148::o:0;15157:55::-;;;;:::o;5335:79::-;5373:7;5400:6;;;;;;;;;;;5393:13;;5335:79;:::o;15298:57::-;;;;:::o;18400:354::-;5472:12;:10;:12::i;:::-;5462:22;;:6;;;;;;;;;;:22;;;5454:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18598:13:::1;18579:6;:16;;;:32;;;;;;;;;;;;;;;;;;18641:13;18622:6;:16;;;:32;;;;;;;;;;;;;;;;;;18687:14;18667:7;:17;;;:34;;;;;;;;;;;;;;;;;;18732:14;18712:7;:17;;;:34;;;;;;;;;;;;;;;;;;18400:354:::0;;;;:::o;16781:87::-;16820:13;16853:7;16846:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16781:87;:::o;17195:167::-;17273:4;17290:42;17300:12;:10;:12::i;:::-;17314:9;17325:6;17290:9;:42::i;:::-;17350:4;17343:11;;17195:167;;;;:::o;18144:246::-;5472:12;:10;:12::i;:::-;5462:22;;:6;;;;;;;;;;:22;;;5454:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18273:1:::1;18243:32;;:18;:32;;::::0;18235:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18358:18;18338:17;;:38;;;;;;;;;;;;;;;;;;18144:246:::0;:::o;24939:141::-;5472:12;:10;:12::i;:::-;5462:22;;:6;;;;;;;;;;:22;;;5454:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25003:11:::1;;;;;;;;;;;25002:12;24994:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25068:4;25054:11;;:18;;;;;;;;;;;;;;;;;;24939:141::o:0;17370:143::-;17451:7;17478:11;:18;17490:5;17478:18;;;;;;;;;;;;;;;:27;17497:7;17478:27;;;;;;;;;;;;;;;;17471:34;;17370:143;;;;:::o;15742:31::-;;;;;;;;;;;;;:::o;2279:115::-;2332:15;2375:10;2360:26;;2279:115;:::o;20095:337::-;20205:1;20188:19;;:5;:19;;;20180:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20286:1;20267:21;;:7;:21;;;20259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20370:6;20340:11;:18;20352:5;20340:18;;;;;;;;;;;;;;;:27;20359:7;20340:27;;;;;;;;;;;;;;;:36;;;;20408:7;20392:32;;20401:5;20392:32;;;20417:6;20392:32;;;;;;:::i;:::-;;;;;;;;20095:337;;;:::o;20440:1550::-;20578:1;20562:18;;:4;:18;;;20554:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20655:1;20641:16;;:2;:16;;;20633:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20725:1;20716:6;:10;20708:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20805:7;:5;:7::i;:::-;20797:15;;:4;:15;;;;:32;;;;;20822:7;:5;:7::i;:::-;20816:13;;:2;:13;;;;20797:32;20793:86;;;20839:11;;;;;;;;;;;20831:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20793:86;20892:28;20923:24;20941:4;20923:9;:24::i;:::-;20892:55;;20988:12;;20964:20;:36;20960:104;;21040:12;;21017:35;;20960:104;21076:24;21127:29;;21103:20;:53;;21076:80;;21171:19;:40;;;;;21195:16;;;;;;;;;;;21194:17;21171:40;:65;;;;;21223:13;21215:21;;:4;:21;;;;21171:65;:90;;;;;21240:21;;;;;;;;;;;21171:90;21167:226;;;21301:29;;21278:52;;21345:36;21360:20;21345:14;:36::i;:::-;21167:226;21405:12;21420:4;21405:19;;21441:18;:24;21460:4;21441:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;21469:18;:22;21488:2;21469:22;;;;;;;;;;;;;;;;;;;;;;;;;21441:50;21437:98;;;21518:5;21508:15;;21437:98;21549:7;21545:384;;;21578:20;:26;21599:4;21578:26;;;;;;;;;;;;;;;;;;;;;;;;;21577:27;:56;;;;;21609:20;:24;21630:2;21609:24;;;;;;;;;;;;;;;;;;;;;;;;;21608:25;21577:56;21573:345;;;21672:12;;21662:6;:22;;21654:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21758:13;21752:19;;:2;:19;;;21748:155;;21830:14;;21813:13;21823:2;21813:9;:13::i;:::-;21804:6;:22;;;;:::i;:::-;:40;;21796:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21748:155;21573:345;21545:384;21941:41;21956:4;21962:2;21966:6;21974:7;21941:14;:41::i;:::-;20543:1447;;;20440:1550;;;:::o;1138:192::-;1224:7;1257:1;1252;:6;;1260:12;1244:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1284:9;1300:1;1296;:5;;;;:::i;:::-;1284:17;;1321:1;1314:8;;;1138:192;;;;;:::o;21998:1050::-;15675:4;15656:16;;:23;;;;;;;;;;;;;;;;;;22069:19:::1;22171:1;22150:7;:17;;;;;;;;;;;;22131:6;:16;;;;;;;;;;;;22111:7;:17;;;;;;;;;;;;22092:6;:16;;;;;;;;;;;;:36;;;;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;22091:81;;;;:::i;:::-;22069:103;;;;22183:32;22270:11;22248:7;:17;;;;;;;;;;;;22229:6;:16;;;;;;;;;;;;:36;;;;:::i;:::-;22219:47;;:6;:47;;;;:::i;:::-;22218:63;;;;:::i;:::-;22183:98;;22292:14;22318:24;22309:6;:33;;;;:::i;:::-;22292:50;;22355:22;22380:21;22355:46;;22414:24;22431:6;22414:16;:24::i;:::-;22451:20;22498:14;22474:21;:38;;;;:::i;:::-;22451:61;;22523:19;22595:7;:17;;;;;;;;;;;;22576:6;:16;;;;;;;;;;;;:36;;;;:::i;:::-;22561:52;;:11;:52;;;;:::i;:::-;22545:12;:69;;;;:::i;:::-;22523:91;;22625:29;22691:7;:17;;;;;;;;;;;;22672:6;:16;;;;;;;;;;;;:36;;;;:::i;:::-;22657:52;;:11;:52;;;;:::i;:::-;22625:84;;22750:1;22726:21;:25;22722:119;;;22768:61;22781:24;22807:21;22768:12;:61::i;:::-;22722:119;22853:20;22914:7;:17;;;;;;;;;;;;22895:6;:16;;;;;;;;;;;;:36;;;;:::i;:::-;22876:56;;22890:1;22876:11;:15;;;;:::i;:::-;:56;;;;:::i;:::-;22853:79;;22962:1;22947:12;:16;22943:98;;;22988:17;;;;;;;;;;;22980:35;;:49;23016:12;22980:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22943:98;22058:990;;;;;;;;15721:5:::0;15702:16;;:24;;;;;;;;;;;;;;;;;;21998:1050;:::o;23915:472::-;24070:7;24066:230;;;24094:14;:12;:14::i;:::-;24137:13;24127:23;;:6;:23;;;24123:72;;24171:8;:6;:8::i;:::-;24123:72;24226:13;24213:26;;:9;:26;;;24209:76;;24260:9;:7;:9::i;:::-;24209:76;24066:230;24308:44;24326:6;24334:9;24345:6;24308:17;:44::i;:::-;24365:14;:12;:14::i;:::-;23915:472;;;;:::o;23056:475::-;23122:21;23160:1;23146:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23122:40;;23191:4;23173;23178:1;23173:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23217:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23207:4;23212:1;23207:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23252:62;23269:4;23284:15;23302:11;23252:8;:62::i;:::-;23327:15;:66;;;23408:11;23434:1;23450:4;23477;23497:15;23327:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23111:420;23056:475;:::o;23539:368::-;23620:62;23637:4;23652:15;23670:11;23620:8;:62::i;:::-;23695:15;:31;;;23734:9;23767:4;23787:11;23813:1;23829;23853:4;23873:15;23695:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23539:368;;:::o;19732:96::-;19791:1;19775:13;;:17;;;;;;;;;;;;;;;;;;19819:1;19803:13;;:17;;;;;;;;;;;;;;;;;;19732:96::o;19836:120::-;19889:6;:16;;;;;;;;;;;;19873:13;;:32;;;;;;;;;;;;;;;;;;19932:6;:16;;;;;;;;;;;;19916:13;;:32;;;;;;;;;;;;;;;;;;19836:120::o;19964:123::-;20018:7;:17;;;;;;;;;;;;20002:13;;:33;;;;;;;;;;;;;;;;;;20062:7;:17;;;;;;;;;;;;20046:13;;:33;;;;;;;;;;;;;;;;;;19964:123::o;24395:536::-;24542:23;24580:18;24613:15;24642:20;24654:7;24642:11;:20::i;:::-;24527:135;;;;;;24693:28;24713:7;24693;:15;24701:6;24693:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24675:7;:15;24683:6;24675:15;;;;;;;;;;;;;;;:46;;;;24753:39;24776:15;24753:7;:18;24761:9;24753:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24732:7;:18;24740:9;24732:18;;;;;;;;;;;;;;;:60;;;;24803:26;24818:10;24803:14;:26::i;:::-;24840:23;24855:7;24840:14;:23::i;:::-;24896:9;24879:44;;24888:6;24879:44;;;24907:15;24879:44;;;;;;:::i;:::-;;;;;;;;24516:415;;;24395:536;;;:::o;18799:347::-;18859:7;18868;18877;18897:18;18918:30;18940:7;18918:21;:30::i;:::-;18897:51;;18959:15;18977:30;18999:7;18977:21;:30::i;:::-;18959:48;;19018:23;19044:36;19072:7;19044:23;19056:10;19044:7;:11;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;19018:62;;19101:15;19118:10;19130:7;19093:45;;;;;;;;;18799:347;;;;;:::o;994:136::-;1052:7;1079:43;1083:1;1086;1079:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1072:50;;994:136;;;;:::o;805:181::-;863:7;883:9;899:1;895;:5;;;;:::i;:::-;883:17;;924:1;919;:6;;911:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;977:1;970:8;;;805:181;;;;:::o;19154:134::-;19242:38;19269:10;19242:7;:22;19258:4;19242:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;19217:7;:22;19233:4;19217:22;;;;;;;;;;;;;;;:63;;;;19154:134;:::o;19296:128::-;19381:35;19408:7;19381;:22;19397:4;19381:22;;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;19356:7;:22;19372:4;19356:22;;;;;;;;;;;;;;;:60;;;;19296:128;:::o;19432:142::-;19502:7;19529:37;19560:5;19529:26;19541:13;;;;;;;;;;;19529:26;;:7;:11;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;19522:44;;19432:142;;;:::o;19582:::-;19652:7;19679:37;19710:5;19679:26;19691:13;;;;;;;;;;;19679:26;;:7;:11;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;19672:44;;19582:142;;;:::o;1338:250::-;1396:7;1425:1;1420;:6;1416:47;;1450:1;1443:8;;;;1416:47;1475:9;1491:1;1487;:5;;;;:::i;:::-;1475:17;;1520:1;1515;1511;:5;;;;:::i;:::-;:10;1503:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1579:1;1572:8;;;1338:250;;;;;:::o;1596:132::-;1654:7;1681:39;1685:1;1688;1681:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1674:46;;1596:132;;;;:::o;1736:191::-;1822:7;1854:1;1850;:5;1857:12;1842:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1881:9;1897:1;1893;:5;;;;:::i;:::-;1881:17;;1918:1;1911:8;;;1736:191;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:153::-;3762:9;3795:37;3826:5;3795:37;:::i;:::-;3782:50;;3685:153;;;:::o;3844:185::-;3958:64;4016:5;3958:64;:::i;:::-;3953:3;3946:77;3844:185;;:::o;4035:276::-;4155:4;4193:2;4182:9;4178:18;4170:26;;4206:98;4301:1;4290:9;4286:17;4277:6;4206:98;:::i;:::-;4035:276;;;;:::o;4317:118::-;4404:24;4422:5;4404:24;:::i;:::-;4399:3;4392:37;4317:118;;:::o;4441:222::-;4534:4;4572:2;4561:9;4557:18;4549:26;;4585:71;4653:1;4642:9;4638:17;4629:6;4585:71;:::i;:::-;4441:222;;;;:::o;4669:619::-;4746:6;4754;4762;4811:2;4799:9;4790:7;4786:23;4782:32;4779:119;;;4817:79;;:::i;:::-;4779:119;4937:1;4962:53;5007:7;4998:6;4987:9;4983:22;4962:53;:::i;:::-;4952:63;;4908:117;5064:2;5090:53;5135:7;5126:6;5115:9;5111:22;5090:53;:::i;:::-;5080:63;;5035:118;5192:2;5218:53;5263:7;5254:6;5243:9;5239:22;5218:53;:::i;:::-;5208:63;;5163:118;4669:619;;;;;:::o;5294:86::-;5329:7;5369:4;5362:5;5358:16;5347:27;;5294:86;;;:::o;5386:112::-;5469:22;5485:5;5469:22;:::i;:::-;5464:3;5457:35;5386:112;;:::o;5504:316::-;5617:4;5655:2;5644:9;5640:18;5632:26;;5668:67;5732:1;5721:9;5717:17;5708:6;5668:67;:::i;:::-;5745:68;5809:2;5798:9;5794:18;5785:6;5745:68;:::i;:::-;5504:316;;;;;:::o;5826:214::-;5915:4;5953:2;5942:9;5938:18;5930:26;;5966:67;6030:1;6019:9;6015:17;6006:6;5966:67;:::i;:::-;5826:214;;;;:::o;6046:118::-;6133:24;6151:5;6133:24;:::i;:::-;6128:3;6121:37;6046:118;;:::o;6170:222::-;6263:4;6301:2;6290:9;6286:18;6278:26;;6314:71;6382:1;6371:9;6367:17;6358:6;6314:71;:::i;:::-;6170:222;;;;:::o;6398:329::-;6457:6;6506:2;6494:9;6485:7;6481:23;6477:32;6474:119;;;6512:79;;:::i;:::-;6474:119;6632:1;6657:53;6702:7;6693:6;6682:9;6678:22;6657:53;:::i;:::-;6647:63;;6603:117;6398:329;;;;:::o;6733:118::-;6804:22;6820:5;6804:22;:::i;:::-;6797:5;6794:33;6784:61;;6841:1;6838;6831:12;6784:61;6733:118;:::o;6857:135::-;6901:5;6939:6;6926:20;6917:29;;6955:31;6980:5;6955:31;:::i;:::-;6857:135;;;;:::o;6998:749::-;7076:6;7084;7092;7100;7149:3;7137:9;7128:7;7124:23;7120:33;7117:120;;;7156:79;;:::i;:::-;7117:120;7276:1;7301:51;7344:7;7335:6;7324:9;7320:22;7301:51;:::i;:::-;7291:61;;7247:115;7401:2;7427:51;7470:7;7461:6;7450:9;7446:22;7427:51;:::i;:::-;7417:61;;7372:116;7527:2;7553:51;7596:7;7587:6;7576:9;7572:22;7553:51;:::i;:::-;7543:61;;7498:116;7653:2;7679:51;7722:7;7713:6;7702:9;7698:22;7679:51;:::i;:::-;7669:61;;7624:116;6998:749;;;;;;;:::o;7753:104::-;7798:7;7827:24;7845:5;7827:24;:::i;:::-;7816:35;;7753:104;;;:::o;7863:138::-;7944:32;7970:5;7944:32;:::i;:::-;7937:5;7934:43;7924:71;;7991:1;7988;7981:12;7924:71;7863:138;:::o;8007:155::-;8061:5;8099:6;8086:20;8077:29;;8115:41;8150:5;8115:41;:::i;:::-;8007:155;;;;:::o;8168:345::-;8235:6;8284:2;8272:9;8263:7;8259:23;8255:32;8252:119;;;8290:79;;:::i;:::-;8252:119;8410:1;8435:61;8488:7;8479:6;8468:9;8464:22;8435:61;:::i;:::-;8425:71;;8381:125;8168:345;;;;:::o;8519:474::-;8587:6;8595;8644:2;8632:9;8623:7;8619:23;8615:32;8612:119;;;8650:79;;:::i;:::-;8612:119;8770:1;8795:53;8840:7;8831:6;8820:9;8816:22;8795:53;:::i;:::-;8785:63;;8741:117;8897:2;8923:53;8968:7;8959:6;8948:9;8944:22;8923:53;:::i;:::-;8913:63;;8868:118;8519:474;;;;;:::o;8999:180::-;9047:77;9044:1;9037:88;9144:4;9141:1;9134:15;9168:4;9165:1;9158:15;9185:320;9229:6;9266:1;9260:4;9256:12;9246:22;;9313:1;9307:4;9303:12;9334:18;9324:81;;9390:4;9382:6;9378:17;9368:27;;9324:81;9452:2;9444:6;9441:14;9421:18;9418:38;9415:84;;9471:18;;:::i;:::-;9415:84;9236:269;9185:320;;;:::o;9511:182::-;9651:34;9647:1;9639:6;9635:14;9628:58;9511:182;:::o;9699:366::-;9841:3;9862:67;9926:2;9921:3;9862:67;:::i;:::-;9855:74;;9938:93;10027:3;9938:93;:::i;:::-;10056:2;10051:3;10047:12;10040:19;;9699:366;;;:::o;10071:419::-;10237:4;10275:2;10264:9;10260:18;10252:26;;10324:9;10318:4;10314:20;10310:1;10299:9;10295:17;10288:47;10352:131;10478:4;10352:131;:::i;:::-;10344:139;;10071:419;;;:::o;10496:238::-;10636:34;10632:1;10624:6;10620:14;10613:58;10705:21;10700:2;10692:6;10688:15;10681:46;10496:238;:::o;10740:366::-;10882:3;10903:67;10967:2;10962:3;10903:67;:::i;:::-;10896:74;;10979:93;11068:3;10979:93;:::i;:::-;11097:2;11092:3;11088:12;11081:19;;10740:366;;;:::o;11112:419::-;11278:4;11316:2;11305:9;11301:18;11293:26;;11365:9;11359:4;11355:20;11351:1;11340:9;11336:17;11329:47;11393:131;11519:4;11393:131;:::i;:::-;11385:139;;11112:419;;;:::o;11537:174::-;11677:26;11673:1;11665:6;11661:14;11654:50;11537:174;:::o;11717:366::-;11859:3;11880:67;11944:2;11939:3;11880:67;:::i;:::-;11873:74;;11956:93;12045:3;11956:93;:::i;:::-;12074:2;12069:3;12065:12;12058:19;;11717:366;;;:::o;12089:419::-;12255:4;12293:2;12282:9;12278:18;12270:26;;12342:9;12336:4;12332:20;12328:1;12317:9;12313:17;12306:47;12370:131;12496:4;12370:131;:::i;:::-;12362:139;;12089:419;;;:::o;12514:223::-;12654:34;12650:1;12642:6;12638:14;12631:58;12723:6;12718:2;12710:6;12706:15;12699:31;12514:223;:::o;12743:366::-;12885:3;12906:67;12970:2;12965:3;12906:67;:::i;:::-;12899:74;;12982:93;13071:3;12982:93;:::i;:::-;13100:2;13095:3;13091:12;13084:19;;12743:366;;;:::o;13115:419::-;13281:4;13319:2;13308:9;13304:18;13296:26;;13368:9;13362:4;13358:20;13354:1;13343:9;13339:17;13332:47;13396:131;13522:4;13396:131;:::i;:::-;13388:139;;13115:419;;;:::o;13540:221::-;13680:34;13676:1;13668:6;13664:14;13657:58;13749:4;13744:2;13736:6;13732:15;13725:29;13540:221;:::o;13767:366::-;13909:3;13930:67;13994:2;13989:3;13930:67;:::i;:::-;13923:74;;14006:93;14095:3;14006:93;:::i;:::-;14124:2;14119:3;14115:12;14108:19;;13767:366;;;:::o;14139:419::-;14305:4;14343:2;14332:9;14328:18;14320:26;;14392:9;14386:4;14382:20;14378:1;14367:9;14363:17;14356:47;14420:131;14546:4;14420:131;:::i;:::-;14412:139;;14139:419;;;:::o;14564:224::-;14704:34;14700:1;14692:6;14688:14;14681:58;14773:7;14768:2;14760:6;14756:15;14749:32;14564:224;:::o;14794:366::-;14936:3;14957:67;15021:2;15016:3;14957:67;:::i;:::-;14950:74;;15033:93;15122:3;15033:93;:::i;:::-;15151:2;15146:3;15142:12;15135:19;;14794:366;;;:::o;15166:419::-;15332:4;15370:2;15359:9;15355:18;15347:26;;15419:9;15413:4;15409:20;15405:1;15394:9;15390:17;15383:47;15447:131;15573:4;15447:131;:::i;:::-;15439:139;;15166:419;;;:::o;15591:222::-;15731:34;15727:1;15719:6;15715:14;15708:58;15800:5;15795:2;15787:6;15783:15;15776:30;15591:222;:::o;15819:366::-;15961:3;15982:67;16046:2;16041:3;15982:67;:::i;:::-;15975:74;;16058:93;16147:3;16058:93;:::i;:::-;16176:2;16171:3;16167:12;16160:19;;15819:366;;;:::o;16191:419::-;16357:4;16395:2;16384:9;16380:18;16372:26;;16444:9;16438:4;16434:20;16430:1;16419:9;16415:17;16408:47;16472:131;16598:4;16472:131;:::i;:::-;16464:139;;16191:419;;;:::o;16616:228::-;16756:34;16752:1;16744:6;16740:14;16733:58;16825:11;16820:2;16812:6;16808:15;16801:36;16616:228;:::o;16850:366::-;16992:3;17013:67;17077:2;17072:3;17013:67;:::i;:::-;17006:74;;17089:93;17178:3;17089:93;:::i;:::-;17207:2;17202:3;17198:12;17191:19;;16850:366;;;:::o;17222:419::-;17388:4;17426:2;17415:9;17411:18;17403:26;;17475:9;17469:4;17465:20;17461:1;17450:9;17446:17;17439:47;17503:131;17629:4;17503:131;:::i;:::-;17495:139;;17222:419;;;:::o;17647:174::-;17787:26;17783:1;17775:6;17771:14;17764:50;17647:174;:::o;17827:366::-;17969:3;17990:67;18054:2;18049:3;17990:67;:::i;:::-;17983:74;;18066:93;18155:3;18066:93;:::i;:::-;18184:2;18179:3;18175:12;18168:19;;17827:366;;;:::o;18199:419::-;18365:4;18403:2;18392:9;18388:18;18380:26;;18452:9;18446:4;18442:20;18438:1;18427:9;18423:17;18416:47;18480:131;18606:4;18480:131;:::i;:::-;18472:139;;18199:419;;;:::o;18624:227::-;18764:34;18760:1;18752:6;18748:14;18741:58;18833:10;18828:2;18820:6;18816:15;18809:35;18624:227;:::o;18857:366::-;18999:3;19020:67;19084:2;19079:3;19020:67;:::i;:::-;19013:74;;19096:93;19185:3;19096:93;:::i;:::-;19214:2;19209:3;19205:12;19198:19;;18857:366;;;:::o;19229:419::-;19395:4;19433:2;19422:9;19418:18;19410:26;;19482:9;19476:4;19472:20;19468:1;19457:9;19453:17;19446:47;19510:131;19636:4;19510:131;:::i;:::-;19502:139;;19229:419;;;:::o;19654:180::-;19702:77;19699:1;19692:88;19799:4;19796:1;19789:15;19823:4;19820:1;19813:15;19840:191;19880:3;19899:20;19917:1;19899:20;:::i;:::-;19894:25;;19933:20;19951:1;19933:20;:::i;:::-;19928:25;;19976:1;19973;19969:9;19962:16;;19997:3;19994:1;19991:10;19988:36;;;20004:18;;:::i;:::-;19988:36;19840:191;;;;:::o;20037:221::-;20177:34;20173:1;20165:6;20161:14;20154:58;20246:4;20241:2;20233:6;20229:15;20222:29;20037:221;:::o;20264:366::-;20406:3;20427:67;20491:2;20486:3;20427:67;:::i;:::-;20420:74;;20503:93;20592:3;20503:93;:::i;:::-;20621:2;20616:3;20612:12;20605:19;;20264:366;;;:::o;20636:419::-;20802:4;20840:2;20829:9;20825:18;20817:26;;20889:9;20883:4;20879:20;20875:1;20864:9;20860:17;20853:47;20917:131;21043:4;20917:131;:::i;:::-;20909:139;;20636:419;;;:::o;21061:194::-;21101:4;21121:20;21139:1;21121:20;:::i;:::-;21116:25;;21155:20;21173:1;21155:20;:::i;:::-;21150:25;;21199:1;21196;21192:9;21184:17;;21223:1;21217:4;21214:11;21211:37;;;21228:18;;:::i;:::-;21211:37;21061:194;;;;:::o;21261:188::-;21299:3;21318:18;21334:1;21318:18;:::i;:::-;21313:23;;21350:18;21366:1;21350:18;:::i;:::-;21345:23;;21391:1;21388;21384:9;21377:16;;21414:4;21409:3;21406:13;21403:39;;;21422:18;;:::i;:::-;21403:39;21261:188;;;;:::o;21455:271::-;21493:7;21516:18;21532:1;21516:18;:::i;:::-;21511:23;;21548:18;21564:1;21548:18;:::i;:::-;21543:23;;21601:1;21598;21594:9;21623:28;21639:11;21623:28;:::i;:::-;21612:39;;21683:11;21674:7;21671:24;21661:58;;21699:18;;:::i;:::-;21661:58;21501:225;21455:271;;;;:::o;21732:410::-;21772:7;21795:20;21813:1;21795:20;:::i;:::-;21790:25;;21829:20;21847:1;21829:20;:::i;:::-;21824:25;;21884:1;21881;21877:9;21906:30;21924:11;21906:30;:::i;:::-;21895:41;;22085:1;22076:7;22072:15;22069:1;22066:22;22046:1;22039:9;22019:83;21996:139;;22115:18;;:::i;:::-;21996:139;21780:362;21732:410;;;;:::o;22148:180::-;22196:77;22193:1;22186:88;22293:4;22290:1;22283:15;22317:4;22314:1;22307:15;22334:185;22374:1;22391:20;22409:1;22391:20;:::i;:::-;22386:25;;22425:20;22443:1;22425:20;:::i;:::-;22420:25;;22464:1;22454:35;;22469:18;;:::i;:::-;22454:35;22511:1;22508;22504:9;22499:14;;22334:185;;;;:::o;22525:180::-;22573:77;22570:1;22563:88;22670:4;22667:1;22660:15;22694:4;22691:1;22684:15;22711:180;22759:77;22756:1;22749:88;22856:4;22853:1;22846:15;22880:4;22877:1;22870:15;22897:143;22954:5;22985:6;22979:13;22970:22;;23001:33;23028:5;23001:33;:::i;:::-;22897:143;;;;:::o;23046:351::-;23116:6;23165:2;23153:9;23144:7;23140:23;23136:32;23133:119;;;23171:79;;:::i;:::-;23133:119;23291:1;23316:64;23372:7;23363:6;23352:9;23348:22;23316:64;:::i;:::-;23306:74;;23262:128;23046:351;;;;:::o;23403:85::-;23448:7;23477:5;23466:16;;23403:85;;;:::o;23494:158::-;23552:9;23585:61;23603:42;23612:32;23638:5;23612:32;:::i;:::-;23603:42;:::i;:::-;23585:61;:::i;:::-;23572:74;;23494:158;;;:::o;23658:147::-;23753:45;23792:5;23753:45;:::i;:::-;23748:3;23741:58;23658:147;;:::o;23811:114::-;23878:6;23912:5;23906:12;23896:22;;23811:114;;;:::o;23931:184::-;24030:11;24064:6;24059:3;24052:19;24104:4;24099:3;24095:14;24080:29;;23931:184;;;;:::o;24121:132::-;24188:4;24211:3;24203:11;;24241:4;24236:3;24232:14;24224:22;;24121:132;;;:::o;24259:108::-;24336:24;24354:5;24336:24;:::i;:::-;24331:3;24324:37;24259:108;;:::o;24373:179::-;24442:10;24463:46;24505:3;24497:6;24463:46;:::i;:::-;24541:4;24536:3;24532:14;24518:28;;24373:179;;;;:::o;24558:113::-;24628:4;24660;24655:3;24651:14;24643:22;;24558:113;;;:::o;24707:732::-;24826:3;24855:54;24903:5;24855:54;:::i;:::-;24925:86;25004:6;24999:3;24925:86;:::i;:::-;24918:93;;25035:56;25085:5;25035:56;:::i;:::-;25114:7;25145:1;25130:284;25155:6;25152:1;25149:13;25130:284;;;25231:6;25225:13;25258:63;25317:3;25302:13;25258:63;:::i;:::-;25251:70;;25344:60;25397:6;25344:60;:::i;:::-;25334:70;;25190:224;25177:1;25174;25170:9;25165:14;;25130:284;;;25134:14;25430:3;25423:10;;24831:608;;;24707:732;;;;:::o;25445:831::-;25708:4;25746:3;25735:9;25731:19;25723:27;;25760:71;25828:1;25817:9;25813:17;25804:6;25760:71;:::i;:::-;25841:80;25917:2;25906:9;25902:18;25893:6;25841:80;:::i;:::-;25968:9;25962:4;25958:20;25953:2;25942:9;25938:18;25931:48;25996:108;26099:4;26090:6;25996:108;:::i;:::-;25988:116;;26114:72;26182:2;26171:9;26167:18;26158:6;26114:72;:::i;:::-;26196:73;26264:3;26253:9;26249:19;26240:6;26196:73;:::i;:::-;25445:831;;;;;;;;:::o;26282:807::-;26531:4;26569:3;26558:9;26554:19;26546:27;;26583:71;26651:1;26640:9;26636:17;26627:6;26583:71;:::i;:::-;26664:72;26732:2;26721:9;26717:18;26708:6;26664:72;:::i;:::-;26746:80;26822:2;26811:9;26807:18;26798:6;26746:80;:::i;:::-;26836;26912:2;26901:9;26897:18;26888:6;26836:80;:::i;:::-;26926:73;26994:3;26983:9;26979:19;26970:6;26926:73;:::i;:::-;27009;27077:3;27066:9;27062:19;27053:6;27009:73;:::i;:::-;26282:807;;;;;;;;;:::o;27095:143::-;27152:5;27183:6;27177:13;27168:22;;27199:33;27226:5;27199:33;:::i;:::-;27095:143;;;;:::o;27244:663::-;27332:6;27340;27348;27397:2;27385:9;27376:7;27372:23;27368:32;27365:119;;;27403:79;;:::i;:::-;27365:119;27523:1;27548:64;27604:7;27595:6;27584:9;27580:22;27548:64;:::i;:::-;27538:74;;27494:128;27661:2;27687:64;27743:7;27734:6;27723:9;27719:22;27687:64;:::i;:::-;27677:74;;27632:129;27800:2;27826:64;27882:7;27873:6;27862:9;27858:22;27826:64;:::i;:::-;27816:74;;27771:129;27244:663;;;;;:::o;27913:177::-;28053:29;28049:1;28041:6;28037:14;28030:53;27913:177;:::o;28096:366::-;28238:3;28259:67;28323:2;28318:3;28259:67;:::i;:::-;28252:74;;28335:93;28424:3;28335:93;:::i;:::-;28453:2;28448:3;28444:12;28437:19;;28096:366;;;:::o;28468:419::-;28634:4;28672:2;28661:9;28657:18;28649:26;;28721:9;28715:4;28711:20;28707:1;28696:9;28692:17;28685:47;28749:131;28875:4;28749:131;:::i;:::-;28741:139;;28468:419;;;:::o;28893:220::-;29033:34;29029:1;29021:6;29017:14;29010:58;29102:3;29097:2;29089:6;29085:15;29078:28;28893:220;:::o;29119:366::-;29261:3;29282:67;29346:2;29341:3;29282:67;:::i;:::-;29275:74;;29358:93;29447:3;29358:93;:::i;:::-;29476:2;29471:3;29467:12;29460:19;;29119:366;;;:::o;29491:419::-;29657:4;29695:2;29684:9;29680:18;29672:26;;29744:9;29738:4;29734:20;29730:1;29719:9;29715:17;29708:47;29772:131;29898:4;29772:131;:::i;:::-;29764:139;;29491:419;;;:::o

Swarm Source

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