ETH Price: $2,650.58 (+0.54%)

Token

Gyarados Inu (GYINU)
 

Overview

Max Total Supply

1,000,000,000,000 GYINU

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
578,890,669.58536276848750005 GYINU

Value
$0.00
0x715152E42fF6a96b6Ad0E4d4a6eF39E0C6F2B978
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:
GyaradosInu

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-26
*/

pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;
/**
Gyarados Inu ($GYINU)

Site:
https://gyaradosinu.com/

Telegram:
http://t.me/gyinu

Twitter:
https://mobile.twitter.com/GYINUERC

*/
// SPDX-License-Identifier:MIT

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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
 
    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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        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) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        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");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
 
contract Ownable is Context {
    address payable private _owner;
    address payable private _previousOwner;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor () {
        _owner = payable(msg.sender);
        emit OwnershipTransferred(address(0), _owner);
    }
 
    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 = payable(address(0));
    }
 
    function transferOwnership(address payable newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = payable(address(0));
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until defined days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
        _previousOwner = payable(address(0));
    }
}

interface IPancakeFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IPancakePair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IPancakeRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Factory is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniSwapRouter.WETH();

        // make the swap
        uniSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            address(this),
            block.timestamp + 360
        );
    }

    function swapETHForTokens(
        address routerAddress,
        address recipient,
        uint256 ethAmount
    ) internal {
        IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniSwapRouter.WETH();
        path[1] = address(this);

        // make the swap
        uniSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of BNB
            path,
            address(recipient),
            block.timestamp + 360
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress);

        // add the liquidity
        uniSwapRouter.addLiquidityETH{value : ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp + 360
        );
    }
}
 
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }
 
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    modifier isHuman() {
        require(tx.origin == msg.sender, "sorry humans only");
        _;
    }
}
contract GyaradosInu is Context, IERC20, Ownable, ReentrancyGuard {
    using SafeMath for uint256;
    using Address for address;

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

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) private _isExcludedFromMaxTx;
    mapping(address => bool) public _isSniper;

    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000 *1e9 * 1e18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public _startingTimeOfAntiWhale; // can be set only once
    uint256 public _startingTimeOfbuy; // can be set only once
    uint256 public antiSnipingTime = 60 seconds;

    string private _name = "Gyarados Inu";
    string private _symbol = "GYINU";
    uint8 private _decimals = 18;

    IUniswapV2Factory public uniSwapRouter;
    address public immutable uniSwapPair;
    address payable public marketWallet;
    
    

    uint256 public _maxTxAmount = _tTotal.mul(100).div(100); // should be 1% percent per transaction
    uint256 minTokenNumberToSell = _tTotal.div(1000000); // 0.00001%  amount will trigger swap and add liquidity

    bool public swapAndLiquifyEnabled = false; // should be true to turn on to liquidate the pool
    bool public reflectionFeesdiabled = false; // should be false to charge fee
    bool inSwapAndLiquify = false;
    bool public _antiwhale; //once switched on, can never be switched off.
    bool public _buyingOpen; //once switched on, can never be switched off.

    uint256 public _holderDistributionFee = 10; // 2% will be distributed among holder as token divideneds
    uint256 private _previousHolderDistributionFee= _holderDistributionFee;

    uint256 public _liquidityFee = 30; // 3% will be added to the liquidity pool
    uint256 private _previousLiquidityFee = _liquidityFee;
    
    
    uint256 public _marketFee = 60;  // 5% will go to the market address 
    uint256 private _previousMarketFee = _marketFee;

    // uint256 public marketPercentage = 770;
    // uint256 public poolPercentage = 230;
 

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify( uint256 tokensSwapped,  uint256 ethReceived, uint256 tokensIntoLiqudity );
    event ClaimBNBSuccessfully(address recipient, uint256 ethReceived, uint256 nextAvailableClaimDate);
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor (address payable _marketWallet) {
        _rOwned[owner()] = _rTotal;
         marketWallet = _marketWallet;
     

        IUniswapV2Factory _uniSwapRouter = IUniswapV2Factory(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //uinswap router
           // 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3  //pancakeswap testnet router
            );
        // Create a pancake pair for this new token
        uniSwapPair = IPancakeFactory(_uniSwapRouter.factory())
        .createPair(address(this), _uniSwapRouter.WETH());

        // set the rest of the contract variables
        uniSwapRouter = _uniSwapRouter;

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
         


        // exclude from max tx
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[address(this)] = true;
     

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

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_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, "WE: transfer amount exceeds allowance"));
        return true;
    }

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

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        uint256 rAmount = tAmount.mul(_getRate());
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function AntiWhale() external onlyOwner {
        require(!_antiwhale, "WE: Already enabled");
        _antiwhale = true;
        _startingTimeOfAntiWhale = block.timestamp;
        
    }

    function startBuying() external onlyOwner {
        require(!_buyingOpen, "WE: Already enabled");
        _buyingOpen = true;
        _startingTimeOfbuy = block.timestamp;
        swapAndLiquifyEnabled = true;
        
    }
    
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            uint256 rAmount = tAmount.mul(_getRate());
            return rAmount;
        } else {
            uint256 rAmount = tAmount.mul(_getRate());
            uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(_getRate()));
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _rOwned[account] = _tOwned[account].mul(_getRate());
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function addSniperInList(address _account) external onlyOwner {
        require(
            _account != address(uniSwapRouter),
            "WE: We can not blacklist uniSwapRouter"
        );
        require(!_isSniper[_account], "WE: sniper already exist");
        _isSniper[_account] = true;
    }

    function removeSniperFromList(address _account) external onlyOwner {
        require(_isSniper[_account], "WE: Not a sniper");
        _isSniper[_account] = false;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    // for 1% input 1
    function setMaxTxPercent(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal.mul(maxTxAmount).div(100);
    }
    
    function setMinTokenNumberToSell(uint256 _amount) public onlyOwner {
        minTokenNumberToSell = _amount;
    }

    function setExcludeFromMaxTx(address _address, bool value) public onlyOwner {
        _isExcludedFromMaxTx[_address] = value;
    }

    function setHolderDistributionFeePercent(uint256 holderFee) external onlyOwner {
        _holderDistributionFee = holderFee;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner {
        _liquidityFee = liquidityFee;
    }
    
    function setMarketFeePercent(uint256 marketFee) external onlyOwner {
        _marketFee = marketFee;
    }
    
    function setSwapAndLiquifyEnabled(bool _state) public onlyOwner {
        swapAndLiquifyEnabled = _state;
        emit SwapAndLiquifyEnabledUpdated(_state);
    }

    function setReflectionFees(bool _state) external onlyOwner {
        reflectionFeesdiabled = _state;
    }
    
    function setMarketAddress(address payable _marketAddress) external onlyOwner {
        marketWallet = _marketAddress;
    }
    
    function setPancakeRouter(IUniswapV2Factory _uniSwapRouter) external onlyOwner {
        uniSwapRouter = _uniSwapRouter;
    }

    function setTimeForSniping(uint256 _time) external onlyOwner {
        antiSnipingTime = _time;
    }

    //to receive BNB from uniSwapRouter when swapping
    receive() external payable {}
    
    function totalFeePerTx(uint256 tAmount) internal view returns(uint256) {
        uint256 percentage = tAmount.mul(_holderDistributionFee.add(_liquidityFee).add(_marketFee)).div(1e3);
        return percentage;
    }

    function _reflectFee(uint256 tAmount) private {
        uint256 tFee = tAmount.mul(_holderDistributionFee).div(1e3);
        uint256 rFee = tFee.mul(_getRate());
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidityPoolFee(uint256 tAmount, uint256 currentRate) internal {
        uint256 tPoolFee = tAmount.mul(_liquidityFee).div(1e3);
        uint256 rPoolFee = tPoolFee.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rPoolFee);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tPoolFee);
        emit Transfer(_msgSender(), address(this), tPoolFee);
    }
     
    function _takeMarketFee(uint256 tAmount, uint256 currentRate) internal {
        uint256 tMarketFee = tAmount.mul(_marketFee).div(1e3);
        uint256 rMarketFee = tMarketFee.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rMarketFee);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tMarketFee);
        emit Transfer(_msgSender(), address(this), tMarketFee);
    }
    
    function removeAllFee() private {

        _previousHolderDistributionFee = _holderDistributionFee;
        _previousLiquidityFee = _liquidityFee;
        _previousMarketFee = _marketFee;
        

        _holderDistributionFee = 0;
        _liquidityFee = 0;
        _marketFee = 0;
       
    }

    function restoreAllFee() private {
        _holderDistributionFee = _previousHolderDistributionFee;
        _liquidityFee = _previousLiquidityFee;
        _marketFee = _previousMarketFee;
     
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "WE: approve from the zero address");
        require(spender != address(0), "WE: 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), "WE: transfer from the zero address");
        require(to != address(0), "WE: transfer to the zero address");
        require(amount > 0, "WE: Transfer amount must be greater than zero");
        require(!_isSniper[to], "WE: Sniper detected");
        require(!_isSniper[from], "WE: Sniper detected");


        if(_isExcludedFromMaxTx[from] == false && 
            _isExcludedFromMaxTx[to] == false   // by default false
        ){
            require(amount <= _maxTxAmount,"amount exceed max limit");
             if (!_antiwhale) {
                require(
                    to !=  uniSwapPair,
                    "WE: antiwhale is not enabled yet"
                );
            }

            if (!_buyingOpen) {
                require(
                    from !=  uniSwapPair,
                    "WE: Buying is not enabled yet"
                );
            }

            if (
                block.timestamp < _startingTimeOfbuy + antiSnipingTime &&
                from != address(uniSwapRouter)
            ) {
                if (from ==  uniSwapPair) {
                    _isSniper[to] = true;
                } else if (to ==  uniSwapPair) {
                    _isSniper[from] = true;
                }
            }
        }

        // swap and liquify
        swapAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || reflectionFeesdiabled) {
            takeFee = false;
        }
         if (to != uniSwapPair && from != uniSwapPair){

             takeFee = false;
         }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidityPoolFee(tAmount, currentRate);
        _takeMarketFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function swapAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is pancake pair.
        uint256 contractTokenBalance = balanceOf(address(this));

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

        bool shouldSell = contractTokenBalance >= minTokenNumberToSell;

        if (
            !inSwapAndLiquify &&
            shouldSell &&
            from != uniSwapPair &&
            swapAndLiquifyEnabled &&
            !(from == address(this) && to == address(uniSwapPair)) // swap 1 time
        ) {

                contractTokenBalance = minTokenNumberToSell;
             
            
                uint256 totalPercent = _liquidityFee
                .add(_marketFee);
            uint256 lpPercent = (_liquidityFee)
                .mul(1e4)
                .div(totalPercent)
                .div(2);
            uint256 mPercent = _marketFee.mul(1e4).div(totalPercent);
          
            // approve contract
            _approve(address(this), address(uniSwapRouter), contractTokenBalance);
            
            // add liquidity
            // split the contract balance into 2 pieces
            
            uint256 otherPiece = contractTokenBalance.mul(lpPercent).div(1e4);
            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherPiece
            );
    
            
           
            Utils.swapTokensForEth(
                address(uniSwapRouter),
                tokenAmountToBeSwapped
            );
 
            uint256 deltaBalance = address(this).balance;

            totalPercent = lpPercent.add(mPercent);

            uint256 EthToBeAddedToLiquidity = deltaBalance.mul(lpPercent).div(
                totalPercent
            );

            // add liquidity to pancake
            Utils.addLiquidity(
                address(uniSwapRouter),
                owner(),
                otherPiece,
                EthToBeAddedToLiquidity
            );

            marketWallet.transfer(
                deltaBalance.mul(mPercent).div(totalPercent)
            );
          
 
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_marketWallet","type":"address"}],"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimBNBSuccessfully","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":"AntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_antiwhale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_holderDistributionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startingTimeOfAntiWhale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startingTimeOfbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addSniperInList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeSniperFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"holderFee","type":"uint256"}],"name":"setHolderDistributionFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketAddress","type":"address"}],"name":"setMarketAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketFee","type":"uint256"}],"name":"setMarketFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenNumberToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Factory","name":"_uniSwapRouter","type":"address"}],"name":"setPancakeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setReflectionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setTimeForSniping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBuying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniSwapRouter","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526c0c9f2c9cd04674edea40000000600c8190556200002590600019620007af565b620000339060001962000758565b600d55603c60115560408051808201909152600c8082526b4779617261646f7320496e7560a01b60209092019182526200007091601291620005a0565b50604080518082019091526005808252644759494e5560d81b60209092019182526200009f91601391620005a0565b5060148054601260ff19909116179055600c54620000e690606490620000d29082620004ab602090811b62001b0917901c565b6200050b60201b62001b551790919060201c565b60165562000108620f4240600c546200050b60201b62001b551790919060201c565b6017556018805462ffffff19169055600a6019819055601a55601e601b819055601c819055603c601d81905590553480156200014357600080fd5b5060405162003f5838038062003f58833981016040819052620001669162000646565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600355600d5460046000620001c562000555565b6001600160a01b039081168252602080830193909352604091820160002093909355601580546001600160a01b03191693851693909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200024657600080fd5b505afa1580156200025b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000281919062000646565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ca57600080fd5b505afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000305919062000646565b6040518363ffffffff1660e01b81526004016200032492919062000665565b602060405180830381600087803b1580156200033f57600080fd5b505af115801562000354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037a919062000646565b60601b6001600160601b03191660805260148054610100600160a81b0319166101006001600160a01b03841602179055600160076000620003ba62000555565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260079092528120805490921660019081179092556009906200040a62000555565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260099092529020805490911660011790556200045462000555565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200049b919062000716565b60405180910390a350506200080b565b600082620004bc5750600062000505565b6000620004ca838562000736565b905082620004d985836200071f565b14620005025760405162461bcd60e51b8152600401620004f990620006d5565b60405180910390fd5b90505b92915050565b60006200050283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200056460201b60201c565b6000546001600160a01b031690565b60008183620005885760405162461bcd60e51b8152600401620004f991906200067f565b5060006200059784866200071f565b95945050505050565b828054620005ae9062000772565b90600052602060002090601f016020900481019282620005d257600085556200061d565b82601f10620005ed57805160ff19168380011785556200061d565b828001600101855582156200061d579182015b828111156200061d57825182559160200191906001019062000600565b506200062b9291506200062f565b5090565b5b808211156200062b576000815560010162000630565b60006020828403121562000658578081fd5b81516200050281620007f2565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b81811015620006ad578581018301518582016040015282016200068f565b81811115620006bf5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b600082620007315762000731620007dc565b500490565b6000816000190483118215151615620007535762000753620007c6565b500290565b6000828210156200076d576200076d620007c6565b500390565b6002810460018216806200078757607f821691505b60208210811415620007a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082620007c157620007c1620007dc565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03811681146200080857600080fd5b50565b60805160601c6136f6620008626000396000818161179901528181611da901528181611e0d01528181611e9501528181611ef701528181611fbc01528181611ff9015281816121bd015261221c01526136f66000f3fe60806040526004361061037a5760003560e01c806370a08231116101d1578063c49b9a8011610102578063dd7bd775116100a0578063f8316c901161006f578063f8316c901461096a578063fa58fc2d1461098a578063fae92612146109aa578063fc6f4cbb146109ca57610381565b8063dd7bd775146108f5578063e4440a8614610915578063ea2f0b371461092a578063f2fde38b1461094a57610381565b8063d543dbeb116100dc578063d543dbeb14610880578063d837df05146108a0578063dd467064146108b5578063dd62ed3e146108d557610381565b8063c49b9a8014610836578063c7d5b8ed14610856578063d26162341461086b57610381565b806395d89b411161016f578063a69df4b511610149578063a69df4b5146107d7578063a9059cbb146107ec578063b6c523241461080c578063c04bd6e01461082157610381565b806395d89b41146107825780639cb1258214610797578063a457c2d7146107b757610381565b806384d6ff2f116101ab57806384d6ff2f1461071857806388f820201461072d5780638da5cb5b1461074d5780638ee88c531461076257610381565b806370a08231146106ce578063715018a6146106ee5780637d1db4a51461070357610381565b80633fd149d6116102ab5780635342acb4116102495780636394236911610223578063639423691461066f57806365d60e56146106845780636adeb40d146106a45780636bc87c3a146106b957610381565b80635342acb41461060d5780635b89029c1461062d5780635d01ff3d1461064d57610381565b80634a74bb02116102855780634a74bb02146105a35780634bcc2616146105b85780634ce4898f146105d857806352390c02146105ed57610381565b80633fd149d61461054e578063437823ec146105635780634549b0391461058357610381565b8063313ce5671161031857806339265989116102f257806339265989146104d957806339509351146104f95780633bd5d173146105195780633c8d355f1461053957610381565b8063313ce567146104755780633685d4191461049757806338d6f847146104b957610381565b806318160ddd1161035457806318160ddd146104005780631fca803d1461041557806323b872dd146104355780632d8381191461045557610381565b806306fdde0314610386578063095ea7b3146103b157806313114a9d146103de57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b6109df565b6040516103a89190612f2e565b60405180910390f35b3480156103bd57600080fd5b506103d16103cc366004612e28565b610a71565b6040516103a89190612f23565b3480156103ea57600080fd5b506103f3610a8f565b6040516103a891906134e0565b34801561040c57600080fd5b506103f3610a95565b34801561042157600080fd5b506103d1610430366004612d44565b610a9b565b34801561044157600080fd5b506103d1610450366004612db4565b610ab0565b34801561046157600080fd5b506103f3610470366004612e6d565b610b37565b34801561048157600080fd5b5061048a610b83565b6040516103a89190613559565b3480156104a357600080fd5b506104b76104b2366004612d44565b610b8c565b005b3480156104c557600080fd5b506104b76104d4366004612d44565b610d9e565b3480156104e557600080fd5b506104b76104f4366004612e6d565b610e63565b34801561050557600080fd5b506103d1610514366004612e28565b610e9d565b34801561052557600080fd5b506104b7610534366004612e6d565b610eeb565b34801561054557600080fd5b506103f3610fa9565b34801561055a57600080fd5b506103f3610faf565b34801561056f57600080fd5b506104b761057e366004612d44565b610fb5565b34801561058f57600080fd5b506103f361059e366004612e85565b61100e565b3480156105af57600080fd5b506103d1611093565b3480156105c457600080fd5b506104b76105d3366004612e6d565b61109c565b3480156105e457600080fd5b506103d16110d6565b3480156105f957600080fd5b506104b7610608366004612d44565b6110e6565b34801561061957600080fd5b506103d1610628366004612d44565b611214565b34801561063957600080fd5b506104b7610648366004612df4565b611232565b34801561065957600080fd5b50610662611292565b6040516103a89190612ed4565b34801561067b57600080fd5b506103f36112a6565b34801561069057600080fd5b506104b761069f366004612e53565b6112ac565b3480156106b057600080fd5b506104b76112fb565b3480156106c557600080fd5b506103f3611373565b3480156106da57600080fd5b506103f36106e9366004612d44565b611379565b3480156106fa57600080fd5b506104b76113db565b34801561070f57600080fd5b506103f3611448565b34801561072457600080fd5b506103f361144e565b34801561073957600080fd5b506103d1610748366004612d44565b611454565b34801561075957600080fd5b50610662611472565b34801561076e57600080fd5b506104b761077d366004612e6d565b611481565b34801561078e57600080fd5b5061039b6114bb565b3480156107a357600080fd5b506104b76107b2366004612e6d565b6114ca565b3480156107c357600080fd5b506103d16107d2366004612e28565b611504565b3480156107e357600080fd5b506104b761156c565b3480156107f857600080fd5b506103d1610807366004612e28565b611609565b34801561081857600080fd5b506103f361161d565b34801561082d57600080fd5b506103d1611623565b34801561084257600080fd5b506104b7610851366004612e53565b611634565b34801561086257600080fd5b506104b76116b2565b34801561087757600080fd5b506103f3611736565b34801561088c57600080fd5b506104b761089b366004612e6d565b61173c565b3480156108ac57600080fd5b50610662611797565b3480156108c157600080fd5b506104b76108d0366004612e6d565b6117bb565b3480156108e157600080fd5b506103f36108f0366004612d7c565b61184b565b34801561090157600080fd5b506104b7610910366004612d44565b611876565b34801561092157600080fd5b50610662611904565b34801561093657600080fd5b506104b7610945366004612d44565b611913565b34801561095657600080fd5b506104b7610965366004612d44565b611969565b34801561097657600080fd5b506104b7610985366004612d44565b611a0d565b34801561099657600080fd5b506104b76109a5366004612e6d565b611a6a565b3480156109b657600080fd5b506104b76109c5366004612d44565b611aa4565b3480156109d657600080fd5b506103d1611afb565b6060601280546109ee906135d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a906135d5565b8015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b5050505050905090565b6000610a85610a7e611b97565b8484611b9b565b5060015b92915050565b600e5490565b600c5490565b600a6020526000908152604090205460ff1681565b6000610abd848484611c4f565b610b2d84610ac9611b97565b610b288560405180606001604052806025815260200161365a602591396001600160a01b038a16600090815260066020526040812090610b07611b97565b6001600160a01b031681526020810191909152604001600020549190612049565b611b9b565b5060019392505050565b6000600d54821115610b645760405162461bcd60e51b8152600401610b5b90613043565b60405180910390fd5b6000610b6e612083565b9050610b7a8382611b55565b9150505b919050565b60145460ff1690565b610b94611b97565b6000546001600160a01b03908116911614610bc15760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03811660009081526008602052604090205460ff16610bf95760405162461bcd60e51b8152600401610b5b9061310a565b60005b600b54811015610d9a57816001600160a01b0316600b8281548110610c3157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610d8857600b8054610c5c906001906135be565b81548110610c7a57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600b80546001600160a01b039092169183908110610cb457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610d0c610ced612083565b6001600160a01b03841660009081526005602052604090205490611b09565b6001600160a01b038316600090815260046020908152604080832093909355600581528282208290556008905220805460ff19169055600b805480610d6157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610d9a565b80610d9281613610565b915050610bfc565b5050565b610da6611b97565b6000546001600160a01b03908116911614610dd35760405162461bcd60e51b8152600401610b5b906132eb565b6014546001600160a01b03828116610100909204161415610e065760405162461bcd60e51b8152600401610b5b90612f81565b6001600160a01b0381166000908152600a602052604090205460ff1615610e3f5760405162461bcd60e51b8152600401610b5b90613398565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b610e6b611b97565b6000546001600160a01b03908116911614610e985760405162461bcd60e51b8152600401610b5b906132eb565b601d55565b6000610a85610eaa611b97565b84610b288560066000610ebb611b97565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906120a6565b6000610ef5611b97565b6001600160a01b03811660009081526008602052604090205490915060ff1615610f315760405162461bcd60e51b8152600401610b5b906133cf565b6000610f45610f3e612083565b8490611b09565b6001600160a01b038316600090815260046020526040902054909150610f6b90826120d5565b6001600160a01b038316600090815260046020526040902055600d54610f9190826120d5565b600d55600e54610fa190846120a6565b600e55505050565b60115481565b60105481565b610fbd611b97565b6000546001600160a01b03908116911614610fea5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600c548311156110325760405162461bcd60e51b8152600401610b5b906131fc565b8161105457600061104b611044612083565b8590611b09565b9150610a899050565b6000611061611044612083565b90506000611089611082611073612083565b61107c88612117565b90611b09565b83906120d5565b9250610a89915050565b60185460ff1681565b6110a4611b97565b6000546001600160a01b039081169116146110d15760405162461bcd60e51b8152600401610b5b906132eb565b601755565b6018546301000000900460ff1681565b6110ee611b97565b6000546001600160a01b0390811691161461111b5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03811660009081526008602052604090205460ff16156111545760405162461bcd60e51b8152600401610b5b9061310a565b6001600160a01b038116600090815260046020526040902054156111ae576001600160a01b03811660009081526004602052604090205461119490610b37565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b61123a611b97565b6000546001600160a01b039081169116146112675760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60145461010090046001600160a01b031681565b60195481565b6112b4611b97565b6000546001600160a01b039081169116146112e15760405162461bcd60e51b8152600401610b5b906132eb565b601880549115156101000261ff0019909216919091179055565b611303611b97565b6000546001600160a01b039081169116146113305760405162461bcd60e51b8152600401610b5b906132eb565b6018546301000000900460ff161561135a5760405162461bcd60e51b8152600401610b5b906131cf565b6018805463ff0000001916630100000017905542600f55565b601b5481565b6001600160a01b03811660009081526008602052604081205460ff16156113b957506001600160a01b038116600090815260056020526040902054610b7e565b6001600160a01b038216600090815260046020526040902054610a8990610b37565b6113e3611b97565b6000546001600160a01b039081169116146114105760405162461bcd60e51b8152600401610b5b906132eb565b600080546040516001600160a01b039091169060008051602061367f833981519152908390a3600080546001600160a01b0319169055565b60165481565b601d5481565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031690565b611489611b97565b6000546001600160a01b039081169116146114b65760405162461bcd60e51b8152600401610b5b906132eb565b601b55565b6060601380546109ee906135d5565b6114d2611b97565b6000546001600160a01b039081169116146114ff5760405162461bcd60e51b8152600401610b5b906132eb565b601955565b6000610a85611511611b97565b84610b288560405180606001604052806022815260200161369f602291396006600061153b611b97565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612049565b6001546001600160a01b031633146115965760405162461bcd60e51b8152600401610b5b9061349d565b60025442116115b75760405162461bcd60e51b8152600401610b5b90612fc7565b600154600080546040516001600160a01b03938416939091169160008051602061367f83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610a85611616611b97565b8484611c4f565b60025490565b601854640100000000900460ff1681565b61163c611b97565b6000546001600160a01b039081169116146116695760405162461bcd60e51b8152600401610b5b906132eb565b6018805460ff19168215151790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906116a7908390612f23565b60405180910390a150565b6116ba611b97565b6000546001600160a01b039081169116146116e75760405162461bcd60e51b8152600401610b5b906132eb565b601854640100000000900460ff16156117125760405162461bcd60e51b8152600401610b5b906131cf565b601880544260105560ff1964ff000000001990911664010000000017166001179055565b600f5481565b611744611b97565b6000546001600160a01b039081169116146117715760405162461bcd60e51b8152600401610b5b906132eb565b611791606461178b83600c54611b0990919063ffffffff16565b90611b55565b60165550565b7f000000000000000000000000000000000000000000000000000000000000000081565b6117c3611b97565b6000546001600160a01b039081169116146117f05760405162461bcd60e51b8152600401610b5b906132eb565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561181f8142613567565b600255600080546040516001600160a01b039091169060008051602061367f833981519152908390a350565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61187e611b97565b6000546001600160a01b039081169116146118ab5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b0381166000908152600a602052604090205460ff166118e35760405162461bcd60e51b8152600401610b5b90613141565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6015546001600160a01b031681565b61191b611b97565b6000546001600160a01b039081169116146119485760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b611971611b97565b6000546001600160a01b0390811691161461199e5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b0381166119c45760405162461bcd60e51b8152600401610b5b9061308d565b600080546040516001600160a01b038085169392169160008051602061367f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611a15611b97565b6000546001600160a01b03908116911614611a425760405162461bcd60e51b8152600401610b5b906132eb565b601480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611a72611b97565b6000546001600160a01b03908116911614611a9f5760405162461bcd60e51b8152600401610b5b906132eb565b601155565b611aac611b97565b6000546001600160a01b03908116911614611ad95760405162461bcd60e51b8152600401610b5b906132eb565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b601854610100900460ff1681565b600082611b1857506000610a89565b6000611b24838561359f565b905082611b31858361357f565b14611b4e5760405162461bcd60e51b8152600401610b5b906132aa565b9392505050565b6000611b4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061214d565b3390565b6001600160a01b038316611bc15760405162461bcd60e51b8152600401610b5b90613320565b6001600160a01b038216611be75760405162461bcd60e51b8152600401610b5b9061300c565b6001600160a01b0380841660008181526006602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611c429085906134e0565b60405180910390a3505050565b6001600160a01b038316611c755760405162461bcd60e51b8152600401610b5b90613268565b6001600160a01b038216611c9b5760405162461bcd60e51b8152600401610b5b9061341b565b60008111611cbb5760405162461bcd60e51b8152600401610b5b90613450565b6001600160a01b0382166000908152600a602052604090205460ff1615611cf45760405162461bcd60e51b8152600401610b5b9061316b565b6001600160a01b0383166000908152600a602052604090205460ff1615611d2d5760405162461bcd60e51b8152600401610b5b9061316b565b6001600160a01b03831660009081526009602052604090205460ff16158015611d6f57506001600160a01b03821660009081526009602052604090205460ff16155b15611f5357601654811115611d965760405162461bcd60e51b8152600401610b5b90613361565b6018546301000000900460ff16611df9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611df95760405162461bcd60e51b8152600401610b5b90613233565b601854640100000000900460ff16611e5d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415611e5d5760405162461bcd60e51b8152600401610b5b90613198565b601154601054611e6d9190613567565b42108015611e8e57506014546001600160a01b038481166101009092041614155b15611f53577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415611ef5576001600160a01b0382166000908152600a60205260409020805460ff19166001179055611f53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611f53576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b611f5d838361217b565b6001600160a01b03831660009081526007602052604090205460019060ff1680611f9f57506001600160a01b03831660009081526007602052604090205460ff165b80611fb15750601854610100900460ff165b15611fba575060005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561202e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b15612037575060005b612043848484846123af565b50505050565b6000818484111561206d5760405162461bcd60e51b8152600401610b5b9190612f2e565b50600061207a84866135be565b95945050505050565b60008060006120906124cb565b909250905061209f8282611b55565b9250505090565b6000806120b38385613567565b905083811015611b4e5760405162461bcd60e51b8152600401610b5b906130d3565b6000611b4e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612049565b600080610b7a6103e861178b612146601d54612140601b546019546120a690919063ffffffff16565b906120a6565b8690611b09565b6000818361216e5760405162461bcd60e51b8152600401610b5b9190612f2e565b50600061207a848661357f565b600061218630611379565b9050601654811061219657506016545b601754601854908210159062010000900460ff161580156121b45750805b80156121f257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015612200575060185460ff165b801561225257506001600160a01b0384163014801561225057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b155b156120435760175491506000612275601d54601b546120a690919063ffffffff16565b90506000612299600261178b8461178b612710601b54611b0990919063ffffffff16565b905060006122b88361178b612710601d54611b0990919063ffffffff16565b90506122da30601460019054906101000a90046001600160a01b031687611b9b565b60006122ec61271061178b8886611b09565b905060006122fa87836120d5565b6014549091506123189061010090046001600160a01b031682612688565b4761232385856120a6565b955060006123358761178b8489611b09565b60145490915061235c9061010090046001600160a01b0316612355611472565b8684612807565b6015546001600160a01b03166108fc6123798961178b868a611b09565b6040518115909202916000818181858888f193505050501580156123a1573d6000803e3d6000fd5b505050505050505050505050565b806123bc576123bc61289d565b6001600160a01b03841660009081526008602052604090205460ff1680156123fd57506001600160a01b03831660009081526008602052604090205460ff16155b156124125761240d8484846128bf565b6124be565b6001600160a01b03841660009081526008602052604090205460ff1615801561245357506001600160a01b03831660009081526008602052604090205460ff165b156124635761240d848484612a10565b6001600160a01b03841660009081526008602052604090205460ff1680156124a357506001600160a01b03831660009081526008602052604090205460ff165b156124b35761240d848484612ad7565b6124be848484612b68565b8061204357612043612bca565b600d54600c546000918291825b600b54811015612656578260046000600b848154811061250857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061258157508160056000600b848154811061255a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561259857600d54600c5494509450505050612684565b6125ec60046000600b84815481106125c057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906120d5565b925061264260056000600b848154811061261657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906120d5565b91508061264e81613610565b9150506124d8565b50600c54600d5461266691611b55565b82101561267e57600d54600c54935093505050612684565b90925090505b9091565b6040805160028082526060820183528492600092919060208301908036833701905050905030816000815181106126cf57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272857600080fd5b505afa15801561273c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127609190612d60565b8160018151811061278157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152821663791ac94784600084306127af42610168613567565b6040518663ffffffff1660e01b81526004016127cf9594939291906134e9565b600060405180830381600087803b1580156127e957600080fd5b505af11580156127fd573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a61282a42610168613567565b6040518863ffffffff1660e01b815260040161284b96959493929190612ee8565b6060604051808303818588803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127fd9190612ea7565b60198054601a55601b8054601c55601d8054601e556000928390559082905555565b60006128c9612083565b905060006128e06128d984612117565b84906120d5565b905060006128ee8484611b09565b905060006129026110828561107c88612117565b6001600160a01b03881660009081526005602052604090205490915061292890866120d5565b6001600160a01b03881660009081526005602090815260408083209390935560049052205461295790836120d5565b6001600160a01b03808916600090815260046020526040808220939093559088168152205461298690826120a6565b6001600160a01b0387166000908152600460205260409020556129a98585612bde565b6129b38585612cc4565b6129bc85612ce1565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129ff91906134e0565b60405180910390a350505050505050565b6000612a1a612083565b90506000612a2a6128d984612117565b90506000612a388484611b09565b90506000612a4c6110828561107c88612117565b6001600160a01b038816600090815260046020526040902054909150612a7290836120d5565b6001600160a01b03808916600090815260046020908152604080832094909455918916815260059091522054612aa890846120a6565b6001600160a01b03871660009081526005602090815260408083209390935560049052205461298690826120a6565b6000612ae1612083565b90506000612af16128d984612117565b90506000612aff8484611b09565b90506000612b136110828561107c88612117565b6001600160a01b038816600090815260056020526040902054909150612b3990866120d5565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612a7290836120d5565b6000612b72612083565b90506000612b826128d984612117565b90506000612b908484611b09565b90506000612ba46110828561107c88612117565b6001600160a01b03881660009081526004602052604090205490915061295790836120d5565b601a54601955601c54601b55601e54601d55565b6000612bfb6103e861178b601b5486611b0990919063ffffffff16565b90506000612c098284611b09565b30600090815260046020526040902054909150612c2690826120a6565b3060009081526004602090815260408083209390935560089052205460ff1615612c755730600090815260056020526040902054612c6490836120a6565b306000908152600560205260409020555b30612c7e611b97565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cb691906134e0565b60405180910390a350505050565b6000612bfb6103e861178b601d5486611b0990919063ffffffff16565b6000612cfe6103e861178b60195485611b0990919063ffffffff16565b90506000612d14612d0d612083565b8390611b09565b600d54909150612d2490826120d5565b600d55600e54610fa190836120a6565b80358015158114610b7e57600080fd5b600060208284031215612d55578081fd5b8135611b4e81613641565b600060208284031215612d71578081fd5b8151611b4e81613641565b60008060408385031215612d8e578081fd5b8235612d9981613641565b91506020830135612da981613641565b809150509250929050565b600080600060608486031215612dc8578081fd5b8335612dd381613641565b92506020840135612de381613641565b929592945050506040919091013590565b60008060408385031215612e06578182fd5b8235612e1181613641565b9150612e1f60208401612d34565b90509250929050565b60008060408385031215612e3a578182fd5b8235612e4581613641565b946020939093013593505050565b600060208284031215612e64578081fd5b611b4e82612d34565b600060208284031215612e7e578081fd5b5035919050565b60008060408385031215612e97578182fd5b82359150612e1f60208401612d34565b600080600060608486031215612ebb578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015612f5a57858101830151858201604001528201612f3e565b81811115612f6b5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f57453a2057652063616e206e6f7420626c61636b6c69737420756e69537761706040820152652937baba32b960d11b606082015260800190565b60208082526025908201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604082015264206461797360d81b606082015260800190565b6020808252601f908201527f57453a20617070726f766520746f20746865207a65726f206164647265737300604082015260600190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b60208082526010908201526f2ba29d102737ba10309039b734b832b960811b604082015260600190565b60208082526013908201527215d14e8814db9a5c195c8819195d1958dd1959606a1b604082015260600190565b6020808252601d908201527f57453a20427579696e67206973206e6f7420656e61626c656420796574000000604082015260600190565b60208082526013908201527215d14e88105b1c9958591e48195b98589b1959606a1b604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b6020808252818101527f57453a20616e74697768616c65206973206e6f7420656e61626c656420796574604082015260600190565b60208082526022908201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f57453a20617070726f76652066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526017908201527f616d6f756e7420657863656564206d6178206c696d6974000000000000000000604082015260600190565b60208082526018908201527f57453a20736e6970657220616c72656164792065786973740000000000000000604082015260600190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b6020808252818101527f57453a207472616e7366657220746f20746865207a65726f2061646472657373604082015260600190565b6020808252602d908201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160408201526c746572207468616e207a65726f60981b606082015260800190565b60208082526023908201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6040820152626f636b60e81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156135385784516001600160a01b031683529383019391830191600101613513565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b6000821982111561357a5761357a61362b565b500190565b60008261359a57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156135b9576135b961362b565b500290565b6000828210156135d0576135d061362b565b500390565b6002810460018216806135e957607f821691505b6020821081141561360a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156136245761362461362b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461365657600080fd5b5056fe57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e057453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205391d39edc7b19977109985ed160e0a5f3e08429f5d3b42b117a2731c983a74764736f6c63430008000033000000000000000000000000b95d46694f445ff3b89ffae43b8d28742bb7bf97

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806370a08231116101d1578063c49b9a8011610102578063dd7bd775116100a0578063f8316c901161006f578063f8316c901461096a578063fa58fc2d1461098a578063fae92612146109aa578063fc6f4cbb146109ca57610381565b8063dd7bd775146108f5578063e4440a8614610915578063ea2f0b371461092a578063f2fde38b1461094a57610381565b8063d543dbeb116100dc578063d543dbeb14610880578063d837df05146108a0578063dd467064146108b5578063dd62ed3e146108d557610381565b8063c49b9a8014610836578063c7d5b8ed14610856578063d26162341461086b57610381565b806395d89b411161016f578063a69df4b511610149578063a69df4b5146107d7578063a9059cbb146107ec578063b6c523241461080c578063c04bd6e01461082157610381565b806395d89b41146107825780639cb1258214610797578063a457c2d7146107b757610381565b806384d6ff2f116101ab57806384d6ff2f1461071857806388f820201461072d5780638da5cb5b1461074d5780638ee88c531461076257610381565b806370a08231146106ce578063715018a6146106ee5780637d1db4a51461070357610381565b80633fd149d6116102ab5780635342acb4116102495780636394236911610223578063639423691461066f57806365d60e56146106845780636adeb40d146106a45780636bc87c3a146106b957610381565b80635342acb41461060d5780635b89029c1461062d5780635d01ff3d1461064d57610381565b80634a74bb02116102855780634a74bb02146105a35780634bcc2616146105b85780634ce4898f146105d857806352390c02146105ed57610381565b80633fd149d61461054e578063437823ec146105635780634549b0391461058357610381565b8063313ce5671161031857806339265989116102f257806339265989146104d957806339509351146104f95780633bd5d173146105195780633c8d355f1461053957610381565b8063313ce567146104755780633685d4191461049757806338d6f847146104b957610381565b806318160ddd1161035457806318160ddd146104005780631fca803d1461041557806323b872dd146104355780632d8381191461045557610381565b806306fdde0314610386578063095ea7b3146103b157806313114a9d146103de57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b6109df565b6040516103a89190612f2e565b60405180910390f35b3480156103bd57600080fd5b506103d16103cc366004612e28565b610a71565b6040516103a89190612f23565b3480156103ea57600080fd5b506103f3610a8f565b6040516103a891906134e0565b34801561040c57600080fd5b506103f3610a95565b34801561042157600080fd5b506103d1610430366004612d44565b610a9b565b34801561044157600080fd5b506103d1610450366004612db4565b610ab0565b34801561046157600080fd5b506103f3610470366004612e6d565b610b37565b34801561048157600080fd5b5061048a610b83565b6040516103a89190613559565b3480156104a357600080fd5b506104b76104b2366004612d44565b610b8c565b005b3480156104c557600080fd5b506104b76104d4366004612d44565b610d9e565b3480156104e557600080fd5b506104b76104f4366004612e6d565b610e63565b34801561050557600080fd5b506103d1610514366004612e28565b610e9d565b34801561052557600080fd5b506104b7610534366004612e6d565b610eeb565b34801561054557600080fd5b506103f3610fa9565b34801561055a57600080fd5b506103f3610faf565b34801561056f57600080fd5b506104b761057e366004612d44565b610fb5565b34801561058f57600080fd5b506103f361059e366004612e85565b61100e565b3480156105af57600080fd5b506103d1611093565b3480156105c457600080fd5b506104b76105d3366004612e6d565b61109c565b3480156105e457600080fd5b506103d16110d6565b3480156105f957600080fd5b506104b7610608366004612d44565b6110e6565b34801561061957600080fd5b506103d1610628366004612d44565b611214565b34801561063957600080fd5b506104b7610648366004612df4565b611232565b34801561065957600080fd5b50610662611292565b6040516103a89190612ed4565b34801561067b57600080fd5b506103f36112a6565b34801561069057600080fd5b506104b761069f366004612e53565b6112ac565b3480156106b057600080fd5b506104b76112fb565b3480156106c557600080fd5b506103f3611373565b3480156106da57600080fd5b506103f36106e9366004612d44565b611379565b3480156106fa57600080fd5b506104b76113db565b34801561070f57600080fd5b506103f3611448565b34801561072457600080fd5b506103f361144e565b34801561073957600080fd5b506103d1610748366004612d44565b611454565b34801561075957600080fd5b50610662611472565b34801561076e57600080fd5b506104b761077d366004612e6d565b611481565b34801561078e57600080fd5b5061039b6114bb565b3480156107a357600080fd5b506104b76107b2366004612e6d565b6114ca565b3480156107c357600080fd5b506103d16107d2366004612e28565b611504565b3480156107e357600080fd5b506104b761156c565b3480156107f857600080fd5b506103d1610807366004612e28565b611609565b34801561081857600080fd5b506103f361161d565b34801561082d57600080fd5b506103d1611623565b34801561084257600080fd5b506104b7610851366004612e53565b611634565b34801561086257600080fd5b506104b76116b2565b34801561087757600080fd5b506103f3611736565b34801561088c57600080fd5b506104b761089b366004612e6d565b61173c565b3480156108ac57600080fd5b50610662611797565b3480156108c157600080fd5b506104b76108d0366004612e6d565b6117bb565b3480156108e157600080fd5b506103f36108f0366004612d7c565b61184b565b34801561090157600080fd5b506104b7610910366004612d44565b611876565b34801561092157600080fd5b50610662611904565b34801561093657600080fd5b506104b7610945366004612d44565b611913565b34801561095657600080fd5b506104b7610965366004612d44565b611969565b34801561097657600080fd5b506104b7610985366004612d44565b611a0d565b34801561099657600080fd5b506104b76109a5366004612e6d565b611a6a565b3480156109b657600080fd5b506104b76109c5366004612d44565b611aa4565b3480156109d657600080fd5b506103d1611afb565b6060601280546109ee906135d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a906135d5565b8015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b5050505050905090565b6000610a85610a7e611b97565b8484611b9b565b5060015b92915050565b600e5490565b600c5490565b600a6020526000908152604090205460ff1681565b6000610abd848484611c4f565b610b2d84610ac9611b97565b610b288560405180606001604052806025815260200161365a602591396001600160a01b038a16600090815260066020526040812090610b07611b97565b6001600160a01b031681526020810191909152604001600020549190612049565b611b9b565b5060019392505050565b6000600d54821115610b645760405162461bcd60e51b8152600401610b5b90613043565b60405180910390fd5b6000610b6e612083565b9050610b7a8382611b55565b9150505b919050565b60145460ff1690565b610b94611b97565b6000546001600160a01b03908116911614610bc15760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03811660009081526008602052604090205460ff16610bf95760405162461bcd60e51b8152600401610b5b9061310a565b60005b600b54811015610d9a57816001600160a01b0316600b8281548110610c3157634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610d8857600b8054610c5c906001906135be565b81548110610c7a57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600b80546001600160a01b039092169183908110610cb457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610d0c610ced612083565b6001600160a01b03841660009081526005602052604090205490611b09565b6001600160a01b038316600090815260046020908152604080832093909355600581528282208290556008905220805460ff19169055600b805480610d6157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610d9a565b80610d9281613610565b915050610bfc565b5050565b610da6611b97565b6000546001600160a01b03908116911614610dd35760405162461bcd60e51b8152600401610b5b906132eb565b6014546001600160a01b03828116610100909204161415610e065760405162461bcd60e51b8152600401610b5b90612f81565b6001600160a01b0381166000908152600a602052604090205460ff1615610e3f5760405162461bcd60e51b8152600401610b5b90613398565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b610e6b611b97565b6000546001600160a01b03908116911614610e985760405162461bcd60e51b8152600401610b5b906132eb565b601d55565b6000610a85610eaa611b97565b84610b288560066000610ebb611b97565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906120a6565b6000610ef5611b97565b6001600160a01b03811660009081526008602052604090205490915060ff1615610f315760405162461bcd60e51b8152600401610b5b906133cf565b6000610f45610f3e612083565b8490611b09565b6001600160a01b038316600090815260046020526040902054909150610f6b90826120d5565b6001600160a01b038316600090815260046020526040902055600d54610f9190826120d5565b600d55600e54610fa190846120a6565b600e55505050565b60115481565b60105481565b610fbd611b97565b6000546001600160a01b03908116911614610fea5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600c548311156110325760405162461bcd60e51b8152600401610b5b906131fc565b8161105457600061104b611044612083565b8590611b09565b9150610a899050565b6000611061611044612083565b90506000611089611082611073612083565b61107c88612117565b90611b09565b83906120d5565b9250610a89915050565b60185460ff1681565b6110a4611b97565b6000546001600160a01b039081169116146110d15760405162461bcd60e51b8152600401610b5b906132eb565b601755565b6018546301000000900460ff1681565b6110ee611b97565b6000546001600160a01b0390811691161461111b5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03811660009081526008602052604090205460ff16156111545760405162461bcd60e51b8152600401610b5b9061310a565b6001600160a01b038116600090815260046020526040902054156111ae576001600160a01b03811660009081526004602052604090205461119490610b37565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b61123a611b97565b6000546001600160a01b039081169116146112675760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60145461010090046001600160a01b031681565b60195481565b6112b4611b97565b6000546001600160a01b039081169116146112e15760405162461bcd60e51b8152600401610b5b906132eb565b601880549115156101000261ff0019909216919091179055565b611303611b97565b6000546001600160a01b039081169116146113305760405162461bcd60e51b8152600401610b5b906132eb565b6018546301000000900460ff161561135a5760405162461bcd60e51b8152600401610b5b906131cf565b6018805463ff0000001916630100000017905542600f55565b601b5481565b6001600160a01b03811660009081526008602052604081205460ff16156113b957506001600160a01b038116600090815260056020526040902054610b7e565b6001600160a01b038216600090815260046020526040902054610a8990610b37565b6113e3611b97565b6000546001600160a01b039081169116146114105760405162461bcd60e51b8152600401610b5b906132eb565b600080546040516001600160a01b039091169060008051602061367f833981519152908390a3600080546001600160a01b0319169055565b60165481565b601d5481565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031690565b611489611b97565b6000546001600160a01b039081169116146114b65760405162461bcd60e51b8152600401610b5b906132eb565b601b55565b6060601380546109ee906135d5565b6114d2611b97565b6000546001600160a01b039081169116146114ff5760405162461bcd60e51b8152600401610b5b906132eb565b601955565b6000610a85611511611b97565b84610b288560405180606001604052806022815260200161369f602291396006600061153b611b97565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612049565b6001546001600160a01b031633146115965760405162461bcd60e51b8152600401610b5b9061349d565b60025442116115b75760405162461bcd60e51b8152600401610b5b90612fc7565b600154600080546040516001600160a01b03938416939091169160008051602061367f83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610a85611616611b97565b8484611c4f565b60025490565b601854640100000000900460ff1681565b61163c611b97565b6000546001600160a01b039081169116146116695760405162461bcd60e51b8152600401610b5b906132eb565b6018805460ff19168215151790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906116a7908390612f23565b60405180910390a150565b6116ba611b97565b6000546001600160a01b039081169116146116e75760405162461bcd60e51b8152600401610b5b906132eb565b601854640100000000900460ff16156117125760405162461bcd60e51b8152600401610b5b906131cf565b601880544260105560ff1964ff000000001990911664010000000017166001179055565b600f5481565b611744611b97565b6000546001600160a01b039081169116146117715760405162461bcd60e51b8152600401610b5b906132eb565b611791606461178b83600c54611b0990919063ffffffff16565b90611b55565b60165550565b7f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b81565b6117c3611b97565b6000546001600160a01b039081169116146117f05760405162461bcd60e51b8152600401610b5b906132eb565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561181f8142613567565b600255600080546040516001600160a01b039091169060008051602061367f833981519152908390a350565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61187e611b97565b6000546001600160a01b039081169116146118ab5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b0381166000908152600a602052604090205460ff166118e35760405162461bcd60e51b8152600401610b5b90613141565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6015546001600160a01b031681565b61191b611b97565b6000546001600160a01b039081169116146119485760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b03166000908152600760205260409020805460ff19169055565b611971611b97565b6000546001600160a01b0390811691161461199e5760405162461bcd60e51b8152600401610b5b906132eb565b6001600160a01b0381166119c45760405162461bcd60e51b8152600401610b5b9061308d565b600080546040516001600160a01b038085169392169160008051602061367f83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611a15611b97565b6000546001600160a01b03908116911614611a425760405162461bcd60e51b8152600401610b5b906132eb565b601480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611a72611b97565b6000546001600160a01b03908116911614611a9f5760405162461bcd60e51b8152600401610b5b906132eb565b601155565b611aac611b97565b6000546001600160a01b03908116911614611ad95760405162461bcd60e51b8152600401610b5b906132eb565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b601854610100900460ff1681565b600082611b1857506000610a89565b6000611b24838561359f565b905082611b31858361357f565b14611b4e5760405162461bcd60e51b8152600401610b5b906132aa565b9392505050565b6000611b4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061214d565b3390565b6001600160a01b038316611bc15760405162461bcd60e51b8152600401610b5b90613320565b6001600160a01b038216611be75760405162461bcd60e51b8152600401610b5b9061300c565b6001600160a01b0380841660008181526006602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611c429085906134e0565b60405180910390a3505050565b6001600160a01b038316611c755760405162461bcd60e51b8152600401610b5b90613268565b6001600160a01b038216611c9b5760405162461bcd60e51b8152600401610b5b9061341b565b60008111611cbb5760405162461bcd60e51b8152600401610b5b90613450565b6001600160a01b0382166000908152600a602052604090205460ff1615611cf45760405162461bcd60e51b8152600401610b5b9061316b565b6001600160a01b0383166000908152600a602052604090205460ff1615611d2d5760405162461bcd60e51b8152600401610b5b9061316b565b6001600160a01b03831660009081526009602052604090205460ff16158015611d6f57506001600160a01b03821660009081526009602052604090205460ff16155b15611f5357601654811115611d965760405162461bcd60e51b8152600401610b5b90613361565b6018546301000000900460ff16611df9577f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316826001600160a01b03161415611df95760405162461bcd60e51b8152600401610b5b90613233565b601854640100000000900460ff16611e5d577f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316836001600160a01b03161415611e5d5760405162461bcd60e51b8152600401610b5b90613198565b601154601054611e6d9190613567565b42108015611e8e57506014546001600160a01b038481166101009092041614155b15611f53577f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316836001600160a01b03161415611ef5576001600160a01b0382166000908152600a60205260409020805460ff19166001179055611f53565b7f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316826001600160a01b03161415611f53576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b611f5d838361217b565b6001600160a01b03831660009081526007602052604090205460019060ff1680611f9f57506001600160a01b03831660009081526007602052604090205460ff165b80611fb15750601854610100900460ff165b15611fba575060005b7f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316836001600160a01b03161415801561202e57507f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316846001600160a01b031614155b15612037575060005b612043848484846123af565b50505050565b6000818484111561206d5760405162461bcd60e51b8152600401610b5b9190612f2e565b50600061207a84866135be565b95945050505050565b60008060006120906124cb565b909250905061209f8282611b55565b9250505090565b6000806120b38385613567565b905083811015611b4e5760405162461bcd60e51b8152600401610b5b906130d3565b6000611b4e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612049565b600080610b7a6103e861178b612146601d54612140601b546019546120a690919063ffffffff16565b906120a6565b8690611b09565b6000818361216e5760405162461bcd60e51b8152600401610b5b9190612f2e565b50600061207a848661357f565b600061218630611379565b9050601654811061219657506016545b601754601854908210159062010000900460ff161580156121b45750805b80156121f257507f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316846001600160a01b031614155b8015612200575060185460ff165b801561225257506001600160a01b0384163014801561225057507f000000000000000000000000d22df65b3dc3d68bb825fc75d837d4749627bf5b6001600160a01b0316836001600160a01b0316145b155b156120435760175491506000612275601d54601b546120a690919063ffffffff16565b90506000612299600261178b8461178b612710601b54611b0990919063ffffffff16565b905060006122b88361178b612710601d54611b0990919063ffffffff16565b90506122da30601460019054906101000a90046001600160a01b031687611b9b565b60006122ec61271061178b8886611b09565b905060006122fa87836120d5565b6014549091506123189061010090046001600160a01b031682612688565b4761232385856120a6565b955060006123358761178b8489611b09565b60145490915061235c9061010090046001600160a01b0316612355611472565b8684612807565b6015546001600160a01b03166108fc6123798961178b868a611b09565b6040518115909202916000818181858888f193505050501580156123a1573d6000803e3d6000fd5b505050505050505050505050565b806123bc576123bc61289d565b6001600160a01b03841660009081526008602052604090205460ff1680156123fd57506001600160a01b03831660009081526008602052604090205460ff16155b156124125761240d8484846128bf565b6124be565b6001600160a01b03841660009081526008602052604090205460ff1615801561245357506001600160a01b03831660009081526008602052604090205460ff165b156124635761240d848484612a10565b6001600160a01b03841660009081526008602052604090205460ff1680156124a357506001600160a01b03831660009081526008602052604090205460ff165b156124b35761240d848484612ad7565b6124be848484612b68565b8061204357612043612bca565b600d54600c546000918291825b600b54811015612656578260046000600b848154811061250857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061258157508160056000600b848154811061255a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561259857600d54600c5494509450505050612684565b6125ec60046000600b84815481106125c057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906120d5565b925061264260056000600b848154811061261657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906120d5565b91508061264e81613610565b9150506124d8565b50600c54600d5461266691611b55565b82101561267e57600d54600c54935093505050612684565b90925090505b9091565b6040805160028082526060820183528492600092919060208301908036833701905050905030816000815181106126cf57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272857600080fd5b505afa15801561273c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127609190612d60565b8160018151811061278157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152821663791ac94784600084306127af42610168613567565b6040518663ffffffff1660e01b81526004016127cf9594939291906134e9565b600060405180830381600087803b1580156127e957600080fd5b505af11580156127fd573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a61282a42610168613567565b6040518863ffffffff1660e01b815260040161284b96959493929190612ee8565b6060604051808303818588803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127fd9190612ea7565b60198054601a55601b8054601c55601d8054601e556000928390559082905555565b60006128c9612083565b905060006128e06128d984612117565b84906120d5565b905060006128ee8484611b09565b905060006129026110828561107c88612117565b6001600160a01b03881660009081526005602052604090205490915061292890866120d5565b6001600160a01b03881660009081526005602090815260408083209390935560049052205461295790836120d5565b6001600160a01b03808916600090815260046020526040808220939093559088168152205461298690826120a6565b6001600160a01b0387166000908152600460205260409020556129a98585612bde565b6129b38585612cc4565b6129bc85612ce1565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129ff91906134e0565b60405180910390a350505050505050565b6000612a1a612083565b90506000612a2a6128d984612117565b90506000612a388484611b09565b90506000612a4c6110828561107c88612117565b6001600160a01b038816600090815260046020526040902054909150612a7290836120d5565b6001600160a01b03808916600090815260046020908152604080832094909455918916815260059091522054612aa890846120a6565b6001600160a01b03871660009081526005602090815260408083209390935560049052205461298690826120a6565b6000612ae1612083565b90506000612af16128d984612117565b90506000612aff8484611b09565b90506000612b136110828561107c88612117565b6001600160a01b038816600090815260056020526040902054909150612b3990866120d5565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612a7290836120d5565b6000612b72612083565b90506000612b826128d984612117565b90506000612b908484611b09565b90506000612ba46110828561107c88612117565b6001600160a01b03881660009081526004602052604090205490915061295790836120d5565b601a54601955601c54601b55601e54601d55565b6000612bfb6103e861178b601b5486611b0990919063ffffffff16565b90506000612c098284611b09565b30600090815260046020526040902054909150612c2690826120a6565b3060009081526004602090815260408083209390935560089052205460ff1615612c755730600090815260056020526040902054612c6490836120a6565b306000908152600560205260409020555b30612c7e611b97565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cb691906134e0565b60405180910390a350505050565b6000612bfb6103e861178b601d5486611b0990919063ffffffff16565b6000612cfe6103e861178b60195485611b0990919063ffffffff16565b90506000612d14612d0d612083565b8390611b09565b600d54909150612d2490826120d5565b600d55600e54610fa190836120a6565b80358015158114610b7e57600080fd5b600060208284031215612d55578081fd5b8135611b4e81613641565b600060208284031215612d71578081fd5b8151611b4e81613641565b60008060408385031215612d8e578081fd5b8235612d9981613641565b91506020830135612da981613641565b809150509250929050565b600080600060608486031215612dc8578081fd5b8335612dd381613641565b92506020840135612de381613641565b929592945050506040919091013590565b60008060408385031215612e06578182fd5b8235612e1181613641565b9150612e1f60208401612d34565b90509250929050565b60008060408385031215612e3a578182fd5b8235612e4581613641565b946020939093013593505050565b600060208284031215612e64578081fd5b611b4e82612d34565b600060208284031215612e7e578081fd5b5035919050565b60008060408385031215612e97578182fd5b82359150612e1f60208401612d34565b600080600060608486031215612ebb578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b81811015612f5a57858101830151858201604001528201612f3e565b81811115612f6b5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f57453a2057652063616e206e6f7420626c61636b6c69737420756e69537761706040820152652937baba32b960d11b606082015260800190565b60208082526025908201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604082015264206461797360d81b606082015260800190565b6020808252601f908201527f57453a20617070726f766520746f20746865207a65726f206164647265737300604082015260600190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b60208082526010908201526f2ba29d102737ba10309039b734b832b960811b604082015260600190565b60208082526013908201527215d14e8814db9a5c195c8819195d1958dd1959606a1b604082015260600190565b6020808252601d908201527f57453a20427579696e67206973206e6f7420656e61626c656420796574000000604082015260600190565b60208082526013908201527215d14e88105b1c9958591e48195b98589b1959606a1b604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b6020808252818101527f57453a20616e74697768616c65206973206e6f7420656e61626c656420796574604082015260600190565b60208082526022908201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f57453a20617070726f76652066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526017908201527f616d6f756e7420657863656564206d6178206c696d6974000000000000000000604082015260600190565b60208082526018908201527f57453a20736e6970657220616c72656164792065786973740000000000000000604082015260600190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b6020808252818101527f57453a207472616e7366657220746f20746865207a65726f2061646472657373604082015260600190565b6020808252602d908201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160408201526c746572207468616e207a65726f60981b606082015260800190565b60208082526023908201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6040820152626f636b60e81b606082015260800190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156135385784516001600160a01b031683529383019391830191600101613513565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b6000821982111561357a5761357a61362b565b500190565b60008261359a57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156135b9576135b961362b565b500290565b6000828210156135d0576135d061362b565b500390565b6002810460018216806135e957607f821691505b6020821081141561360a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156136245761362461362b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461365657600080fd5b5056fe57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e057453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205391d39edc7b19977109985ed160e0a5f3e08429f5d3b42b117a2731c983a74764736f6c63430008000033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b95d46694f445ff3b89ffae43b8d28742bb7bf97

-----Decoded View---------------
Arg [0] : _marketWallet (address): 0xb95d46694f445FF3B89FfaE43B8d28742BB7Bf97

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b95d46694f445ff3b89ffae43b8d28742bb7bf97


Deployed Bytecode Sourcemap

18617:22158:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22379:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23291:161;;;;;;;;;;-1:-1:-1;23291:161:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24406:87::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;22656:95::-;;;;;;;;;;;;;:::i;19102:41::-;;;;;;;;;;-1:-1:-1;19102:41:0;;;;;:::i;:::-;;:::i;23460:310::-;;;;;;;;;;-1:-1:-1;23460:310:0;;;;;:::i;:::-;;:::i;25849:253::-;;;;;;;;;;-1:-1:-1;25849:253:0;;;;;:::i;:::-;;:::i;22565:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26450:547::-;;;;;;;;;;-1:-1:-1;26450:547:0;;;;;:::i;:::-;;:::i;:::-;;27005:308;;;;;;;;;;-1:-1:-1;27005:308:0;;;;;:::i;:::-;;:::i;28444:108::-;;;;;;;;;;-1:-1:-1;28444:108:0;;;;;:::i;:::-;;:::i;23778:218::-;;;;;;;;;;-1:-1:-1;23778:218:0;;;;;:::i;:::-;;:::i;24501:374::-;;;;;;;;;;-1:-1:-1;24501:374:0;;;;;:::i;:::-;;:::i;19509:43::-;;;;;;;;;;;;;:::i;19445:33::-;;;;;;;;;;;;;:::i;27501:111::-;;;;;;;;;;-1:-1:-1;27501:111:0;;;;;:::i;:::-;;:::i;25326:515::-;;;;;;;;;;-1:-1:-1;25326:515:0;;;;;:::i;:::-;;:::i;20043:41::-;;;;;;;;;;;;;:::i;27907:116::-;;;;;;;;;;-1:-1:-1;27907:116:0;;;;;:::i;:::-;;:::i;20259:22::-;;;;;;;;;;;;;:::i;26110:332::-;;;;;;;;;;-1:-1:-1;26110:332:0;;;;;:::i;:::-;;:::i;32031:124::-;;;;;;;;;;-1:-1:-1;32031:124:0;;;;;:::i;:::-;;:::i;28031:133::-;;;;;;;;;;-1:-1:-1;28031:133:0;;;;;:::i;:::-;;:::i;19681:38::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20414:42::-;;;;;;;;;;;;;:::i;28737:108::-;;;;;;;;;;-1:-1:-1;28737:108:0;;;;;:::i;:::-;;:::i;24883:193::-;;;;;;;;;;;;;:::i;20601:33::-;;;;;;;;;;;;;:::i;22759:198::-;;;;;;;;;;-1:-1:-1;22759:198:0;;;;;:::i;:::-;;:::i;6709:157::-;;;;;;;;;;;;;:::i;19825:55::-;;;;;;;;;;;;;:::i;20755:30::-;;;;;;;;;;;;;:::i;24278:120::-;;;;;;;;;;-1:-1:-1;24278:120:0;;;;;:::i;:::-;;:::i;6493:79::-;;;;;;;;;;;;;:::i;28312:120::-;;;;;;;;;;-1:-1:-1;28312:120:0;;;;;:::i;:::-;;:::i;22470:87::-;;;;;;;;;;;;;:::i;28172:132::-;;;;;;;;;;-1:-1:-1;28172:132:0;;;;;:::i;:::-;;:::i;24004:266::-;;;;;;;;;;-1:-1:-1;24004:266:0;;;;;:::i;:::-;;:::i;7607:358::-;;;;;;;;;;;;;:::i;22965:167::-;;;;;;;;;;-1:-1:-1;22965:167:0;;;;;:::i;:::-;;:::i;7135:89::-;;;;;;;;;;;;;:::i;20335:23::-;;;;;;;;;;;;;:::i;28564:165::-;;;;;;;;;;-1:-1:-1;28564:165:0;;;;;:::i;:::-;;:::i;25084:230::-;;;;;;;;;;;;;:::i;19375:39::-;;;;;;;;;;;;;:::i;27765:130::-;;;;;;;;;;-1:-1:-1;27765:130:0;;;;;:::i;:::-;;:::i;19726:36::-;;;;;;;;;;;;;:::i;7300:235::-;;;;;;;;;;-1:-1:-1;7300:235:0;;;;;:::i;:::-;;:::i;23140:143::-;;;;;;;;;;-1:-1:-1;23140:143:0;;;;;:::i;:::-;;:::i;27321:172::-;;;;;;;;;;-1:-1:-1;27321:172:0;;;;;:::i;:::-;;:::i;19769:35::-;;;;;;;;;;;;;:::i;27620:110::-;;;;;;;;;;-1:-1:-1;27620:110:0;;;;;:::i;:::-;;:::i;6875:252::-;;;;;;;;;;-1:-1:-1;6875:252:0;;;;;:::i;:::-;;:::i;28994:128::-;;;;;;;;;;-1:-1:-1;28994:128:0;;;;;:::i;:::-;;:::i;29130:103::-;;;;;;;;;;-1:-1:-1;29130:103:0;;;;;:::i;:::-;;:::i;28857:125::-;;;;;;;;;;-1:-1:-1;28857:125:0;;;;;:::i;:::-;;:::i;20142:41::-;;;;;;;;;;;;;:::i;22379:83::-;22416:13;22449:5;22442:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22379:83;:::o;23291:161::-;23366:4;23383:39;23392:12;:10;:12::i;:::-;23406:7;23415:6;23383:8;:39::i;:::-;-1:-1:-1;23440:4:0;23291:161;;;;;:::o;24406:87::-;24475:10;;24406:87;:::o;22656:95::-;22736:7;;22656:95;:::o;19102:41::-;;;;;;;;;;;;;;;:::o;23460:310::-;23558:4;23575:36;23585:6;23593:9;23604:6;23575:9;:36::i;:::-;23622:118;23631:6;23639:12;:10;:12::i;:::-;23653:86;23691:6;23653:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23653:19:0;;;;;;:11;:19;;;;;;23673:12;:10;:12::i;:::-;-1:-1:-1;;;;;23653:33:0;;;;;;;;;;;;-1:-1:-1;23653:33:0;;;:86;:37;:86::i;:::-;23622:8;:118::i;:::-;-1:-1:-1;23758:4:0;23460:310;;;;;:::o;25849:253::-;25916:7;25955;;25944;:18;;25936:73;;;;-1:-1:-1;;;25936:73:0;;;;;;;:::i;:::-;;;;;;;;;26020:19;26042:10;:8;:10::i;:::-;26020:32;-1:-1:-1;26070:24:0;:7;26020:32;26070:11;:24::i;:::-;26063:31;;;25849:253;;;;:::o;22565:83::-;22631:9;;;;22565:83;:::o;26450:547::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26530:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;26522:60;;;;-1:-1:-1::0;;;26522:60:0::1;;;;;;;:::i;:::-;26598:9;26593:397;26617:9;:16:::0;26613:20;::::1;26593:397;;;26675:7;-1:-1:-1::0;;;;;26659:23:0::1;:9;26669:1;26659:12;;;;;;-1:-1:-1::0;;;26659:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;26659:12:0::1;:23;26655:324;;;26718:9;26728:16:::0;;:20:::1;::::0;26747:1:::1;::::0;26728:20:::1;:::i;:::-;26718:31;;;;;;-1:-1:-1::0;;;26718:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;26703:9:::1;:12:::0;;-1:-1:-1;;;;;26718:31:0;;::::1;::::0;26713:1;;26703:12;::::1;;;-1:-1:-1::0;;;26703:12:0::1;;;;;;;;;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;26703:46:0::1;;;;;-1:-1:-1::0;;;;;26703:46:0::1;;;;;;26787:32;26808:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;26787:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;:20:::1;:32::i;:::-;-1:-1:-1::0;;;;;26768:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:51;;;;26838:7:::1;:16:::0;;;;;:20;;;26877:11:::1;:20:::0;;;:28;;-1:-1:-1;;26877:28:0::1;::::0;;26924:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;26924:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;26924:15:0;;;;;-1:-1:-1;;;;;;26924:15:0::1;::::0;;;;;26958:5:::1;;26655:324;26635:3:::0;::::1;::::0;::::1;:::i;:::-;;;;26593:397;;;;26450:547:::0;:::o;27005:308::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;27120:13:::1;::::0;-1:-1:-1;;;;;27100:34:0;;::::1;27120:13;::::0;;::::1;;27100:34;;27078:122;;;;-1:-1:-1::0;;;27078:122:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27220:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;27219:20;27211:57;;;;-1:-1:-1::0;;;27211:57:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27279:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;27279:26:0::1;27301:4;27279:26;::::0;;27005:308::o;28444:108::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;28522:10:::1;:22:::0;28444:108::o;23778:218::-;23866:4;23883:83;23892:12;:10;:12::i;:::-;23906:7;23915:50;23954:10;23915:11;:25;23927:12;:10;:12::i;:::-;-1:-1:-1;;;;;23915:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;23915:25:0;;;:34;;;;;;;;;;;:38;:50::i;24501:374::-;24553:14;24570:12;:10;:12::i;:::-;-1:-1:-1;;;;;24602:19:0;;;;;;:11;:19;;;;;;24553:29;;-1:-1:-1;24602:19:0;;24601:20;24593:77;;;;-1:-1:-1;;;24593:77:0;;;;;;;:::i;:::-;24681:15;24699:23;24711:10;:8;:10::i;:::-;24699:7;;:11;:23::i;:::-;-1:-1:-1;;;;;24751:15:0;;;;;;:7;:15;;;;;;24681:41;;-1:-1:-1;24751:28:0;;24681:41;24751:19;:28::i;:::-;-1:-1:-1;;;;;24733:15:0;;;;;;:7;:15;;;;;:46;24800:7;;:20;;24812:7;24800:11;:20::i;:::-;24790:7;:30;24844:10;;:23;;24859:7;24844:14;:23::i;:::-;24831:10;:36;-1:-1:-1;;;24501:374:0:o;19509:43::-;;;;:::o;19445:33::-;;;;:::o;27501:111::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27570:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;27570:34:0::1;27600:4;27570:34;::::0;;27501:111::o;25326:515::-;25417:7;25456;;25445;:18;;25437:62;;;;-1:-1:-1;;;25437:62:0;;;;;;;:::i;:::-;25515:17;25510:324;;25549:15;25567:23;25579:10;:8;:10::i;:::-;25567:7;;:11;:23::i;:::-;25549:41;-1:-1:-1;25605:14:0;;-1:-1:-1;25605:14:0;25510:324;25652:15;25670:23;25682:10;:8;:10::i;25670:23::-;25652:41;;25708:23;25734:51;25746:38;25773:10;:8;:10::i;:::-;25746:22;25760:7;25746:13;:22::i;:::-;:26;;:38::i;:::-;25734:7;;:11;:51::i;:::-;25708:77;-1:-1:-1;25800:22:0;;-1:-1:-1;;25800:22:0;20043:41;;;;;;:::o;27907:116::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;27985:20:::1;:30:::0;27907:116::o;20259:22::-;;;;;;;;;:::o;26110:332::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26191:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;26190:21;26182:61;;;;-1:-1:-1::0;;;26182:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26258:16:0;::::1;26277:1;26258:16:::0;;;:7:::1;:16;::::0;;;;;:20;26254:109:::1;;-1:-1:-1::0;;;;;26334:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;26314:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;26295:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;26254:109:::1;-1:-1:-1::0;;;;;26373:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;26373:27:0::1;26396:4;26373:27:::0;;::::1;::::0;;;26411:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;26411:23:0::1;::::0;;::::1;::::0;;26110:332::o;32031:124::-;-1:-1:-1;;;;;32120:27:0;32096:4;32120:27;;;:18;:27;;;;;;;;;32031:124::o;28031:133::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28118:30:0;;;::::1;;::::0;;;:20:::1;:30;::::0;;;;:38;;-1:-1:-1;;28118:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28031:133::o;19681:38::-;;;;;;-1:-1:-1;;;;;19681:38:0;;:::o;20414:42::-;;;;:::o;28737:108::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;28807:21:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;28807:30:0;;::::1;::::0;;;::::1;::::0;;28737:108::o;24883:193::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;24943:10:::1;::::0;;;::::1;;;24942:11;24934:43;;;;-1:-1:-1::0;;;24934:43:0::1;;;;;;;:::i;:::-;24988:10;:17:::0;;-1:-1:-1;;24988:17:0::1;::::0;::::1;::::0;;25043:15:::1;25016:24;:42:::0;24883:193::o;20601:33::-;;;;:::o;22759:198::-;-1:-1:-1;;;;;22849:20:0;;22825:7;22849:20;;;:11;:20;;;;;;;;22845:49;;;-1:-1:-1;;;;;;22878:16:0;;;;;;:7;:16;;;;;;22871:23;;22845:49;-1:-1:-1;;;;;22932:16:0;;;;;;:7;:16;;;;;;22912:37;;:19;:37::i;6709:157::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;6816:1:::1;6800:6:::0;;6779:40:::1;::::0;-1:-1:-1;;;;;6800:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6779:40:0;6816:1;;6779:40:::1;6855:1;6830:28:::0;;-1:-1:-1;;;;;;6830:28:0::1;::::0;;6709:157::o;19825:55::-;;;;:::o;20755:30::-;;;;:::o;24278:120::-;-1:-1:-1;;;;;24370:20:0;24346:4;24370:20;;;:11;:20;;;;;;;;;24278:120::o;6493:79::-;6531:7;6558:6;-1:-1:-1;;;;;6558:6:0;6493:79;:::o;28312:120::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;28396:13:::1;:28:::0;28312:120::o;22470:87::-;22509:13;22542:7;22535:14;;;;;:::i;28172:132::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;28262:22:::1;:34:::0;28172:132::o;24004:266::-;24097:4;24114:126;24123:12;:10;:12::i;:::-;24137:7;24146:93;24185:15;24146:93;;;;;;;;;;;;;;;;;:11;:25;24158:12;:10;:12::i;:::-;-1:-1:-1;;;;;24146:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;24146:25:0;;;:34;;;;;;;;;;;:93;:38;:93::i;7607:358::-;7659:14;;-1:-1:-1;;;;;7659:14:0;7677:10;7659:28;7651:76;;;;-1:-1:-1;;;7651:76:0;;;;;;;:::i;:::-;7764:9;;7746:15;:27;7738:78;;;;-1:-1:-1;;;7738:78:0;;;;;;;:::i;:::-;7861:14;;;7853:6;;7832:44;;-1:-1:-1;;;;;7861:14:0;;;;7853:6;;;;-1:-1:-1;;;;;;;;;;;7832:44:0;;7896:14;;;;7887:23;;-1:-1:-1;;;;;;7887:23:0;;;-1:-1:-1;;;;;7896:14:0;;7887:23;;;;7921:36;;;7607:358::o;22965:167::-;23043:4;23060:42;23070:12;:10;:12::i;:::-;23084:9;23095:6;23060:9;:42::i;7135:89::-;7207:9;;7135:89;:::o;20335:23::-;;;;;;;;;:::o;28564:165::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;28639:21:::1;:30:::0;;-1:-1:-1;;28639:30:0::1;::::0;::::1;;;::::0;;28685:36:::1;::::0;::::1;::::0;::::1;::::0;28639:30;;28685:36:::1;:::i;:::-;;;;;;;;28564:165:::0;:::o;25084:230::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;25146:11:::1;::::0;;;::::1;;;25145:12;25137:44;;;;-1:-1:-1::0;;;25137:44:0::1;;;;;;;:::i;:::-;25192:11;:18:::0;;25242:15:::1;25221:18;:36:::0;-1:-1:-1;;;;25192:18:0;;::::1;::::0;::::1;25268:28;25206:4;25268:28;::::0;;25084:230::o;19375:39::-;;;;:::o;27765:130::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;27854:33:::1;27883:3;27854:24;27866:11;27854:7;;:11;;:24;;;;:::i;:::-;:28:::0;::::1;:33::i;:::-;27839:12;:48:::0;-1:-1:-1;27765:130:0:o;19726:36::-;;;:::o;7300:235::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;7381:6:::1;::::0;;;7364:23;;-1:-1:-1;;;;;;7364:23:0;;::::1;-1:-1:-1::0;;;;;7381:6:0;::::1;7364:23;::::0;;;7398:28:::1;::::0;;7449:22:::1;7467:4:::0;7449:15:::1;:22;:::i;:::-;7437:9;:34:::0;7524:1:::1;7508:6:::0;;7487:40:::1;::::0;-1:-1:-1;;;;;7508:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7487:40:0;7524:1;;7487:40:::1;7300:235:::0;:::o;23140:143::-;-1:-1:-1;;;;;23248:18:0;;;23221:7;23248:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;23140:143::o;27321:172::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27407:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;27399:48;;;;-1:-1:-1::0;;;27399:48:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27458:19:0::1;27480:5;27458:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;27458:27:0::1;::::0;;27321:172::o;19769:35::-;;;-1:-1:-1;;;;;19769:35:0;;:::o;27620:110::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27687:27:0::1;27717:5;27687:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;27687:35:0::1;::::0;;27620:110::o;6875:252::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6972:22:0;::::1;6964:73;;;;-1:-1:-1::0;;;6964:73:0::1;;;;;;;:::i;:::-;7074:6;::::0;;7053:38:::1;::::0;-1:-1:-1;;;;;7053:38:0;;::::1;::::0;7074:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;7053:38:0;::::1;7102:6;:17:::0;;-1:-1:-1;;;;;;7102:17:0::1;-1:-1:-1::0;;;;;7102:17:0;;;::::1;::::0;;;::::1;::::0;;6875:252::o;28994:128::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;29084:13:::1;:30:::0;;-1:-1:-1;;;;;29084:30:0;;::::1;;;-1:-1:-1::0;;;;;;29084:30:0;;::::1;::::0;;;::::1;::::0;;28994:128::o;29130:103::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;29202:15:::1;:23:::0;29130:103::o;28857:125::-;6631:12;:10;:12::i;:::-;6621:6;;-1:-1:-1;;;;;6621:6:0;;;:22;;;6613:67;;;;-1:-1:-1;;;6613:67:0;;;;;;;:::i;:::-;28945:12:::1;:29:::0;;-1:-1:-1;;;;;;28945:29:0::1;-1:-1:-1::0;;;;;28945:29:0;;;::::1;::::0;;;::::1;::::0;;28857:125::o;20142:41::-;;;;;;;;;:::o;1510:471::-;1568:7;1813:6;1809:47;;-1:-1:-1;1843:1:0;1836:8;;1809:47;1868:9;1880:5;1884:1;1880;:5;:::i;:::-;1868:17;-1:-1:-1;1913:1:0;1904:5;1908:1;1868:17;1904:5;:::i;:::-;:10;1896:56;;;;-1:-1:-1;;;1896:56:0;;;;;;;:::i;:::-;1972:1;1510:471;-1:-1:-1;;;1510:471:0:o;1990:132::-;2048:7;2075:39;2079:1;2082;2075:39;;;;;;;;;;;;;;;;;:3;:39::i;2763:115::-;2859:10;2763:115;:::o;32163:331::-;-1:-1:-1;;;;;32256:19:0;;32248:65;;;;-1:-1:-1;;;32248:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32332:21:0;;32324:65;;;;-1:-1:-1;;;32324:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32402:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;32454:32;;;;;32432:6;;32454:32;:::i;:::-;;;;;;;;32163:331;;;:::o;32502:2034::-;-1:-1:-1;;;;;32624:18:0;;32616:65;;;;-1:-1:-1;;;32616:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32700:16:0;;32692:61;;;;-1:-1:-1;;;32692:61:0;;;;;;;:::i;:::-;32781:1;32772:6;:10;32764:68;;;;-1:-1:-1;;;32764:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32852:13:0;;;;;;:9;:13;;;;;;;;32851:14;32843:46;;;;-1:-1:-1;;;32843:46:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32909:15:0;;;;;;:9;:15;;;;;;;;32908:16;32900:48;;;;-1:-1:-1;;;32900:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32966:26:0;;;;;;:20;:26;;;;;;;;:35;;;:86;;-1:-1:-1;;;;;;33019:24:0;;;;;;:20;:24;;;;;;;;:33;32966:86;32963:966;;;33118:12;;33108:6;:22;;33100:57;;;;-1:-1:-1;;;33100:57:0;;;;;;;:::i;:::-;33178:10;;;;;;;33173:176;;33246:11;-1:-1:-1;;;;;33239:18:0;:2;-1:-1:-1;;;;;33239:18:0;;;33209:124;;;;-1:-1:-1;;;33209:124:0;;;;;;;:::i;:::-;33370:11;;;;;;;33365:176;;33441:11;-1:-1:-1;;;;;33432:20:0;:4;-1:-1:-1;;;;;33432:20:0;;;33402:123;;;;-1:-1:-1;;;33402:123:0;;;;;;;:::i;:::-;33618:15;;33597:18;;:36;;;;:::i;:::-;33579:15;:54;:105;;;;-1:-1:-1;33670:13:0;;-1:-1:-1;;;;;33654:30:0;;;33670:13;;;;;33654:30;;33579:105;33557:361;;;33732:11;-1:-1:-1;;;;;33723:20:0;:4;-1:-1:-1;;;;;33723:20:0;;33719:184;;;-1:-1:-1;;;;;33768:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;33768:20:0;33784:4;33768:20;;;33719:184;;;33825:11;-1:-1:-1;;;;;33818:18:0;:2;-1:-1:-1;;;;;33818:18:0;;33814:89;;;-1:-1:-1;;;;;33861:15:0;;;;;;:9;:15;;;;;:22;;-1:-1:-1;;33861:22:0;33879:4;33861:22;;;33814:89;33970:24;33985:4;33991:2;33970:14;:24::i;:::-;-1:-1:-1;;;;;34188:24:0;;34068:12;34188:24;;;:18;:24;;;;;;34083:4;;34188:24;;;:50;;-1:-1:-1;;;;;;34216:22:0;;;;;;:18;:22;;;;;;;;34188:50;:75;;;-1:-1:-1;34242:21:0;;;;;;;34188:75;34184:123;;;-1:-1:-1;34290:5:0;34184:123;34328:11;-1:-1:-1;;;;;34322:17:0;:2;-1:-1:-1;;;;;34322:17:0;;;:40;;;;;34351:11;-1:-1:-1;;;;;34343:19:0;:4;-1:-1:-1;;;;;34343:19:0;;;34322:40;34318:91;;;-1:-1:-1;34391:5:0;34318:91;34487:41;34502:4;34508:2;34512:6;34520:7;34487:14;:41::i;:::-;32502:2034;;;;:::o;1309:192::-;1395:7;1431:12;1423:6;;;;1415:29;;;;-1:-1:-1;;;1415:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1455:9:0;1467:5;1471:1;1467;:5;:::i;:::-;1455:17;1309:192;-1:-1:-1;;;;;1309:192:0:o;29823:164::-;29865:7;29886:15;29903;29922:19;:17;:19::i;:::-;29885:56;;-1:-1:-1;29885:56:0;-1:-1:-1;29959:20:0;29885:56;;29959:11;:20::i;:::-;29952:27;;;;29823:164;:::o;974:181::-;1032:7;;1064:5;1068:1;1064;:5;:::i;:::-;1052:17;;1093:1;1088;:6;;1080:46;;;;-1:-1:-1;;;1080:46:0;;;;;;;:::i;1164:136::-;1222:7;1249:43;1253:1;1256;1249:43;;;;;;;;;;;;;;;;;:3;:43::i;29337:218::-;29399:7;29419:18;29440:79;29515:3;29440:70;29452:57;29498:10;;29452:41;29479:13;;29452:22;;:26;;:41;;;;:::i;:::-;:45;;:57::i;:::-;29440:7;;:11;:70::i;2131:278::-;2217:7;2252:12;2245:5;2237:28;;;;-1:-1:-1;;;2237:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2276:9:0;2288:5;2292:1;2288;:5;:::i;38306:2466::-;38657:28;38688:24;38706:4;38688:9;:24::i;:::-;38657:55;;38753:12;;38729:20;:36;38725:104;;-1:-1:-1;38805:12:0;;38725:104;38883:20;;38935:16;;38859:44;;;;;38935:16;;;;;38934:17;:44;;;;;38968:10;38934:44;:80;;;;;39003:11;-1:-1:-1;;;;;38995:19:0;:4;-1:-1:-1;;;;;38995:19:0;;;38934:80;:118;;;;-1:-1:-1;39031:21:0;;;;38934:118;:189;;;;-1:-1:-1;;;;;;39071:21:0;;39087:4;39071:21;:51;;;;;39110:11;-1:-1:-1;;;;;39096:26:0;:2;-1:-1:-1;;;;;39096:26:0;;39071:51;39069:54;38934:189;38916:1849;;;39194:20;;39171:43;;39262:20;39285:47;39321:10;;39285:13;;:35;;:47;;;;:::i;:::-;39262:70;;39347:17;39367:103;39468:1;39367:78;39432:12;39367:42;39405:3;39368:13;;39367:37;;:42;;;;:::i;:103::-;39347:123;;39485:16;39504:37;39528:12;39504:19;39519:3;39504:10;;:14;;:19;;;;:::i;:37::-;39485:56;;39601:69;39618:4;39633:13;;;;;;;;;-1:-1:-1;;;;;39633:13:0;39649:20;39601:8;:69::i;:::-;39800:18;39821:44;39861:3;39821:35;:20;39846:9;39821:24;:35::i;:44::-;39800:65;-1:-1:-1;39880:30:0;39913:68;:20;39800:65;39913:24;:68::i;:::-;40078:13;;39880:101;;-1:-1:-1;40029:119:0;;40078:13;;;-1:-1:-1;;;;;40078:13:0;39880:101;40029:22;:119::i;:::-;40189:21;40242:23;:9;40256:8;40242:13;:23::i;:::-;40227:38;-1:-1:-1;40282:31:0;40316:77;40227:38;40316:27;:12;40333:9;40316:16;:27::i;:77::-;40496:13;;40282:111;;-1:-1:-1;40451:171:0;;40496:13;;;-1:-1:-1;;;;;40496:13:0;40529:7;:5;:7::i;:::-;40555:10;40584:23;40451:18;:171::i;:::-;40639:12;;-1:-1:-1;;;;;40639:12:0;:99;40679:44;40710:12;40679:26;:12;40696:8;40679:16;:26::i;:44::-;40639:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38916:1849;;;;;;;38306:2466;;;;:::o;34617:691::-;34730:7;34725:41;;34752:14;:12;:14::i;:::-;-1:-1:-1;;;;;34783:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;34807:22:0;;;;;;:11;:22;;;;;;;;34806:23;34783:46;34779:467;;;34846:48;34868:6;34876:9;34887:6;34846:21;:48::i;:::-;34779:467;;;-1:-1:-1;;;;;34917:19:0;;;;;;:11;:19;;;;;;;;34916:20;:46;;;;-1:-1:-1;;;;;;34940:22:0;;;;;;:11;:22;;;;;;;;34916:46;34912:334;;;34979:46;34999:6;35007:9;35018:6;34979:19;:46::i;34912:334::-;-1:-1:-1;;;;;35047:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;35070:22:0;;;;;;:11;:22;;;;;;;;35047:45;35043:203;;;35109:48;35131:6;35139:9;35150:6;35109:21;:48::i;35043:203::-;35190:44;35208:6;35216:9;35227:6;35190:17;:44::i;:::-;35263:7;35258:42;;35285:15;:13;:15::i;29995:556::-;30093:7;;30129;;30046;;;;;30147:289;30171:9;:16;30167:20;;30147:289;;;30237:7;30213;:21;30221:9;30231:1;30221:12;;;;;;-1:-1:-1;;;30221:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30221:12:0;30213:21;;;;;;;;;;;;;:31;;:66;;;30272:7;30248;:21;30256:9;30266:1;30256:12;;;;;;-1:-1:-1;;;30256:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30256:12:0;30248:21;;;;;;;;;;;;;:31;30213:66;30209:97;;;30289:7;;30298;;30281:25;;;;;;;;;30209:97;30331:34;30343:7;:21;30351:9;30361:1;30351:12;;;;;;-1:-1:-1;;;30351:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30351:12:0;30343:21;;;;;;;;;;;;;30331:7;;:11;:34::i;:::-;30321:44;;30390:34;30402:7;:21;30410:9;30420:1;30410:12;;;;;;-1:-1:-1;;;30410:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30410:12:0;30402:21;;;;;;;;;;;;;30390:7;;:11;:34::i;:::-;30380:44;-1:-1:-1;30189:3:0;;;;:::i;:::-;;;;30147:289;;;-1:-1:-1;30472:7:0;;30460;;:20;;:11;:20::i;:::-;30450:7;:30;30446:61;;;30490:7;;30499;;30482:25;;;;;;;;30446:61;30526:7;;-1:-1:-1;30535:7:0;-1:-1:-1;29995:556:0;;;:::o;15942:644::-;16220:16;;;16234:1;16220:16;;;;;;;;16109:13;;16057:31;;16220:16;16234:1;16220:16;;;;;;;;;;-1:-1:-1;16220:16:0;16196:40;;16265:4;16247;16252:1;16247:7;;;;;;-1:-1:-1;;;16247:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;16247:23:0;;;-1:-1:-1;;;;;16247:23:0;;;;;16291:13;-1:-1:-1;;;;;16291:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16281:4;16286:1;16281:7;;;;;;-1:-1:-1;;;16281:7:0;;;;;;;;;-1:-1:-1;;;;;16281:30:0;;;:7;;;;;;;;;:30;16350:64;;;16429:11;16455:1;16499:4;16526;16546:21;:15;16564:3;16546:21;:::i;:::-;16350:228;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15942:644;;;;:::o;17269:535::-;17484:13;-1:-1:-1;;;;;17541:29:0;;;17579:9;17612:4;17632:11;17432:31;;17744:5;17764:21;:15;17782:3;17764:21;:::i;:::-;17541:255;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31502:309::-;31580:22;;;31547:30;:55;31637:13;;;31613:21;:37;31682:10;;;31661:18;:31;-1:-1:-1;31715:26:0;;;;31752:17;;;;31780:14;31502:309::o;36749:733::-;36851:19;36873:10;:8;:10::i;:::-;36851:32;;36894:23;36920:35;36932:22;36946:7;36932:13;:22::i;:::-;36920:7;;:11;:35::i;:::-;36894:61;-1:-1:-1;36966:15:0;36984:24;:7;36996:11;36984;:24::i;:::-;36966:42;;37019:23;37045:52;37057:39;37084:11;37057:22;37071:7;37057:13;:22::i;37045:52::-;-1:-1:-1;;;;;37126:15:0;;;;;;:7;:15;;;;;;37019:78;;-1:-1:-1;37126:28:0;;37146:7;37126:19;:28::i;:::-;-1:-1:-1;;;;;37108:15:0;;;;;;:7;:15;;;;;;;;:46;;;;37183:7;:15;;;;:28;;37203:7;37183:19;:28::i;:::-;-1:-1:-1;;;;;37165:15:0;;;;;;;:7;:15;;;;;;:46;;;;37243:18;;;;;;;:39;;37266:15;37243:22;:39::i;:::-;-1:-1:-1;;;;;37222:18:0;;;;;;:7;:18;;;;;:60;37293:43;37315:7;37324:11;37293:21;:43::i;:::-;37347:36;37362:7;37371:11;37347:14;:36::i;:::-;37394:20;37406:7;37394:11;:20::i;:::-;37447:9;-1:-1:-1;;;;;37430:44:0;37439:6;-1:-1:-1;;;;;37430:44:0;;37458:15;37430:44;;;;;;:::i;:::-;;;;;;;;36749:733;;;;;;;:::o;35996:745::-;36096:19;36118:10;:8;:10::i;:::-;36096:32;;36139:23;36165:35;36177:22;36191:7;36177:13;:22::i;36165:35::-;36139:61;-1:-1:-1;36211:15:0;36229:24;:7;36241:11;36229;:24::i;:::-;36211:42;;36264:23;36290:52;36302:39;36329:11;36302:22;36316:7;36302:13;:22::i;36290:52::-;-1:-1:-1;;;;;36371:15:0;;;;;;:7;:15;;;;;;36264:78;;-1:-1:-1;36371:28:0;;36391:7;36371:19;:28::i;:::-;-1:-1:-1;;;;;36353:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;36431:18;;;;;:7;:18;;;;;:39;;36454:15;36431:22;:39::i;:::-;-1:-1:-1;;;;;36410:18:0;;;;;;:7;:18;;;;;;;;:60;;;;36502:7;:18;;;;:39;;36525:15;36502:22;:39::i;37494:804::-;37596:19;37618:10;:8;:10::i;:::-;37596:32;;37639:23;37665:35;37677:22;37691:7;37677:13;:22::i;37665:35::-;37639:61;-1:-1:-1;37711:15:0;37729:24;:7;37741:11;37729;:24::i;:::-;37711:42;;37764:23;37790:52;37802:39;37829:11;37802:22;37816:7;37802:13;:22::i;37790:52::-;-1:-1:-1;;;;;37871:15:0;;;;;;:7;:15;;;;;;37764:78;;-1:-1:-1;37871:28:0;;37891:7;37871:19;:28::i;:::-;-1:-1:-1;;;;;37853:15:0;;;;;;:7;:15;;;;;;;;:46;;;;37928:7;:15;;;;:28;;37948:7;37928:19;:28::i;35316:672::-;35414:19;35436:10;:8;:10::i;:::-;35414:32;;35457:23;35483:35;35495:22;35509:7;35495:13;:22::i;35483:35::-;35457:61;-1:-1:-1;35529:15:0;35547:24;:7;35559:11;35547;:24::i;:::-;35529:42;;35582:23;35608:52;35620:39;35647:11;35620:22;35634:7;35620:13;:22::i;35608:52::-;-1:-1:-1;;;;;35689:15:0;;;;;;:7;:15;;;;;;35582:78;;-1:-1:-1;35689:28:0;;35709:7;35689:19;:28::i;31819:204::-;31888:30;;31863:22;:55;31945:21;;31929:13;:37;31990:18;;31977:10;:31;31819:204::o;30559:458::-;30648:16;30667:35;30698:3;30667:26;30679:13;;30667:7;:11;;:26;;;;:::i;:35::-;30648:54;-1:-1:-1;30713:16:0;30732:25;30648:54;30745:11;30732:12;:25::i;:::-;30809:4;30793:22;;;;:7;:22;;;;;;30713:44;;-1:-1:-1;30793:36:0;;30713:44;30793:26;:36::i;:::-;30784:4;30768:22;;;;:7;:22;;;;;;;;:61;;;;30844:11;:26;;;;;;30840:106;;;30926:4;30910:22;;;;:7;:22;;;;;;:36;;30937:8;30910:26;:36::i;:::-;30901:4;30885:22;;;;:7;:22;;;;;:61;30840:106;30993:4;30971:12;:10;:12::i;:::-;-1:-1:-1;;;;;30962:47:0;;31000:8;30962:47;;;;;;:::i;:::-;;;;;;;;30559:458;;;;:::o;31030:460::-;31112:18;31133:32;31161:3;31133:23;31145:10;;31133:7;:11;;:23;;;;:::i;29563:252::-;29620:12;29635:44;29675:3;29635:35;29647:22;;29635:7;:11;;:35;;;;:::i;:44::-;29620:59;;29690:12;29705:20;29714:10;:8;:10::i;:::-;29705:4;;:8;:20::i;:::-;29746:7;;29690:35;;-1:-1:-1;29746:17:0;;29690:35;29746:11;:17::i;:::-;29736:7;:27;29787:10;;:20;;29802:4;29787:14;:20::i;14:162:1:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:259;;293:2;281:9;272:7;268:23;264:32;261:2;;;314:6;306;299:22;261:2;358:9;345:23;377:33;404:5;377:33;:::i;445:263::-;;568:2;556:9;547:7;543:23;539:32;536:2;;;589:6;581;574:22;536:2;626:9;620:16;645:33;672:5;645:33;:::i;985:402::-;;;1114:2;1102:9;1093:7;1089:23;1085:32;1082:2;;;1135:6;1127;1120:22;1082:2;1179:9;1166:23;1198:33;1225:5;1198:33;:::i;:::-;1250:5;-1:-1:-1;1307:2:1;1292:18;;1279:32;1320:35;1279:32;1320:35;:::i;:::-;1374:7;1364:17;;;1072:315;;;;;:::o;1392:470::-;;;;1538:2;1526:9;1517:7;1513:23;1509:32;1506:2;;;1559:6;1551;1544:22;1506:2;1603:9;1590:23;1622:33;1649:5;1622:33;:::i;:::-;1674:5;-1:-1:-1;1731:2:1;1716:18;;1703:32;1744:35;1703:32;1744:35;:::i;:::-;1496:366;;1798:7;;-1:-1:-1;;;1852:2:1;1837:18;;;;1824:32;;1496:366::o;1867:329::-;;;1993:2;1981:9;1972:7;1968:23;1964:32;1961:2;;;2014:6;2006;1999:22;1961:2;2058:9;2045:23;2077:33;2104:5;2077:33;:::i;:::-;2129:5;-1:-1:-1;2153:37:1;2186:2;2171:18;;2153:37;:::i;:::-;2143:47;;1951:245;;;;;:::o;2201:327::-;;;2330:2;2318:9;2309:7;2305:23;2301:32;2298:2;;;2351:6;2343;2336:22;2298:2;2395:9;2382:23;2414:33;2441:5;2414:33;:::i;:::-;2466:5;2518:2;2503:18;;;;2490:32;;-1:-1:-1;;;2288:240:1:o;2533:192::-;;2642:2;2630:9;2621:7;2617:23;2613:32;2610:2;;;2663:6;2655;2648:22;2610:2;2691:28;2709:9;2691:28;:::i;3020:190::-;;3132:2;3120:9;3111:7;3107:23;3103:32;3100:2;;;3153:6;3145;3138:22;3100:2;-1:-1:-1;3181:23:1;;3090:120;-1:-1:-1;3090:120:1:o;3215:260::-;;;3341:2;3329:9;3320:7;3316:23;3312:32;3309:2;;;3362:6;3354;3347:22;3309:2;3403:9;3390:23;3380:33;;3432:37;3465:2;3454:9;3450:18;3432:37;:::i;3480:316::-;;;;3637:2;3625:9;3616:7;3612:23;3608:32;3605:2;;;3658:6;3650;3643:22;3605:2;3692:9;3686:16;3676:26;;3742:2;3731:9;3727:18;3721:25;3711:35;;3786:2;3775:9;3771:18;3765:25;3755:35;;3595:201;;;;;:::o;3801:203::-;-1:-1:-1;;;;;3965:32:1;;;;3947:51;;3935:2;3920:18;;3902:102::o;4233:607::-;-1:-1:-1;;;;;4592:15:1;;;4574:34;;4639:2;4624:18;;4617:34;;;;4682:2;4667:18;;4660:34;;;;4725:2;4710:18;;4703:34;;;;4774:15;;;4768:3;4753:19;;4746:44;4554:3;4806:19;;4799:35;;;;4523:3;4508:19;;4490:350::o;4845:187::-;5010:14;;5003:22;4985:41;;4973:2;4958:18;;4940:92::o;5271:603::-;;5412:2;5441;5430:9;5423:21;5473:6;5467:13;5516:6;5511:2;5500:9;5496:18;5489:34;5541:4;5554:140;5568:6;5565:1;5562:13;5554:140;;;5663:14;;;5659:23;;5653:30;5629:17;;;5648:2;5625:26;5618:66;5583:10;;5554:140;;;5712:6;5709:1;5706:13;5703:2;;;5782:4;5777:2;5768:6;5757:9;5753:22;5749:31;5742:45;5703:2;-1:-1:-1;5858:2:1;5837:15;-1:-1:-1;;5833:29:1;5818:45;;;;5865:2;5814:54;;5392:482;-1:-1:-1;;;5392:482:1:o;5879:402::-;6081:2;6063:21;;;6120:2;6100:18;;;6093:30;6159:34;6154:2;6139:18;;6132:62;-1:-1:-1;;;6225:2:1;6210:18;;6203:36;6271:3;6256:19;;6053:228::o;6286:401::-;6488:2;6470:21;;;6527:2;6507:18;;;6500:30;6566:34;6561:2;6546:18;;6539:62;-1:-1:-1;;;6632:2:1;6617:18;;6610:35;6677:3;6662:19;;6460:227::o;6692:355::-;6894:2;6876:21;;;6933:2;6913:18;;;6906:30;6972:33;6967:2;6952:18;;6945:61;7038:2;7023:18;;6866:181::o;7052:406::-;7254:2;7236:21;;;7293:2;7273:18;;;7266:30;7332:34;7327:2;7312:18;;7305:62;-1:-1:-1;;;7398:2:1;7383:18;;7376:40;7448:3;7433:19;;7226:232::o;7463:402::-;7665:2;7647:21;;;7704:2;7684:18;;;7677:30;7743:34;7738:2;7723:18;;7716:62;-1:-1:-1;;;7809:2:1;7794:18;;7787:36;7855:3;7840:19;;7637:228::o;7870:351::-;8072:2;8054:21;;;8111:2;8091:18;;;8084:30;8150:29;8145:2;8130:18;;8123:57;8212:2;8197:18;;8044:177::o;8226:351::-;8428:2;8410:21;;;8467:2;8447:18;;;8440:30;8506:29;8501:2;8486:18;;8479:57;8568:2;8553:18;;8400:177::o;8582:340::-;8784:2;8766:21;;;8823:2;8803:18;;;8796:30;-1:-1:-1;;;8857:2:1;8842:18;;8835:46;8913:2;8898:18;;8756:166::o;8927:343::-;9129:2;9111:21;;;9168:2;9148:18;;;9141:30;-1:-1:-1;;;9202:2:1;9187:18;;9180:49;9261:2;9246:18;;9101:169::o;9275:353::-;9477:2;9459:21;;;9516:2;9496:18;;;9489:30;9555:31;9550:2;9535:18;;9528:59;9619:2;9604:18;;9449:179::o;9633:343::-;9835:2;9817:21;;;9874:2;9854:18;;;9847:30;-1:-1:-1;;;9908:2:1;9893:18;;9886:49;9967:2;9952:18;;9807:169::o;9981:355::-;10183:2;10165:21;;;10222:2;10202:18;;;10195:30;10261:33;10256:2;10241:18;;10234:61;10327:2;10312:18;;10155:181::o;10341:356::-;10543:2;10525:21;;;10562:18;;;10555:30;10621:34;10616:2;10601:18;;10594:62;10688:2;10673:18;;10515:182::o;10702:398::-;10904:2;10886:21;;;10943:2;10923:18;;;10916:30;10982:34;10977:2;10962:18;;10955:62;-1:-1:-1;;;11048:2:1;11033:18;;11026:32;11090:3;11075:19;;10876:224::o;11105:397::-;11307:2;11289:21;;;11346:2;11326:18;;;11319:30;11385:34;11380:2;11365:18;;11358:62;-1:-1:-1;;;11451:2:1;11436:18;;11429:31;11492:3;11477:19;;11279:223::o;11507:356::-;11709:2;11691:21;;;11728:18;;;11721:30;11787:34;11782:2;11767:18;;11760:62;11854:2;11839:18;;11681:182::o;11868:397::-;12070:2;12052:21;;;12109:2;12089:18;;;12082:30;12148:34;12143:2;12128:18;;12121:62;-1:-1:-1;;;12214:2:1;12199:18;;12192:31;12255:3;12240:19;;12042:223::o;12270:347::-;12472:2;12454:21;;;12511:2;12491:18;;;12484:30;12550:25;12545:2;12530:18;;12523:53;12608:2;12593:18;;12444:173::o;12622:348::-;12824:2;12806:21;;;12863:2;12843:18;;;12836:30;12902:26;12897:2;12882:18;;12875:54;12961:2;12946:18;;12796:174::o;12975:408::-;13177:2;13159:21;;;13216:2;13196:18;;;13189:30;13255:34;13250:2;13235:18;;13228:62;-1:-1:-1;;;13321:2:1;13306:18;;13299:42;13373:3;13358:19;;13149:234::o;13388:356::-;13590:2;13572:21;;;13609:18;;;13602:30;13668:34;13663:2;13648:18;;13641:62;13735:2;13720:18;;13562:182::o;13749:409::-;13951:2;13933:21;;;13990:2;13970:18;;;13963:30;14029:34;14024:2;14009:18;;14002:62;-1:-1:-1;;;14095:2:1;14080:18;;14073:43;14148:3;14133:19;;13923:235::o;14163:399::-;14365:2;14347:21;;;14404:2;14384:18;;;14377:30;14443:34;14438:2;14423:18;;14416:62;-1:-1:-1;;;14509:2:1;14494:18;;14487:33;14552:3;14537:19;;14337:225::o;14567:177::-;14713:25;;;14701:2;14686:18;;14668:76::o;14749:983::-;;15059:3;15048:9;15044:19;15090:6;15079:9;15072:25;15116:2;15154:6;15149:2;15138:9;15134:18;15127:34;15197:3;15192:2;15181:9;15177:18;15170:31;15221:6;15256;15250:13;15287:6;15279;15272:22;15325:3;15314:9;15310:19;15303:26;;15364:2;15356:6;15352:15;15338:29;;15385:4;15398:195;15412:6;15409:1;15406:13;15398:195;;;15477:13;;-1:-1:-1;;;;;15473:39:1;15461:52;;15568:15;;;;15533:12;;;;15509:1;15427:9;15398:195;;;-1:-1:-1;;;;;;;15649:32:1;;;;15644:2;15629:18;;15622:60;-1:-1:-1;;;15713:3:1;15698:19;15691:35;15610:3;15020:712;-1:-1:-1;;;15020:712:1:o;15737:184::-;15909:4;15897:17;;;;15879:36;;15867:2;15852:18;;15834:87::o;15926:128::-;;15997:1;15993:6;15990:1;15987:13;15984:2;;;16003:18;;:::i;:::-;-1:-1:-1;16039:9:1;;15974:80::o;16059:217::-;;16125:1;16115:2;;-1:-1:-1;;;16150:31:1;;16204:4;16201:1;16194:15;16232:4;16157:1;16222:15;16115:2;-1:-1:-1;16261:9:1;;16105:171::o;16281:168::-;;16387:1;16383;16379:6;16375:14;16372:1;16369:21;16364:1;16357:9;16350:17;16346:45;16343:2;;;16394:18;;:::i;:::-;-1:-1:-1;16434:9:1;;16333:116::o;16454:125::-;;16522:1;16519;16516:8;16513:2;;;16527:18;;:::i;:::-;-1:-1:-1;16564:9:1;;16503:76::o;16584:380::-;16669:1;16659:12;;16716:1;16706:12;;;16727:2;;16781:4;16773:6;16769:17;16759:27;;16727:2;16834;16826:6;16823:14;16803:18;16800:38;16797:2;;;16880:10;16875:3;16871:20;16868:1;16861:31;16915:4;16912:1;16905:15;16943:4;16940:1;16933:15;16797:2;;16639:325;;;:::o;16969:135::-;;-1:-1:-1;;17029:17:1;;17026:2;;;17049:18;;:::i;:::-;-1:-1:-1;17096:1:1;17085:13;;17016:88::o;17109:127::-;17170:10;17165:3;17161:20;17158:1;17151:31;17201:4;17198:1;17191:15;17225:4;17222:1;17215:15;17241:133;-1:-1:-1;;;;;17318:31:1;;17308:42;;17298:2;;17364:1;17361;17354:12;17298:2;17288:86;:::o

Swarm Source

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