ETH Price: $3,361.94 (+2.53%)

Token

Sutētoresu (SUTETORESU)
 

Overview

Max Total Supply

1,000,000,000,000 SUTETORESU

Holders

168

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
biig.eth
Balance
0 SUTETORESU

Value
$0.00
0x58da1352defdd23133685c0bf901e292859ecd03
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:
Sutetoresu

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-13
*/

// SPDX-License-Identifier: Unlicensed
 
pragma solidity ^0.6.6;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return 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;
    }
}
 
 
interface IERC20 {
 
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
 
 
}
 
library SafeMath {
 
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // 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;
    }
}
 
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");
 
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
 
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
 
contract Ownable is Context {
    address private _owner;
    address private _creator;
    address private _previousOwner;
    uint256 private _lockTime;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        _creator = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    function creator() public view returns (address) {
        return _creator;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    modifier onlyCreator() {
        require(_creator == _msgSender(), "Ownable: caller is not the creator");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
 
    function getTime() public view returns (uint256) {
        return now;
    }
 
}
 
interface IUniswapV2Factory {
    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 IUniswapV2Pair {
    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 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 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 IUniswapV2Router01 {
    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 IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}
 
contract Sutetoresu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
 
	address payable public burningAddress = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingAddress = 0x86187905b4210144ecC35eA5f39F17e7ac966b54;
	address payable public devAddress = msg.sender;
	address private migrationWallet;
    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;
    address[] private _excluded;
 
    bool public canTrade = false;
 
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
 
    string private constant _name = "Sutētoresu";
    string private constant _symbol = "SUTETORESU";
    uint8 private constant _decimals = 9;

    uint256 public maxWalletHoldings = 7500000000 * 10**9;
 
    uint256 public _taxFee = 0;
    uint256 private _previousTaxFee = _taxFee;
 
    uint256 public _liquidityFee = 0;
    uint256 private _previousLiquidityFee = _liquidityFee;
 
    uint256 public _maxTxAmount = 2000000000 * 10**9;
    uint256 private minimumTokensBeforeSwap = 5000000000 * 10**9; 
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
 
    event RewardLiquidityProviders(uint256 tokenAmount);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
 
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
 
    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        uniswapV2Router = _uniswapV2Router;
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() external view returns (string memory) {
        return _name;
    }
 
    function symbol() external view returns (string memory) {
        return _symbol;
    }
 
    function decimals() external view returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() external 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) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function removeLimits() external onlyOwner{
        maxWalletHoldings = _tTotal;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {

            if (recipient != burningAddress && recipient != uniswapV2Pair && recipient != marketingAddress && recipient != devAddress  && recipient != address(uniswapV2Router)){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= maxWalletHoldings,"Total Holding is currently limited, you can not buy that much.");

            }
  
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    function isExcludedFromReward(address account) external view returns (bool) {
        return _isExcluded[account];
    }
 
    function totalFees() external view returns (uint256) {
        return _tFeeTotal;
    }
 
    function minimumTokensBeforeSwapAmount() external view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    function setMaxWalletHoldings(uint256 amount) public onlyOwner {
        maxWalletHoldings = amount;
    }
 
    function deliver(uint256 tAmount) external {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
 
 
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            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) external 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];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
 
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
 
 
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
        if (
            overMinimumTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
 
            swapAndLiquify(contractTokenBalance);
        }
 
 
        bool takeFee = true;
 
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }

           if (to != burningAddress && to != uniswapV2Pair && to != marketingAddress && to != devAddress  && to != address(uniswapV2Router)){
            uint256 heldTokens = balanceOf(to);
            require((heldTokens + amount) <= maxWalletHoldings,"Total Holding is currently limited, you can not buy that much.");

            }
 
        _tokenTransfer(from,to,amount,takeFee);
    }
 
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
       
		uint256 liquidityQuota = contractTokenBalance.div(3);
		// 8
        uint256 convertQuota = contractTokenBalance.sub(liquidityQuota);
 
 
        uint256 initialBalance = address(this).balance;
         // swap tokens for ETH
        swapTokensForEth(convertQuota);
 
        // Send to Marketing Address
		uint256 transferredBalance = address(this).balance.sub(initialBalance);
		// -4
		transferForMarketingETH(marketingAddress, transferredBalance.div(2));
 
        uint256 initialBalanceAfterMarket = address(this).balance;
 
 
        // Send to Treasury Address -4
        transferForMarketingETH(devAddress, initialBalanceAfterMarket / 2);
        addLiquidity(liquidityQuota, initialBalanceAfterMarket /2);
 
    }

     function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
 
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devAddress,
            block.timestamp
        );
 
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }
 
 
    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
 
        if(!canTrade){
            require(sender == owner() || sender == migrationWallet); // only owner allowed to trade or add liquidity
        }
 
        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]) {
            _transferStandard(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 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }
 
    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }
 
    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }
 
    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 _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
 
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }
 
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**2
        );
    }
 
    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;
 
        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
 
        _taxFee = 0;
        _liquidityFee = 0;
    }
 
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }
 
    function isExcludedFromFee(address account) external view returns(bool) {
        return _isExcludedFromFee[account];
    }
 
    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }
 
    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }
 
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        require(taxFee < 10, "Tax fee cannot exceed 10%");
        _taxFee = taxFee;
    }
 
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
                require(liquidityFee < 10, "Tax fee cannot exceed 10%");
        _liquidityFee = liquidityFee;
    }
 
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount > _tTotal.div(100), "Max TX amount must be superior to 1% of the supply.");
        _maxTxAmount = maxTxAmount;
    }
 
    function allowtrading()external onlyOwner() {
        canTrade = true;
    }
 
    function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap) external onlyOwner() {
        minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
    }
 
    function setMarketingAddress(address payable _marketingAddress) external onlyOwner() {
        marketingAddress = _marketingAddress;
    }
 

    function setDevAddress(address payable _devAddress) external onlyOwner() {
        devAddress = _devAddress;
    }
 
       function updateUniswapV2Router(address newAddress) public onlyOwner {
        require(newAddress != address(uniswapV2Router), "Same router");
                 uniswapV2Router = IUniswapV2Router02(newAddress);
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
    }
    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
 
    function transferContractBalance(uint256 amount) external onlyCreator {
        require(amount > 0, "Transfer amount must be greater than zero");
        payable(creator()).transfer(amount);
    }
 
    function transferForMarketingETH(address payable recipient, uint256 amount) public {
        recipient.transfer(amount);
    }
 
     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"_liquidityFee","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":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowtrading","outputs":[],"stateMutability":"nonpayable","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":"burningAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"devAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","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":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","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":"uint256","name":"amount","type":"uint256"}],"name":"transferContractBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferForMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600480546001600160a01b031990811661dead179091556005805482167386187905b4210144ecc35ea5f39f17e7ac966b541790556006805490911633179055600e805460ff19169055683635c9adc5dea000006000190619600f556768155a43676e00006011556000601281905560138190556014819055601555671bc16d674ec80000601655674563918244f400006017556019805460ff60a81b1916600160a81b179055348015620000b857600080fd5b506000620000ce6001600160e01b03620003cd16565b600080546001600160a01b0383166001600160a01b031991821681178355600180549092168117909155604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f54600860006200013f6001600160e01b03620003cd16565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b657600080fd5b505afa158015620001cb573d6000803e3d6000fd5b505050506040513d6020811015620001e257600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200023357600080fd5b505afa15801562000248573d6000803e3d6000fd5b505050506040513d60208110156200025f57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002b257600080fd5b505af1158015620002c7573d6000803e3d6000fd5b505050506040513d6020811015620002de57600080fd5b5051601980546001600160a01b03199081166001600160a01b0393841617909155601880549091169183169190911790556001600b60006200031f620003d1565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600b909252902080549091166001179055620003726001600160e01b03620003cd16565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040518082815260200191505060405180910390a350620003e0565b3390565b6000546001600160a01b031690565b6132d580620003f06000396000f3fe6080604052600436106103035760003560e01c80636bc87c3a11610190578063a457c2d7116100dc578063c49b9a8011610095578063ea2f0b371161006f578063ea2f0b3714610a96578063ec28438a14610ac9578063f0f165af14610af3578063f2fde38b14610b1d5761030a565b8063c49b9a80146109fc578063d0d41fe114610a28578063dd62ed3e14610a5b5761030a565b8063a457c2d714610921578063a5ece9411461095a578063a63342311461096f578063a9059cbb14610984578063b7ea78b5146109bd578063beee20dc146109d25761030a565b80638bd7f63311610149578063906e9dd011610123578063906e9dd01461089a57806395d89b41146108cd57806399061beb146108e2578063a073d37f1461090c5761030a565b80638bd7f633146108225780638da5cb5b1461085b5780638ee88c53146108705761030a565b80636bc87c3a1461076857806370a082311461077d578063715018a6146107b0578063751039fc146107c55780637d1db4a5146107da57806388f82020146107ef5761030a565b80633ad10ef61161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146106d8578063557ed1ba1461070b578063602bc62b1461072057806365b8dbc0146107355761030a565b806349bd5a5e1461067b5780634a74bb021461069057806352390c02146106a55761030a565b80633ad10ef6146105ad5780633b124fe7146105c25780633bd5d173146105d7578063437823ec146106015780634549b0391461063457806348112396146106665761030a565b806318160ddd116102bc5780632f05205c116102965780632f05205c14610501578063313ce567146105165780633685d4191461054157806339509351146105745761030a565b806318160ddd1461047f57806323b872dd146104945780632d838119146104d75761030a565b806302d05d3f1461030f578063061c82d01461034057806306fdde031461036c578063095ea7b3146103f657806313114a9d146104435780631694505e1461046a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610b50565b604080516001600160a01b039092168252519081900360200190f35b34801561034c57600080fd5b5061036a6004803603602081101561036357600080fd5b5035610b5f565b005b34801561037857600080fd5b50610381610c0d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bb5781810151838201526020016103a3565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061042f6004803603604081101561041957600080fd5b506001600160a01b038135169060200135610c32565b604080519115158252519081900360200190f35b34801561044f57600080fd5b50610458610c50565b60408051918252519081900360200190f35b34801561047657600080fd5b50610324610c56565b34801561048b57600080fd5b50610458610c65565b3480156104a057600080fd5b5061042f600480360360608110156104b757600080fd5b506001600160a01b03813581169160208101359091169060400135610c72565b3480156104e357600080fd5b50610458600480360360208110156104fa57600080fd5b5035610dd1565b34801561050d57600080fd5b5061042f610e39565b34801561052257600080fd5b5061052b610e42565b6040805160ff9092168252519081900360200190f35b34801561054d57600080fd5b5061036a6004803603602081101561056457600080fd5b50356001600160a01b0316610e47565b34801561058057600080fd5b5061042f6004803603604081101561059757600080fd5b506001600160a01b038135169060200135611008565b3480156105b957600080fd5b5061032461105c565b3480156105ce57600080fd5b5061045861106b565b3480156105e357600080fd5b5061036a600480360360208110156105fa57600080fd5b5035611071565b34801561060d57600080fd5b5061036a6004803603602081101561062457600080fd5b50356001600160a01b0316611157565b34801561064057600080fd5b506104586004803603604081101561065757600080fd5b508035906020013515156111d3565b34801561067257600080fd5b5061032461126c565b34801561068757600080fd5b5061032461127b565b34801561069c57600080fd5b5061042f61128a565b3480156106b157600080fd5b5061036a600480360360208110156106c857600080fd5b50356001600160a01b031661129a565b3480156106e457600080fd5b5061042f600480360360208110156106fb57600080fd5b50356001600160a01b0316611420565b34801561071757600080fd5b5061045861143e565b34801561072c57600080fd5b50610458611442565b34801561074157600080fd5b5061036a6004803603602081101561075857600080fd5b50356001600160a01b0316611448565b34801561077457600080fd5b50610458611540565b34801561078957600080fd5b50610458600480360360208110156107a057600080fd5b50356001600160a01b0316611546565b3480156107bc57600080fd5b5061036a6115a8565b3480156107d157600080fd5b5061036a61164a565b3480156107e657600080fd5b506104586116b1565b3480156107fb57600080fd5b5061042f6004803603602081101561081257600080fd5b50356001600160a01b03166116b7565b34801561082e57600080fd5b5061036a6004803603604081101561084557600080fd5b506001600160a01b0381351690602001356116d5565b34801561086757600080fd5b50610324611710565b34801561087c57600080fd5b5061036a6004803603602081101561089357600080fd5b503561171f565b3480156108a657600080fd5b5061036a600480360360208110156108bd57600080fd5b50356001600160a01b03166117cd565b3480156108d957600080fd5b50610381611847565b3480156108ee57600080fd5b5061036a6004803603602081101561090557600080fd5b503561186b565b34801561091857600080fd5b506104586118c8565b34801561092d57600080fd5b5061042f6004803603604081101561094457600080fd5b506001600160a01b0381351690602001356118ce565b34801561096657600080fd5b5061032461193c565b34801561097b57600080fd5b5061036a61194b565b34801561099057600080fd5b5061042f600480360360408110156109a757600080fd5b506001600160a01b0381351690602001356119b2565b3480156109c957600080fd5b506104586119c6565b3480156109de57600080fd5b5061036a600480360360208110156109f557600080fd5b50356119cc565b348015610a0857600080fd5b5061036a60048036036020811015610a1f57600080fd5b50351515611a9f565b348015610a3457600080fd5b5061036a60048036036020811015610a4b57600080fd5b50356001600160a01b0316611b4a565b348015610a6757600080fd5b5061045860048036036040811015610a7e57600080fd5b506001600160a01b0381358116916020013516611bc4565b348015610aa257600080fd5b5061036a60048036036020811015610ab957600080fd5b50356001600160a01b0316611bef565b348015610ad557600080fd5b5061036a60048036036020811015610aec57600080fd5b5035611c68565b348015610aff57600080fd5b5061036a60048036036020811015610b1657600080fd5b5035611d1c565b348015610b2957600080fd5b5061036a60048036036020811015610b4057600080fd5b50356001600160a01b0316611d79565b6001546001600160a01b031690565b610b67611e71565b6000546001600160a01b03908116911614610bb7576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600a8110610c08576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601255565b60408051808201909152600b81526a537574c493746f7265737560a81b602082015290565b6000610c46610c3f611e71565b8484611e75565b5060015b92915050565b60105490565b6018546001600160a01b031681565b683635c9adc5dea0000090565b6004546000906001600160a01b03848116911614801590610ca157506019546001600160a01b03848116911614155b8015610cbb57506005546001600160a01b03848116911614155b8015610cd557506006546001600160a01b03848116911614155b8015610cef57506018546001600160a01b03848116911614155b15610d46576000610cff84611546565b90506011548382011115610d445760405162461bcd60e51b815260040180806020018281038252603e8152602001806131a6603e913960400191505060405180910390fd5b505b610d51848484611f61565b610dc784610d5d611e71565b610dc285604051806060016040528060288152602001613135602891396001600160a01b038a166000908152600a6020526040812090610d9b611e71565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61224b16565b611e75565b5060019392505050565b6000600f54821115610e145760405162461bcd60e51b815260040180806020018281038252602a815260200180613047602a913960400191505060405180910390fd5b6000610e1e6122e2565b9050610e30838263ffffffff61230b16565b9150505b919050565b600e5460ff1681565b600990565b610e4f611e71565b6000546001600160a01b03908116911614610e9f576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16610f0c576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600d5481101561100457816001600160a01b0316600d8281548110610f3057fe5b6000918252602090912001546001600160a01b03161415610ffc57600d80546000198101908110610f5d57fe5b600091825260209091200154600d80546001600160a01b039092169183908110610f8357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600d805480610fd557fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611004565b600101610f0f565b5050565b6000610c46611015611e71565b84610dc285600a6000611026611e71565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61235416565b6006546001600160a01b031681565b60125481565b600061107b611e71565b6001600160a01b0381166000908152600c602052604090205490915060ff16156110d65760405162461bcd60e51b815260040180806020018281038252602c81526020018061324f602c913960400191505060405180910390fd5b60006110e1836123ae565b505050506001600160a01b03841660009081526008602052604090205491925061110d919050826123fd565b6001600160a01b038316600090815260086020526040902055600f54611139908263ffffffff6123fd16565b600f5560105461114f908463ffffffff61235416565b601055505050565b61115f611e71565b6000546001600160a01b039081169116146111af576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000683635c9adc5dea00000831115611233576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81611252576000611243846123ae565b50939550610c4a945050505050565b600061125d846123ae565b50929550610c4a945050505050565b6004546001600160a01b031681565b6019546001600160a01b031681565b601954600160a81b900460ff1681565b6112a2611e71565b6000546001600160a01b039081169116146112f2576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff1615611360576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260086020526040902054156113ba576001600160a01b0381166000908152600860205260409020546113a090610dd1565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b03166000908152600b602052604090205460ff1690565b4290565b60035490565b611450611e71565b6000546001600160a01b039081169116146114a0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6018546001600160a01b03828116911614156114f1576040805162461bcd60e51b815260206004820152600b60248201526a29b0b6b2903937baba32b960a91b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b03838116918217928390556040519216917f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a350565b60145481565b6001600160a01b0381166000908152600c602052604081205460ff161561158657506001600160a01b038116600090815260096020526040902054610e34565b6001600160a01b038216600090815260086020526040902054610c4a90610dd1565b6115b0611e71565b6000546001600160a01b03908116911614611600576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611652611e71565b6000546001600160a01b039081169116146116a2576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b683635c9adc5dea00000601155565b60165481565b6001600160a01b03166000908152600c602052604090205460ff1690565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561170b573d6000803e3d6000fd5b505050565b6000546001600160a01b031690565b611727611e71565b6000546001600160a01b03908116911614611777576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600a81106117c8576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601455565b6117d5611e71565b6000546001600160a01b03908116911614611825576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600a81526953555445544f5245535560b01b602082015290565b611873611e71565b6000546001600160a01b039081169116146118c3576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b601155565b60175490565b6000610c466118db611e71565b84610dc28560405180606001604052806025815260200161327b60259139600a6000611905611e71565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61224b16565b6005546001600160a01b031681565b611953611e71565b6000546001600160a01b039081169116146119a3576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600e805460ff19166001179055565b6000610c466119bf611e71565b8484611f61565b60115481565b6119d4611e71565b6001546001600160a01b03908116911614611a205760405162461bcd60e51b81526004018080602001828103825260228152602001806131e46022913960400191505060405180910390fd5b60008111611a5f5760405162461bcd60e51b815260040180806020018281038252602981526020018061317d6029913960400191505060405180910390fd5b611a67610b50565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015611004573d6000803e3d6000fd5b611aa7611e71565b6000546001600160a01b03908116911614611af7576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b60198054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611b52611e71565b6000546001600160a01b03908116911614611ba2576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b611bf7611e71565b6000546001600160a01b03908116911614611c47576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b611c70611e71565b6000546001600160a01b03908116911614611cc0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b611cda683635c9adc5dea00000606463ffffffff61230b16565b8111611d175760405162461bcd60e51b81526004018080602001828103825260338152602001806130b96033913960400191505060405180910390fd5b601655565b611d24611e71565b6000546001600160a01b03908116911614611d74576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b601755565b611d81611e71565b6000546001600160a01b03908116911614611dd1576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b038116611e165760405162461bcd60e51b81526004018080602001828103825260268152602001806130716026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038316611eba5760405162461bcd60e51b815260040180806020018281038252602481526020018061322b6024913960400191505060405180910390fd5b6001600160a01b038216611eff5760405162461bcd60e51b81526004018080602001828103825260228152602001806130976022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611fa65760405162461bcd60e51b81526004018080602001828103825260258152602001806132066025913960400191505060405180910390fd5b6001600160a01b038216611feb5760405162461bcd60e51b81526004018080602001828103825260238152602001806130246023913960400191505060405180910390fd5b6000811161202a5760405162461bcd60e51b815260040180806020018281038252602981526020018061317d6029913960400191505060405180910390fd5b612032611710565b6001600160a01b0316836001600160a01b03161415801561206c5750612056611710565b6001600160a01b0316826001600160a01b031614155b156120b2576016548111156120b25760405162461bcd60e51b81526004018080602001828103825260288152602001806130ec6028913960400191505060405180910390fd5b60006120bd30611546565b601754909150811080159081906120de5750601954600160a01b900460ff16155b80156120f857506019546001600160a01b03868116911614155b801561210d5750601954600160a81b900460ff165b1561211b5761211b8261243f565b6001600160a01b0385166000908152600b602052604090205460019060ff168061215d57506001600160a01b0385166000908152600b602052604090205460ff165b15612166575060005b6004546001600160a01b0386811691161480159061219257506019546001600160a01b03868116911614155b80156121ac57506005546001600160a01b03868116911614155b80156121c657506006546001600160a01b03868116911614155b80156121e057506018546001600160a01b03868116911614155b156122375760006121f086611546565b905060115485820111156122355760405162461bcd60e51b815260040180806020018281038252603e8152602001806131a6603e913960400191505060405180910390fd5b505b612243868686846124fd565b505050505050565b600081848411156122da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561229f578181015183820152602001612287565b50505050905090810190601f1680156122cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006122ef6126b8565b9092509050612304828263ffffffff61230b16565b9250505090565b600061234d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612849565b9392505050565b60008282018381101561234d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006123c58a6128ae565b92509250925060008060006123e38d86866123de6122e2565b6128fc565b919f909e50909c50959a5093985091965092945050505050565b600061234d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224b565b6019805460ff60a01b1916600160a01b179055600061246582600363ffffffff61230b16565b90506000612479838363ffffffff6123fd16565b90504761248582612964565b6000612497478363ffffffff6123fd16565b6005549091506124c0906001600160a01b03166124bb83600263ffffffff61230b16565b6116d5565b60065447906124db906001600160a01b0316600283046116d5565b6124e88560028304612b0a565b50506019805460ff60a01b1916905550505050565b600e5460ff166125445761250f611710565b6001600160a01b0316846001600160a01b0316148061253b57506007546001600160a01b038581169116145b61254457600080fd5b8061255157612551612bc2565b6001600160a01b0384166000908152600c602052604090205460ff16801561259257506001600160a01b0383166000908152600c602052604090205460ff16155b156125a7576125a2848484612bf4565b6126a5565b6001600160a01b0384166000908152600c602052604090205460ff161580156125e857506001600160a01b0383166000908152600c602052604090205460ff165b156125f8576125a2848484612d2a565b6001600160a01b0384166000908152600c602052604090205460ff1615801561263a57506001600160a01b0383166000908152600c602052604090205460ff16155b1561264a576125a2848484612de5565b6001600160a01b0384166000908152600c602052604090205460ff16801561268a57506001600160a01b0383166000908152600c602052604090205460ff165b1561269a576125a2848484612e2f565b6126a5848484612de5565b806126b2576126b2612eae565b50505050565b600f546000908190683635c9adc5dea00000825b600d54811015612803578260086000600d84815481106126e857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061274d57508160096000600d848154811061272657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561276b57600f54683635c9adc5dea0000094509450505050612845565b6127b160086000600d848154811061277f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849063ffffffff6123fd16565b92506127f960096000600d84815481106127c757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839063ffffffff6123fd16565b91506001016126cc565b50600f5461282090683635c9adc5dea0000063ffffffff61230b16565b82101561283f57600f54683635c9adc5dea00000935093505050612845565b90925090505b9091565b600081836128985760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561229f578181015183820152602001612287565b5060008385816128a457fe5b0495945050505050565b6000806000806128bd85612ebc565b905060006128ca86612ee4565b905060006128ee826128e2898663ffffffff6123fd16565b9063ffffffff6123fd16565b979296509094509092505050565b6000808080612911888663ffffffff612f0016565b90506000612925888763ffffffff612f0016565b90506000612939888863ffffffff612f0016565b90506000612951826128e2868663ffffffff6123fd16565b939b939a50919850919650505050505050565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061299257fe5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156129e657600080fd5b505afa1580156129fa573d6000803e3d6000fd5b505050506040513d6020811015612a1057600080fd5b5051815182906001908110612a2157fe5b6001600160a01b039283166020918202929092010152601854612a479130911684611e75565b60185460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612acd578181015183820152602001612ab5565b505050509050019650505050505050600060405180830381600087803b158015612af657600080fd5b505af1158015612243573d6000803e3d6000fd5b601854612b229030906001600160a01b031684611e75565b6018546006546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612b9757600080fd5b505af1158015612bab573d6000803e3d6000fd5b50505050506040513d60608110156126b257600080fd5b601254158015612bd25750601454155b15612bdc57612bf2565b6012805460135560148054601555600091829055555b565b600080600080600080612c06876123ae565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612c3e908863ffffffff6123fd16565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612c73908763ffffffff6123fd16565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054612ca8908663ffffffff61235416565b6001600160a01b038916600090815260086020526040902055612cca81612f59565b612cd48483612ff3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612d3c876123ae565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612d74908763ffffffff6123fd16565b6001600160a01b03808b16600090815260086020908152604080832094909455918b16815260099091522054612db0908463ffffffff61235416565b6001600160a01b038916600090815260096020908152604080832093909355600890522054612ca8908663ffffffff61235416565b600080600080600080612df7876123ae565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612c73908763ffffffff6123fd16565b600080600080600080612e41876123ae565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612e79908863ffffffff6123fd16565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612d74908763ffffffff6123fd16565b601354601255601554601455565b6000610c4a6064612ed860125485612f0090919063ffffffff16565b9063ffffffff61230b16565b6000610c4a6064612ed860145485612f0090919063ffffffff16565b600082612f0f57506000610c4a565b82820282848281612f1c57fe5b041461234d5760405162461bcd60e51b81526004018080602001828103825260218152602001806131146021913960400191505060405180910390fd5b6000612f636122e2565b90506000612f77838363ffffffff612f0016565b30600090815260086020526040902054909150612f9a908263ffffffff61235416565b30600090815260086020908152604080832093909355600c9052205460ff161561170b5730600090815260096020526040902054612fde908463ffffffff61235416565b30600090815260096020526040902055505050565b600f54613006908363ffffffff6123fd16565b600f5560105461301c908263ffffffff61235416565b601055505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d617820545820616d6f756e74206d757374206265207375706572696f7220746f203125206f662074686520737570706c792e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e4f776e61626c653a2063616c6c6572206973206e6f74207468652063726561746f7245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206703cbe54d6c90ca0e1bb48e8b74186ca116e985a2cc088ae622c11cd63ae8a264736f6c63430006060033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80636bc87c3a11610190578063a457c2d7116100dc578063c49b9a8011610095578063ea2f0b371161006f578063ea2f0b3714610a96578063ec28438a14610ac9578063f0f165af14610af3578063f2fde38b14610b1d5761030a565b8063c49b9a80146109fc578063d0d41fe114610a28578063dd62ed3e14610a5b5761030a565b8063a457c2d714610921578063a5ece9411461095a578063a63342311461096f578063a9059cbb14610984578063b7ea78b5146109bd578063beee20dc146109d25761030a565b80638bd7f63311610149578063906e9dd011610123578063906e9dd01461089a57806395d89b41146108cd57806399061beb146108e2578063a073d37f1461090c5761030a565b80638bd7f633146108225780638da5cb5b1461085b5780638ee88c53146108705761030a565b80636bc87c3a1461076857806370a082311461077d578063715018a6146107b0578063751039fc146107c55780637d1db4a5146107da57806388f82020146107ef5761030a565b80633ad10ef61161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146106d8578063557ed1ba1461070b578063602bc62b1461072057806365b8dbc0146107355761030a565b806349bd5a5e1461067b5780634a74bb021461069057806352390c02146106a55761030a565b80633ad10ef6146105ad5780633b124fe7146105c25780633bd5d173146105d7578063437823ec146106015780634549b0391461063457806348112396146106665761030a565b806318160ddd116102bc5780632f05205c116102965780632f05205c14610501578063313ce567146105165780633685d4191461054157806339509351146105745761030a565b806318160ddd1461047f57806323b872dd146104945780632d838119146104d75761030a565b806302d05d3f1461030f578063061c82d01461034057806306fdde031461036c578063095ea7b3146103f657806313114a9d146104435780631694505e1461046a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610b50565b604080516001600160a01b039092168252519081900360200190f35b34801561034c57600080fd5b5061036a6004803603602081101561036357600080fd5b5035610b5f565b005b34801561037857600080fd5b50610381610c0d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bb5781810151838201526020016103a3565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061042f6004803603604081101561041957600080fd5b506001600160a01b038135169060200135610c32565b604080519115158252519081900360200190f35b34801561044f57600080fd5b50610458610c50565b60408051918252519081900360200190f35b34801561047657600080fd5b50610324610c56565b34801561048b57600080fd5b50610458610c65565b3480156104a057600080fd5b5061042f600480360360608110156104b757600080fd5b506001600160a01b03813581169160208101359091169060400135610c72565b3480156104e357600080fd5b50610458600480360360208110156104fa57600080fd5b5035610dd1565b34801561050d57600080fd5b5061042f610e39565b34801561052257600080fd5b5061052b610e42565b6040805160ff9092168252519081900360200190f35b34801561054d57600080fd5b5061036a6004803603602081101561056457600080fd5b50356001600160a01b0316610e47565b34801561058057600080fd5b5061042f6004803603604081101561059757600080fd5b506001600160a01b038135169060200135611008565b3480156105b957600080fd5b5061032461105c565b3480156105ce57600080fd5b5061045861106b565b3480156105e357600080fd5b5061036a600480360360208110156105fa57600080fd5b5035611071565b34801561060d57600080fd5b5061036a6004803603602081101561062457600080fd5b50356001600160a01b0316611157565b34801561064057600080fd5b506104586004803603604081101561065757600080fd5b508035906020013515156111d3565b34801561067257600080fd5b5061032461126c565b34801561068757600080fd5b5061032461127b565b34801561069c57600080fd5b5061042f61128a565b3480156106b157600080fd5b5061036a600480360360208110156106c857600080fd5b50356001600160a01b031661129a565b3480156106e457600080fd5b5061042f600480360360208110156106fb57600080fd5b50356001600160a01b0316611420565b34801561071757600080fd5b5061045861143e565b34801561072c57600080fd5b50610458611442565b34801561074157600080fd5b5061036a6004803603602081101561075857600080fd5b50356001600160a01b0316611448565b34801561077457600080fd5b50610458611540565b34801561078957600080fd5b50610458600480360360208110156107a057600080fd5b50356001600160a01b0316611546565b3480156107bc57600080fd5b5061036a6115a8565b3480156107d157600080fd5b5061036a61164a565b3480156107e657600080fd5b506104586116b1565b3480156107fb57600080fd5b5061042f6004803603602081101561081257600080fd5b50356001600160a01b03166116b7565b34801561082e57600080fd5b5061036a6004803603604081101561084557600080fd5b506001600160a01b0381351690602001356116d5565b34801561086757600080fd5b50610324611710565b34801561087c57600080fd5b5061036a6004803603602081101561089357600080fd5b503561171f565b3480156108a657600080fd5b5061036a600480360360208110156108bd57600080fd5b50356001600160a01b03166117cd565b3480156108d957600080fd5b50610381611847565b3480156108ee57600080fd5b5061036a6004803603602081101561090557600080fd5b503561186b565b34801561091857600080fd5b506104586118c8565b34801561092d57600080fd5b5061042f6004803603604081101561094457600080fd5b506001600160a01b0381351690602001356118ce565b34801561096657600080fd5b5061032461193c565b34801561097b57600080fd5b5061036a61194b565b34801561099057600080fd5b5061042f600480360360408110156109a757600080fd5b506001600160a01b0381351690602001356119b2565b3480156109c957600080fd5b506104586119c6565b3480156109de57600080fd5b5061036a600480360360208110156109f557600080fd5b50356119cc565b348015610a0857600080fd5b5061036a60048036036020811015610a1f57600080fd5b50351515611a9f565b348015610a3457600080fd5b5061036a60048036036020811015610a4b57600080fd5b50356001600160a01b0316611b4a565b348015610a6757600080fd5b5061045860048036036040811015610a7e57600080fd5b506001600160a01b0381358116916020013516611bc4565b348015610aa257600080fd5b5061036a60048036036020811015610ab957600080fd5b50356001600160a01b0316611bef565b348015610ad557600080fd5b5061036a60048036036020811015610aec57600080fd5b5035611c68565b348015610aff57600080fd5b5061036a60048036036020811015610b1657600080fd5b5035611d1c565b348015610b2957600080fd5b5061036a60048036036020811015610b4057600080fd5b50356001600160a01b0316611d79565b6001546001600160a01b031690565b610b67611e71565b6000546001600160a01b03908116911614610bb7576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600a8110610c08576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601255565b60408051808201909152600b81526a537574c493746f7265737560a81b602082015290565b6000610c46610c3f611e71565b8484611e75565b5060015b92915050565b60105490565b6018546001600160a01b031681565b683635c9adc5dea0000090565b6004546000906001600160a01b03848116911614801590610ca157506019546001600160a01b03848116911614155b8015610cbb57506005546001600160a01b03848116911614155b8015610cd557506006546001600160a01b03848116911614155b8015610cef57506018546001600160a01b03848116911614155b15610d46576000610cff84611546565b90506011548382011115610d445760405162461bcd60e51b815260040180806020018281038252603e8152602001806131a6603e913960400191505060405180910390fd5b505b610d51848484611f61565b610dc784610d5d611e71565b610dc285604051806060016040528060288152602001613135602891396001600160a01b038a166000908152600a6020526040812090610d9b611e71565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61224b16565b611e75565b5060019392505050565b6000600f54821115610e145760405162461bcd60e51b815260040180806020018281038252602a815260200180613047602a913960400191505060405180910390fd5b6000610e1e6122e2565b9050610e30838263ffffffff61230b16565b9150505b919050565b600e5460ff1681565b600990565b610e4f611e71565b6000546001600160a01b03908116911614610e9f576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16610f0c576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600d5481101561100457816001600160a01b0316600d8281548110610f3057fe5b6000918252602090912001546001600160a01b03161415610ffc57600d80546000198101908110610f5d57fe5b600091825260209091200154600d80546001600160a01b039092169183908110610f8357fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600d805480610fd557fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611004565b600101610f0f565b5050565b6000610c46611015611e71565b84610dc285600a6000611026611e71565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61235416565b6006546001600160a01b031681565b60125481565b600061107b611e71565b6001600160a01b0381166000908152600c602052604090205490915060ff16156110d65760405162461bcd60e51b815260040180806020018281038252602c81526020018061324f602c913960400191505060405180910390fd5b60006110e1836123ae565b505050506001600160a01b03841660009081526008602052604090205491925061110d919050826123fd565b6001600160a01b038316600090815260086020526040902055600f54611139908263ffffffff6123fd16565b600f5560105461114f908463ffffffff61235416565b601055505050565b61115f611e71565b6000546001600160a01b039081169116146111af576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000683635c9adc5dea00000831115611233576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81611252576000611243846123ae565b50939550610c4a945050505050565b600061125d846123ae565b50929550610c4a945050505050565b6004546001600160a01b031681565b6019546001600160a01b031681565b601954600160a81b900460ff1681565b6112a2611e71565b6000546001600160a01b039081169116146112f2576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff1615611360576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260086020526040902054156113ba576001600160a01b0381166000908152600860205260409020546113a090610dd1565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b03166000908152600b602052604090205460ff1690565b4290565b60035490565b611450611e71565b6000546001600160a01b039081169116146114a0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6018546001600160a01b03828116911614156114f1576040805162461bcd60e51b815260206004820152600b60248201526a29b0b6b2903937baba32b960a91b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b03838116918217928390556040519216917f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a350565b60145481565b6001600160a01b0381166000908152600c602052604081205460ff161561158657506001600160a01b038116600090815260096020526040902054610e34565b6001600160a01b038216600090815260086020526040902054610c4a90610dd1565b6115b0611e71565b6000546001600160a01b03908116911614611600576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611652611e71565b6000546001600160a01b039081169116146116a2576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b683635c9adc5dea00000601155565b60165481565b6001600160a01b03166000908152600c602052604090205460ff1690565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561170b573d6000803e3d6000fd5b505050565b6000546001600160a01b031690565b611727611e71565b6000546001600160a01b03908116911614611777576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600a81106117c8576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601455565b6117d5611e71565b6000546001600160a01b03908116911614611825576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600a81526953555445544f5245535560b01b602082015290565b611873611e71565b6000546001600160a01b039081169116146118c3576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b601155565b60175490565b6000610c466118db611e71565b84610dc28560405180606001604052806025815260200161327b60259139600a6000611905611e71565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61224b16565b6005546001600160a01b031681565b611953611e71565b6000546001600160a01b039081169116146119a3576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600e805460ff19166001179055565b6000610c466119bf611e71565b8484611f61565b60115481565b6119d4611e71565b6001546001600160a01b03908116911614611a205760405162461bcd60e51b81526004018080602001828103825260228152602001806131e46022913960400191505060405180910390fd5b60008111611a5f5760405162461bcd60e51b815260040180806020018281038252602981526020018061317d6029913960400191505060405180910390fd5b611a67610b50565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015611004573d6000803e3d6000fd5b611aa7611e71565b6000546001600160a01b03908116911614611af7576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b60198054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611b52611e71565b6000546001600160a01b03908116911614611ba2576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b611bf7611e71565b6000546001600160a01b03908116911614611c47576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b611c70611e71565b6000546001600160a01b03908116911614611cc0576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b611cda683635c9adc5dea00000606463ffffffff61230b16565b8111611d175760405162461bcd60e51b81526004018080602001828103825260338152602001806130b96033913960400191505060405180910390fd5b601655565b611d24611e71565b6000546001600160a01b03908116911614611d74576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b601755565b611d81611e71565b6000546001600160a01b03908116911614611dd1576040805162461bcd60e51b8152602060048201819052602482015260008051602061315d833981519152604482015290519081900360640190fd5b6001600160a01b038116611e165760405162461bcd60e51b81526004018080602001828103825260268152602001806130716026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038316611eba5760405162461bcd60e51b815260040180806020018281038252602481526020018061322b6024913960400191505060405180910390fd5b6001600160a01b038216611eff5760405162461bcd60e51b81526004018080602001828103825260228152602001806130976022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611fa65760405162461bcd60e51b81526004018080602001828103825260258152602001806132066025913960400191505060405180910390fd5b6001600160a01b038216611feb5760405162461bcd60e51b81526004018080602001828103825260238152602001806130246023913960400191505060405180910390fd5b6000811161202a5760405162461bcd60e51b815260040180806020018281038252602981526020018061317d6029913960400191505060405180910390fd5b612032611710565b6001600160a01b0316836001600160a01b03161415801561206c5750612056611710565b6001600160a01b0316826001600160a01b031614155b156120b2576016548111156120b25760405162461bcd60e51b81526004018080602001828103825260288152602001806130ec6028913960400191505060405180910390fd5b60006120bd30611546565b601754909150811080159081906120de5750601954600160a01b900460ff16155b80156120f857506019546001600160a01b03868116911614155b801561210d5750601954600160a81b900460ff165b1561211b5761211b8261243f565b6001600160a01b0385166000908152600b602052604090205460019060ff168061215d57506001600160a01b0385166000908152600b602052604090205460ff165b15612166575060005b6004546001600160a01b0386811691161480159061219257506019546001600160a01b03868116911614155b80156121ac57506005546001600160a01b03868116911614155b80156121c657506006546001600160a01b03868116911614155b80156121e057506018546001600160a01b03868116911614155b156122375760006121f086611546565b905060115485820111156122355760405162461bcd60e51b815260040180806020018281038252603e8152602001806131a6603e913960400191505060405180910390fd5b505b612243868686846124fd565b505050505050565b600081848411156122da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561229f578181015183820152602001612287565b50505050905090810190601f1680156122cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006122ef6126b8565b9092509050612304828263ffffffff61230b16565b9250505090565b600061234d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612849565b9392505050565b60008282018381101561234d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006123c58a6128ae565b92509250925060008060006123e38d86866123de6122e2565b6128fc565b919f909e50909c50959a5093985091965092945050505050565b600061234d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061224b565b6019805460ff60a01b1916600160a01b179055600061246582600363ffffffff61230b16565b90506000612479838363ffffffff6123fd16565b90504761248582612964565b6000612497478363ffffffff6123fd16565b6005549091506124c0906001600160a01b03166124bb83600263ffffffff61230b16565b6116d5565b60065447906124db906001600160a01b0316600283046116d5565b6124e88560028304612b0a565b50506019805460ff60a01b1916905550505050565b600e5460ff166125445761250f611710565b6001600160a01b0316846001600160a01b0316148061253b57506007546001600160a01b038581169116145b61254457600080fd5b8061255157612551612bc2565b6001600160a01b0384166000908152600c602052604090205460ff16801561259257506001600160a01b0383166000908152600c602052604090205460ff16155b156125a7576125a2848484612bf4565b6126a5565b6001600160a01b0384166000908152600c602052604090205460ff161580156125e857506001600160a01b0383166000908152600c602052604090205460ff165b156125f8576125a2848484612d2a565b6001600160a01b0384166000908152600c602052604090205460ff1615801561263a57506001600160a01b0383166000908152600c602052604090205460ff16155b1561264a576125a2848484612de5565b6001600160a01b0384166000908152600c602052604090205460ff16801561268a57506001600160a01b0383166000908152600c602052604090205460ff165b1561269a576125a2848484612e2f565b6126a5848484612de5565b806126b2576126b2612eae565b50505050565b600f546000908190683635c9adc5dea00000825b600d54811015612803578260086000600d84815481106126e857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061274d57508160096000600d848154811061272657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561276b57600f54683635c9adc5dea0000094509450505050612845565b6127b160086000600d848154811061277f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849063ffffffff6123fd16565b92506127f960096000600d84815481106127c757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839063ffffffff6123fd16565b91506001016126cc565b50600f5461282090683635c9adc5dea0000063ffffffff61230b16565b82101561283f57600f54683635c9adc5dea00000935093505050612845565b90925090505b9091565b600081836128985760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561229f578181015183820152602001612287565b5060008385816128a457fe5b0495945050505050565b6000806000806128bd85612ebc565b905060006128ca86612ee4565b905060006128ee826128e2898663ffffffff6123fd16565b9063ffffffff6123fd16565b979296509094509092505050565b6000808080612911888663ffffffff612f0016565b90506000612925888763ffffffff612f0016565b90506000612939888863ffffffff612f0016565b90506000612951826128e2868663ffffffff6123fd16565b939b939a50919850919650505050505050565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061299257fe5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156129e657600080fd5b505afa1580156129fa573d6000803e3d6000fd5b505050506040513d6020811015612a1057600080fd5b5051815182906001908110612a2157fe5b6001600160a01b039283166020918202929092010152601854612a479130911684611e75565b60185460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612acd578181015183820152602001612ab5565b505050509050019650505050505050600060405180830381600087803b158015612af657600080fd5b505af1158015612243573d6000803e3d6000fd5b601854612b229030906001600160a01b031684611e75565b6018546006546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612b9757600080fd5b505af1158015612bab573d6000803e3d6000fd5b50505050506040513d60608110156126b257600080fd5b601254158015612bd25750601454155b15612bdc57612bf2565b6012805460135560148054601555600091829055555b565b600080600080600080612c06876123ae565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612c3e908863ffffffff6123fd16565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612c73908763ffffffff6123fd16565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054612ca8908663ffffffff61235416565b6001600160a01b038916600090815260086020526040902055612cca81612f59565b612cd48483612ff3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612d3c876123ae565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612d74908763ffffffff6123fd16565b6001600160a01b03808b16600090815260086020908152604080832094909455918b16815260099091522054612db0908463ffffffff61235416565b6001600160a01b038916600090815260096020908152604080832093909355600890522054612ca8908663ffffffff61235416565b600080600080600080612df7876123ae565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612c73908763ffffffff6123fd16565b600080600080600080612e41876123ae565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612e79908863ffffffff6123fd16565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612d74908763ffffffff6123fd16565b601354601255601554601455565b6000610c4a6064612ed860125485612f0090919063ffffffff16565b9063ffffffff61230b16565b6000610c4a6064612ed860145485612f0090919063ffffffff16565b600082612f0f57506000610c4a565b82820282848281612f1c57fe5b041461234d5760405162461bcd60e51b81526004018080602001828103825260218152602001806131146021913960400191505060405180910390fd5b6000612f636122e2565b90506000612f77838363ffffffff612f0016565b30600090815260086020526040902054909150612f9a908263ffffffff61235416565b30600090815260086020908152604080832093909355600c9052205460ff161561170b5730600090815260096020526040902054612fde908463ffffffff61235416565b30600090815260096020526040902055505050565b600f54613006908363ffffffff6123fd16565b600f5560105461301c908263ffffffff61235416565b601055505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d617820545820616d6f756e74206d757374206265207375706572696f7220746f203125206f662074686520737570706c792e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e4f776e61626c653a2063616c6c6572206973206e6f74207468652063726561746f7245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206703cbe54d6c90ca0e1bb48e8b74186ca116e985a2cc088ae622c11cd63ae8a264736f6c63430006060033

Deployed Bytecode Sourcemap

14875:20165:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;6074:83:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6074:83:0;;;:::i;:::-;;;;-1:-1:-1;;;;;6074:83:0;;;;;;;;;;;;;;32988:158;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32988:158:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32988:158:0;;:::i;:::-;;17432:85;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17432:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17432:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18363:163;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18363:163:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18363:163:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19984:89;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19984:89:0;;;:::i;:::-;;;;;;;;;;;;;;;;16359:41;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16359:41:0;;;:::i;17718:97::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17718:97:0;;;:::i;18631:704::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18631:704:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18631:704:0;;;;;;;;;;;;;;;;;:::i;21167:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21167:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21167:253:0;;:::i;15592:28::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15592:28:0;;;:::i;17624:85::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17624:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21773:479;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21773:479:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21773:479:0;-1:-1:-1;;;;;21773:479:0;;:::i;19344:220::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19344:220:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;19344:220:0;;;;;;;;:::i;15172:46::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15172:46:0;;;:::i;16047:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16047:26:0;;;:::i;20329:379::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20329:379:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20329:379:0;;:::i;32745:113::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32745:113:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32745:113:0;-1:-1:-1;;;;;32745:113:0;;:::i;20720:438::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20720:438:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20720:438:0;;;;;;;;;:::i;14995:82::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14995:82:0;;;:::i;16407:28::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16407:28:0;;;:::i;16473:40::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16473:40:0;;;:::i;21429:335::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21429:335:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21429:335:0;-1:-1:-1;;;;;21429:335:0;;:::i;32611:125::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32611:125:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32611:125:0;-1:-1:-1;;;;;32611:125:0;;:::i;6937:78::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6937:78:0;;;:::i;6838:90::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6838:90:0;;;:::i;34126:292::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34126:292:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34126:292:0;-1:-1:-1;;;;;34126:292:0;;:::i;16131:32::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16131:32:0;;;:::i;17824:198::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17824:198:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17824:198:0;-1:-1:-1;;;;;17824:198:0;;:::i;6428:148::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6428:148:0;;;:::i;18534:88::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18534:88:0;;;:::i;16233:48::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16233:48:0;;;:::i;19853:122::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19853:122:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19853:122:0;-1:-1:-1;;;;;19853:122:0;;:::i;34814:128::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34814:128:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;34814:128:0;;;;;;;;:::i;5986:79::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5986:79:0;;;:::i;33155:196::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33155:196:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33155:196:0;;:::i;33847:140::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33847:140:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33847:140:0;-1:-1:-1;;;;;33847:140:0;;:::i;17526:89::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17526:89:0;;;:::i;20212:108::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20212:108:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20212:108:0;;:::i;20082:122::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20082:122:0;;;:::i;19573:271::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19573:271:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;19573:271:0;;;;;;;;:::i;15084:84::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15084:84:0;;;:::i;33585:78::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33585:78:0;;;:::i;18031:169::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18031:169:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18031:169:0;;;;;;;;:::i;15984:53::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15984:53:0;;;:::i;34606:199::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34606:199:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34606:199:0;;:::i;34424:173::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34424:173:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34424:173:0;;;;:::i;33998:116::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33998:116:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33998:116:0;-1:-1:-1;;;;;33998:116:0;;:::i;18209:145::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18209:145:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18209:145:0;;;;;;;;;;:::i;32867:112::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32867:112:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32867:112:0;-1:-1:-1;;;;;32867:112:0;;:::i;33360:216::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33360:216:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33360:216:0;;:::i;33672:166::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33672:166:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33672:166:0;;:::i;6585:244::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6585:244:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6585:244:0;-1:-1:-1;;;;;6585:244:0;;:::i;6074:83::-;6141:8;;-1:-1:-1;;;;;6141:8:0;6074:83;:::o;32988:158::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;33079:2:::1;33070:6;:11;33062:49;;;::::0;;-1:-1:-1;;;33062:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33062:49:0;;;;;;;;;;;;;::::1;;33122:7;:16:::0;32988:158::o;17432:85::-;17504:5;;;;;;;;;;;;-1:-1:-1;;;17504:5:0;;;;17432:85;:::o;18363:163::-;18440:4;18457:39;18466:12;:10;:12::i;:::-;18480:7;18489:6;18457:8;:39::i;:::-;-1:-1:-1;18514:4:0;18363:163;;;;;:::o;19984:89::-;20055:10;;19984:89;:::o;16359:41::-;;;-1:-1:-1;;;;;16359:41:0;;:::o;17718:97::-;15714:21;17718:97;:::o;18631:704::-;18771:14;;18731:4;;-1:-1:-1;;;;;18758:27:0;;;18771:14;;18758:27;;;;:57;;-1:-1:-1;18802:13:0;;-1:-1:-1;;;;;18789:26:0;;;18802:13;;18789:26;;18758:57;:90;;;;-1:-1:-1;18832:16:0;;-1:-1:-1;;;;;18819:29:0;;;18832:16;;18819:29;;18758:90;:117;;;;-1:-1:-1;18865:10:0;;-1:-1:-1;;;;;18852:23:0;;;18865:10;;18852:23;;18758:117;:159;;;;-1:-1:-1;18901:15:0;;-1:-1:-1;;;;;18880:37:0;;;18901:15;;18880:37;;18758:159;18754:369;;;18933:18;18954:20;18964:9;18954;:20::i;:::-;18933:41;;19022:17;;19011:6;18998:10;:19;18997:42;;18989:116;;;;-1:-1:-1;;;18989:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18754:369;;19137:36;19147:6;19155:9;19166:6;19137:9;:36::i;:::-;19184:121;19193:6;19201:12;:10;:12::i;:::-;19215:89;19253:6;19215:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19215:19:0;;;;;;:11;:19;;;;;;19235:12;:10;:12::i;:::-;-1:-1:-1;;;;;19215:33:0;;;;;;;;;;;;-1:-1:-1;19215:33:0;;;:89;;:37;:89;:::i;:::-;19184:8;:121::i;:::-;-1:-1:-1;19323:4:0;18631:704;;;;;:::o;21167:253::-;21233:7;21272;;21261;:18;;21253:73;;;;-1:-1:-1;;;21253:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21337:19;21360:10;:8;:10::i;:::-;21337:33;-1:-1:-1;21388:24:0;:7;21337:33;21388:24;:11;:24;:::i;:::-;21381:31;;;21167:253;;;;:::o;15592:28::-;;;;;;:::o;17624:85::-;15974:1;17624:85;:::o;21773:479::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21855:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21847:60;;;::::0;;-1:-1:-1;;;21847:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21923:9;21918:327;21942:9;:16:::0;21938:20;::::1;21918:327;;;22000:7;-1:-1:-1::0;;;;;21984:23:0::1;:9;21994:1;21984:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;21984:12:0::1;:23;21980:254;;;22043:9;22053:16:::0;;-1:-1:-1;;22053:20:0;;;22043:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;22028:9:::1;:12:::0;;-1:-1:-1;;;;;22043:31:0;;::::1;::::0;22038:1;;22028:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22028:46:0::1;-1:-1:-1::0;;;;;22028:46:0;;::::1;;::::0;;22093:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22132:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22132:28:0::1;::::0;;22179:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22179:15:0;;;;;-1:-1:-1;;;;;;22179:15:0::1;::::0;;;;;22213:5:::1;;21980:254;21960:3;;21918:327;;;;21773:479:::0;:::o;19344:220::-;19434:4;19451:83;19460:12;:10;:12::i;:::-;19474:7;19483:50;19522:10;19483:11;:25;19495:12;:10;:12::i;:::-;-1:-1:-1;;;;;19483:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;19483:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;15172:46::-;;;-1:-1:-1;;;;;15172:46:0;;:::o;16047:26::-;;;;:::o;20329:379::-;20383:14;20400:12;:10;:12::i;:::-;-1:-1:-1;;;;;20432:19:0;;;;;;:11;:19;;;;;;20383:29;;-1:-1:-1;20432:19:0;;20431:20;20423:77;;;;-1:-1:-1;;;20423:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20512:15;20536:19;20547:7;20536:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20584:15:0;;;;;;:7;:15;;;;;;20511:44;;-1:-1:-1;20584:28:0;;:15;-1:-1:-1;20511:44:0;20584:19;:28::i;:::-;-1:-1:-1;;;;;20566:15:0;;;;;;:7;:15;;;;;:46;20633:7;;:20;;20645:7;20633:20;:11;:20;:::i;:::-;20623:7;:30;20677:10;;:23;;20692:7;20677:23;:14;:23;:::i;:::-;20664:10;:36;-1:-1:-1;;;20329:379:0:o;32745:113::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32816:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;32816:34:0::1;32846:4;32816:34;::::0;;32745:113::o;20720:438::-;20812:7;15714:21;20840:7;:18;;20832:62;;;;;-1:-1:-1;;;20832:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20910:17;20905:246;;20945:15;20969:19;20980:7;20969:10;:19::i;:::-;-1:-1:-1;20944:44:0;;-1:-1:-1;21003:14:0;;-1:-1:-1;;;;;21003:14:0;20905:246;21052:23;21083:19;21094:7;21083:10;:19::i;:::-;-1:-1:-1;21050:52:0;;-1:-1:-1;21117:22:0;;-1:-1:-1;;;;;21117:22:0;14995:82;;;-1:-1:-1;;;;;14995:82:0;;:::o;16407:28::-;;;-1:-1:-1;;;;;16407:28:0;;:::o;16473:40::-;;;-1:-1:-1;;;16473:40:0;;;;;:::o;21429:335::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21514:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21513:21;21505:61;;;::::0;;-1:-1:-1;;;21505:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;21580:16:0;::::1;21599:1;21580:16:::0;;;:7:::1;:16;::::0;;;;;:20;21577:108:::1;;-1:-1:-1::0;;;;;21656:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;21636:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;21617:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;21577:108:::1;-1:-1:-1::0;;;;;21695:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;21695:27:0::1;21718:4;21695:27:::0;;::::1;::::0;;;21733:9:::1;27:10:-1::0;;23:18;;::::1;45:23:::0;;21733::0;;;;::::1;::::0;;-1:-1:-1;;;;;;21733:23:0::1;::::0;;::::1;::::0;;21429:335::o;32611:125::-;-1:-1:-1;;;;;32701:27:0;32677:4;32701:27;;;:18;:27;;;;;;;;;32611:125::o;6937:78::-;7004:3;6937:78;:::o;6838:90::-;6911:9;;6838:90;:::o;34126:292::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;34235:15:::1;::::0;-1:-1:-1;;;;;34213:38:0;;::::1;34235:15:::0;::::1;34213:38;;34205:62;;;::::0;;-1:-1:-1;;;34205:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34205:62:0;;;;;;;;;;;;;::::1;;34287:15;:48:::0;;-1:-1:-1;;;;;;34287:48:0::1;-1:-1:-1::0;;;;;34287:48:0;;::::1;::::0;;::::1;::::0;;;;34351:59:::1;::::0;34393:15;::::1;::::0;34351:59:::1;::::0;-1:-1:-1;;34351:59:0::1;34126:292:::0;:::o;16131:32::-;;;;:::o;17824:198::-;-1:-1:-1;;;;;17914:20:0;;17890:7;17914:20;;;:11;:20;;;;;;;;17910:49;;;-1:-1:-1;;;;;;17943:16:0;;;;;;:7;:16;;;;;;17936:23;;17910:49;-1:-1:-1;;;;;17997:16:0;;;;;;:7;:16;;;;;;17977:37;;:19;:37::i;6428:148::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;6535:1:::1;6519:6:::0;;6498:40:::1;::::0;-1:-1:-1;;;;;6519:6:0;;::::1;::::0;6498:40:::1;::::0;6535:1;;6498:40:::1;6566:1;6549:19:::0;;-1:-1:-1;;;;;;6549:19:0::1;::::0;;6428:148::o;18534:88::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;15714:21:::1;18587:17;:27:::0;18534:88::o;16233:48::-;;;;:::o;19853:122::-;-1:-1:-1;;;;;19947:20:0;19923:4;19947:20;;;:11;:20;;;;;;;;;19853:122::o;34814:128::-;34908:26;;-1:-1:-1;;;;;34908:18:0;;;:26;;;;;34927:6;;34908:26;;;;34927:6;34908:18;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34908:26:0;34814:128;;:::o;5986:79::-;6024:7;6051:6;-1:-1:-1;;;;;6051:6:0;5986:79;:::o;33155:196::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;33272:2:::1;33257:12;:17;33249:55;;;::::0;;-1:-1:-1;;;33249:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33249:55:0;;;;;;;;;;;;;::::1;;33315:13;:28:::0;33155:196::o;33847:140::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;33943:16:::1;:36:::0;;-1:-1:-1;;;;;;33943:36:0::1;-1:-1:-1::0;;;;;33943:36:0;;;::::1;::::0;;;::::1;::::0;;33847:140::o;17526:89::-;17600:7;;;;;;;;;;;;-1:-1:-1;;;17600:7:0;;;;17526:89;:::o;20212:108::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;20286:17:::1;:26:::0;20212:108::o;20082:122::-;20173:23;;20082:122;:::o;19573:271::-;19668:4;19685:129;19694:12;:10;:12::i;:::-;19708:7;19717:96;19756:15;19717:96;;;;;;;;;;;;;;;;;:11;:25;19729:12;:10;:12::i;:::-;-1:-1:-1;;;;;19717:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;19717:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;15084:84::-;;;-1:-1:-1;;;;;15084:84:0;;:::o;33585:78::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;33640:8:::1;:15:::0;;-1:-1:-1;;33640:15:0::1;33651:4;33640:15;::::0;;33585:78::o;18031:169::-;18111:4;18128:42;18138:12;:10;:12::i;:::-;18152:9;18163:6;18128:9;:42::i;15984:53::-;;;;:::o;34606:199::-;6348:12;:10;:12::i;:::-;6336:8;;-1:-1:-1;;;;;6336:8:0;;;:24;;;6328:71;;;;-1:-1:-1;;;6328:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34704:1:::1;34695:6;:10;34687:64;;;;-1:-1:-1::0;;;34687:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34770:9;:7;:9::i;:::-;-1:-1:-1::0;;;;;34762:27:0::1;:35;34790:6;34762:35;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;34424:173:0::0;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;34503:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;34503:32:0;::::1;-1:-1:-1::0;;;;34503:32:0;;::::1;::::0;;;::::1;::::0;;;34551:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;34424:173:::0;:::o;33998:116::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;34082:10:::1;:24:::0;;-1:-1:-1;;;;;;34082:24:0::1;-1:-1:-1::0;;;;;34082:24:0;;;::::1;::::0;;;::::1;::::0;;33998:116::o;18209:145::-;-1:-1:-1;;;;;18319:18:0;;;18292:7;18319:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18209:145::o;32867:112::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32936:27:0::1;32966:5;32936:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;32936:35:0::1;::::0;;32867:112::o;33360:216::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;33459:16:::1;15714:21;33471:3;33459:16;:11;:16;:::i;:::-;33445:11;:30;33437:94;;;;-1:-1:-1::0;;;33437:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33542:12;:26:::0;33360:216::o;33672:166::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;33780:23:::1;:50:::0;33672:166::o;6585:244::-;6216:12;:10;:12::i;:::-;6206:6;;-1:-1:-1;;;;;6206:6:0;;;:22;;;6198:67;;;;;-1:-1:-1;;;6198:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6198:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6674:22:0;::::1;6666:73;;;;-1:-1:-1::0;;;6666:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6776:6;::::0;;6755:38:::1;::::0;-1:-1:-1;;;;;6755:38:0;;::::1;::::0;6776:6;::::1;::::0;6755:38:::1;::::0;::::1;6804:6;:17:::0;;-1:-1:-1;;;;;;6804:17:0::1;-1:-1:-1::0;;;;;6804:17:0;;;::::1;::::0;;;::::1;::::0;;6585:244::o;104:106::-;192:10;104:106;:::o;22261:338::-;-1:-1:-1;;;;;22354:19:0;;22346:68;;;;-1:-1:-1;;;22346:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22433:21:0;;22425:68;;;;-1:-1:-1;;;22425:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22507:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22559:32;;;;;;;;;;;;;;;;;22261:338;;;:::o;22608:1499::-;-1:-1:-1;;;;;22730:18:0;;22722:68;;;;-1:-1:-1;;;22722:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22809:16:0;;22801:64;;;;-1:-1:-1;;;22801:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22893:1;22884:6;:10;22876:64;;;;-1:-1:-1;;;22876:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22962:7;:5;:7::i;:::-;-1:-1:-1;;;;;22954:15:0;:4;-1:-1:-1;;;;;22954:15:0;;;:32;;;;;22979:7;:5;:7::i;:::-;-1:-1:-1;;;;;22973:13:0;:2;-1:-1:-1;;;;;22973:13:0;;;22954:32;22951:125;;;23019:12;;23009:6;:22;;23001:75;;;;-1:-1:-1;;;23001:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23093:28;23124:24;23142:4;23124:9;:24::i;:::-;23214:23;;23093:55;;-1:-1:-1;23190:47:0;;;;;;;23266:57;;-1:-1:-1;23307:16:0;;-1:-1:-1;;;23307:16:0;;;;23306:17;23266:57;:95;;;;-1:-1:-1;23348:13:0;;-1:-1:-1;;;;;23340:21:0;;;23348:13;;23340:21;;23266:95;:133;;;;-1:-1:-1;23378:21:0;;-1:-1:-1;;;23378:21:0;;;;23266:133;23248:229;;;23429:36;23444:20;23429:14;:36::i;:::-;-1:-1:-1;;;;;23613:24:0;;23493:12;23613:24;;;:18;:24;;;;;;23508:4;;23613:24;;;:50;;-1:-1:-1;;;;;;23641:22:0;;;;;;:18;:22;;;;;;;;23613:50;23610:96;;;-1:-1:-1;23689:5:0;23610:96;23731:14;;-1:-1:-1;;;;;23725:20:0;;;23731:14;;23725:20;;;;:43;;-1:-1:-1;23755:13:0;;-1:-1:-1;;;;;23749:19:0;;;23755:13;;23749:19;;23725:43;:69;;;;-1:-1:-1;23778:16:0;;-1:-1:-1;;;;;23772:22:0;;;23778:16;;23772:22;;23725:69;:89;;;;-1:-1:-1;23804:10:0;;-1:-1:-1;;;;;23798:16:0;;;23804:10;;23798:16;;23725:89;:124;;;;-1:-1:-1;23833:15:0;;-1:-1:-1;;;;;23819:30:0;;;23833:15;;23819:30;;23725:124;23721:327;;;23865:18;23886:13;23896:2;23886:9;:13::i;:::-;23865:34;;23947:17;;23936:6;23923:10;:19;23922:42;;23914:116;;;;-1:-1:-1;;;23914:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23721:327;;24061:38;24076:4;24081:2;24084:6;24091:7;24061:14;:38::i;:::-;22608:1499;;;;;;:::o;1513:193::-;1599:7;1635:12;1627:6;;;;1619:29;;;;-1:-1:-1;;;1619:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1619:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1671:5:0;;;1513:193::o;30788:163::-;30829:7;30850:15;30867;30886:19;:17;:19::i;:::-;30849:56;;-1:-1:-1;30849:56:0;-1:-1:-1;30923:20:0;30849:56;;30923:20;:11;:20;:::i;:::-;30916:27;;;;30788:163;:::o;1979:132::-;2037:7;2064:39;2068:1;2071;2064:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2057:46;1979:132;-1:-1:-1;;;1979:132:0:o;1177:182::-;1235:7;1267:5;;;1291:6;;;;1283:46;;;;;-1:-1:-1;;;1283:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;29583:419;29642:7;29651;29660;29669;29678;29687;29708:23;29733:12;29747:18;29769:20;29781:7;29769:11;:20::i;:::-;29707:82;;;;;;29801:15;29818:23;29843:12;29859:50;29871:7;29880:4;29886:10;29898;:8;:10::i;:::-;29859:11;:50::i;:::-;29800:109;;;;-1:-1:-1;29800:109:0;;-1:-1:-1;29960:15:0;;-1:-1:-1;29977:4:0;;-1:-1:-1;29983:10:0;;-1:-1:-1;29583:419:0;;-1:-1:-1;;;;;29583:419:0:o;1368:136::-;1426:7;1453:43;1457:1;1460;1453:43;;;;;;;;;;;;;;;;;:3;:43::i;24116:831::-;16804:16;:23;;-1:-1:-1;;;;16804:23:0;-1:-1:-1;;;16804:23:0;;;;24229:27:::1;:20:::0;24254:1:::1;24229:27;:24;:27;:::i;:::-;24204:52:::0;-1:-1:-1;24275:20:0::1;24298:40;:20:::0;24204:52;24298:40:::1;:24;:40;:::i;:::-;24275:63:::0;-1:-1:-1;24380:21:0::1;24445:30;24275:63:::0;24445:16:::1;:30::i;:::-;24521:26;24550:41;:21;24576:14:::0;24550:41:::1;:25;:41;:::i;:::-;24629:16;::::0;24521:70;;-1:-1:-1;24605:68:0::1;::::0;-1:-1:-1;;;;;24629:16:0::1;24647:25;24521:70:::0;24670:1:::1;24647:25;:22;:25;:::i;:::-;24605:23;:68::i;:::-;24825:10;::::0;24723:21:::1;::::0;24801:66:::1;::::0;-1:-1:-1;;;;;24825:10:0::1;24865:1;24723:21:::0;24837:29:::1;24801:23;:66::i;:::-;24878:58;24891:14:::0;24934:1:::1;24907:25:::0;:28:::1;24878:12;:58::i;:::-;-1:-1:-1::0;;16850:16:0;:24;;-1:-1:-1;;;;16850:24:0;;;-1:-1:-1;;;;24116:831:0:o;26107:979::-;26221:8;;;;26217:143;;26263:7;:5;:7::i;:::-;-1:-1:-1;;;;;26253:17:0;:6;-1:-1:-1;;;;;26253:17:0;;:46;;;-1:-1:-1;26284:15:0;;-1:-1:-1;;;;;26274:25:0;;;26284:15;;26274:25;26253:46;26245:55;;12:1:-1;9;2:12;26245:55:0;26377:7;26373:40;;26399:14;:12;:14::i;:::-;-1:-1:-1;;;;;26431:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;26455:22:0;;;;;;:11;:22;;;;;;;;26454:23;26431:46;26427:597;;;26494:48;26516:6;26524:9;26535:6;26494:21;:48::i;:::-;26427:597;;;-1:-1:-1;;;;;26565:19:0;;;;;;:11;:19;;;;;;;;26564:20;:46;;;;-1:-1:-1;;;;;;26588:22:0;;;;;;:11;:22;;;;;;;;26564:46;26560:464;;;26627:46;26647:6;26655:9;26666:6;26627:19;:46::i;26560:464::-;-1:-1:-1;;;;;26696:19:0;;;;;;:11;:19;;;;;;;;26695:20;:47;;;;-1:-1:-1;;;;;;26720:22:0;;;;;;:11;:22;;;;;;;;26719:23;26695:47;26691:333;;;26759:44;26777:6;26785:9;26796:6;26759:17;:44::i;26691:333::-;-1:-1:-1;;;;;26825:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;26848:22:0;;;;;;:11;:22;;;;;;;;26825:45;26821:203;;;26887:48;26909:6;26917:9;26928:6;26887:21;:48::i;26821:203::-;26968:44;26986:6;26994:9;27005:6;26968:17;:44::i;:::-;27041:7;27037:41;;27063:15;:13;:15::i;:::-;26107:979;;;;:::o;30960:561::-;31057:7;;31010;;;;15714:21;31010:7;31117:289;31141:9;:16;31137:20;;31117:289;;;31207:7;31183;:21;31191:9;31201:1;31191:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31191:12:0;31183:21;;;;;;;;;;;;;:31;;:66;;;31242:7;31218;:21;31226:9;31236:1;31226:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31226:12:0;31218:21;;;;;;;;;;;;;:31;31183:66;31179:97;;;31259:7;;15714:21;31251:25;;;;;;;;;31179:97;31301:34;31313:7;:21;31321:9;31331:1;31321:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31321:12:0;31313:21;;;;;;;;;;;;;31301:7;;:34;:11;:34;:::i;:::-;31291:44;;31360:34;31372:7;:21;31380:9;31390:1;31380:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31380:12:0;31372:21;;;;;;;;;;;;;31360:7;;:34;:11;:34;:::i;:::-;31350:44;-1:-1:-1;31159:3:0;;31117:289;;;-1:-1:-1;31430:7:0;;:20;;15714:21;31430:20;:11;:20;:::i;:::-;31420:7;:30;31416:61;;;31460:7;;15714:21;31452:25;;;;;;;;31416:61;31496:7;;-1:-1:-1;31505:7:0;-1:-1:-1;30960:561:0;;;:::o;2120:279::-;2206:7;2241:12;2234:5;2226:28;;;;-1:-1:-1;;;2226:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2226:28:0;;2265:9;2281:1;2277;:5;;;;;;;2120:279;-1:-1:-1;;;;;2120:279:0:o;30011:330::-;30071:7;30080;30089;30109:12;30124:24;30140:7;30124:15;:24::i;:::-;30109:39;;30159:18;30180:30;30202:7;30180:21;:30::i;:::-;30159:51;-1:-1:-1;30221:23:0;30247:33;30159:51;30247:17;:7;30259:4;30247:17;:11;:17;:::i;:::-;:21;:33;:21;:33;:::i;:::-;30221:59;30316:4;;-1:-1:-1;30322:10:0;;-1:-1:-1;30011:330:0;;-1:-1:-1;;;30011:330:0:o;30350:429::-;30465:7;;;;30521:24;:7;30533:11;30521:24;:11;:24;:::i;:::-;30503:42;-1:-1:-1;30556:12:0;30571:21;:4;30580:11;30571:21;:8;:21;:::i;:::-;30556:36;-1:-1:-1;30603:18:0;30624:27;:10;30639:11;30624:27;:14;:27;:::i;:::-;30603:48;-1:-1:-1;30662:23:0;30688:33;30603:48;30688:17;:7;30700:4;30688:17;:11;:17;:::i;:33::-;30740:7;;;;-1:-1:-1;30766:4:0;;-1:-1:-1;30350:429:0;;-1:-1:-1;;;;;;;30350:429:0:o;25488:607::-;25638:16;;;25652:1;25638:16;;;25614:21;25638:16;;;;;25614:21;25638:16;;;;;109:14:-1;25638:16:0;88:42:-1;144:17;;-1:-1;25638:16:0;25614:40;;25683:4;25665;25670:1;25665:7;;;;;;;;-1:-1:-1;;;;;25665:23:0;;;:7;;;;;;;;;;:23;;;;25709:15;;:22;;;-1:-1:-1;;;25709:22:0;;;;:15;;;;;:20;;:22;;;;;25665:7;;25709:22;;;;;:15;:22;;;2:2:-1;;;;27:1;24;17:12;2:2;25709:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25709:22:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25709:22:0;25699:7;;:4;;25704:1;;25699:7;;;;;;-1:-1:-1;;;;;25699:32:0;;;:7;;;;;;;;;:32;25777:15;;25745:62;;25762:4;;25777:15;25795:11;25745:8;:62::i;:::-;25847:15;;:240;;-1:-1:-1;;;25847:240:0;;;;;;;;:15;:240;;;;;;26025:4;25847:240;;;;;;26061:15;25847:240;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25847:15:0;;;;:66;;25928:11;;25998:4;;26025;26061:15;25847:240;;;;;;;;;;;;;;;;:15;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25847:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25847:240:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;24956:523:0;25139:15;;25107:62;;25124:4;;-1:-1:-1;;;;;25139:15:0;25157:11;25107:8;:62::i;:::-;25213:15;;25417:10;;25213:255;;;-1:-1:-1;;;25213:255:0;;25285:4;25213:255;;;;;;;;;;:15;:255;;;;;;;;;;-1:-1:-1;;;;;25417:10:0;;;25213:255;;;;25442:15;25213:255;;;;;;:15;;;;;:31;;25252:9;;25213:255;;;;;;;;;;;;;;;25252:9;25213:15;:255;;;2:2:-1;;;;27:1;24;17:12;2:2;25213:255:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25213:255:0;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;32232:236:0;32278:7;;:12;:34;;;;-1:-1:-1;32294:13:0;;:18;32278:34;32275:46;;;32314:7;;32275:46;32352:7;;;32334:15;:25;32394:13;;;32370:21;:37;-1:-1:-1;32421:11:0;;;;32443:17;32232:236;:::o;28201:566::-;28304:15;28321:23;28346:12;28360:23;28385:12;28399:18;28421:19;28432:7;28421:10;:19::i;:::-;-1:-1:-1;;;;;28469:15:0;;;;;;:7;:15;;;;;;28303:137;;-1:-1:-1;28303:137:0;;-1:-1:-1;28303:137:0;;-1:-1:-1;28303:137:0;-1:-1:-1;28303:137:0;-1:-1:-1;28303:137:0;-1:-1:-1;28469:28:0;;28489:7;28469:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;28451:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28526:7;:15;;;;:28;;28546:7;28526:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;28508:15:0;;;;;;;:7;:15;;;;;;:46;;;;28586:18;;;;;;;:39;;28609:15;28586:39;:22;:39;:::i;:::-;-1:-1:-1;;;;;28565:18:0;;;;;;:7;:18;;;;;:60;28639:26;28654:10;28639:14;:26::i;:::-;28676:23;28688:4;28694;28676:11;:23::i;:::-;28732:9;-1:-1:-1;;;;;28715:44:0;28724:6;-1:-1:-1;;;;;28715:44:0;;28743:15;28715:44;;;;;;;;;;;;;;;;;;28201:566;;;;;;;;;:::o;27606:586::-;27707:15;27724:23;27749:12;27763:23;27788:12;27802:18;27824:19;27835:7;27824:10;:19::i;:::-;-1:-1:-1;;;;;27872:15:0;;;;;;:7;:15;;;;;;27706:137;;-1:-1:-1;27706:137:0;;-1:-1:-1;27706:137:0;;-1:-1:-1;27706:137:0;-1:-1:-1;27706:137:0;-1:-1:-1;27706:137:0;-1:-1:-1;27872:28:0;;27706:137;27872:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;27854:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;27932:18;;;;;:7;:18;;;;;:39;;27955:15;27932:39;:22;:39;:::i;:::-;-1:-1:-1;;;;;27911:18:0;;;;;;:7;:18;;;;;;;;:60;;;;28003:7;:18;;;;:39;;28026:15;28003:39;:22;:39;:::i;27095:502::-;27194:15;27211:23;27236:12;27250:23;27275:12;27289:18;27311:19;27322:7;27311:10;:19::i;:::-;-1:-1:-1;;;;;27359:15:0;;;;;;:7;:15;;;;;;27193:137;;-1:-1:-1;27193:137:0;;-1:-1:-1;27193:137:0;;-1:-1:-1;27193:137:0;-1:-1:-1;27193:137:0;-1:-1:-1;27193:137:0;-1:-1:-1;27359:28:0;;27193:137;27359:28;:19;:28;:::i;28776:642::-;28879:15;28896:23;28921:12;28935:23;28960:12;28974:18;28996:19;29007:7;28996:10;:19::i;:::-;-1:-1:-1;;;;;29044:15:0;;;;;;:7;:15;;;;;;28878:137;;-1:-1:-1;28878:137:0;;-1:-1:-1;28878:137:0;;-1:-1:-1;28878:137:0;-1:-1:-1;28878:137:0;-1:-1:-1;28878:137:0;-1:-1:-1;29044:28:0;;29064:7;29044:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;29026:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29101:7;:15;;;;:28;;29121:7;29101:28;:19;:28;:::i;32477:125::-;32531:15;;32521:7;:25;32573:21;;32557:13;:37;32477:125::o;31894:154::-;31958:7;31985:55;32024:5;31985:20;31997:7;;31985;:11;;:20;;;;:::i;:::-;:24;:55;:24;:55;:::i;32057:166::-;32127:7;32154:61;32199:5;32154:26;32166:13;;32154:7;:11;;:26;;;;:::i;1715:252::-;1773:7;1797:6;1793:47;;-1:-1:-1;1827:1:0;1820:8;;1793:47;1865:5;;;1869:1;1865;:5;:1;1889:5;;;;;:10;1881:56;;;;-1:-1:-1;;;1881:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31530:355;31593:19;31616:10;:8;:10::i;:::-;31593:33;-1:-1:-1;31637:18:0;31658:27;:10;31593:33;31658:27;:14;:27;:::i;:::-;31737:4;31721:22;;;;:7;:22;;;;;;31637:48;;-1:-1:-1;31721:38:0;;31637:48;31721:38;:26;:38;:::i;:::-;31712:4;31696:22;;;;:7;:22;;;;;;;;:63;;;;31773:11;:26;;;;;;31770:107;;;31855:4;31839:22;;;;:7;:22;;;;;;:38;;31866:10;31839:38;:26;:38;:::i;:::-;31830:4;31814:22;;;;:7;:22;;;;;:63;31530:355;;;:::o;29427:147::-;29505:7;;:17;;29517:4;29505:17;:11;:17;:::i;:::-;29495:7;:27;29546:10;;:20;;29561:4;29546:20;:14;:20;:::i;:::-;29533:10;:33;-1:-1:-1;;29427:147:0:o

Swarm Source

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