ETH Price: $3,309.83 (+1.16%)
Gas: 3 Gwei

Token

SaferThanMoon (SAFER)
 

Overview

Max Total Supply

5,000,000,000 SAFER

Holders

309

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
753,083.21872836 SAFER

Value
$0.00
0x748f60c65dd4ea0bc103977c7bad38d21cb5b49a
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:
SaferThanMoon

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-03
*/

pragma solidity 0.8.20;

/**
 * SPDX-License-Identifier: MIT
 */

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


interface IDexFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

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

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

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IDexRouter {
    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);

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

interface IAntiSnipe {
  function setTokenOwner(address owner, address pair) external;

  function onPreTransferCheck(
    address from,
    address to,
    uint256 amount
  ) external;
}

contract SaferThanMoon is Context, Ownable {
    using Address for address;
    
    string private _name = "SaferThanMoon";
    string private _symbol = "SAFER";
    uint8 private _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    address[] private _excluded;
    mapping(address => bool) private _isExcludedFromRewards;

    address constant public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping(address => bool) private _taxWhitelist;

    address public marketingWallet = 0x9D92ffDf0831f77Daf885A3eb893828984256996;
    bool directSend = false;

    uint256 private constant MAX = type(uint256).max;
    uint256 private _tTotal = 5_000_000_000 * (10 ** _decimals);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    address public burnAddress = 0x000000000000000000000000000000000000dEaD;
    mapping (address => bool) public liquidityPools;

    bool public swapEnabled = true;
    bool public inSwap = false;

    IAntiSnipe public antisnipe;
    uint256 public protectedFrom;
    bool public protectionEnabled = false;

    uint256 public _taxFee = 5;

    uint256 public _marketingFees = 1;

    uint256 public maxWallet = _tTotal * 4 / 1000;

    uint256 public minTokenNumberToSell = _tTotal / 10000;
    
    uint256 public tokenLaunched;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor() {
        _tOwned[msg.sender] = _tTotal;
        _rOwned[msg.sender] = _rTotal;

        _taxWhitelist[msg.sender] = true;
        _taxWhitelist[address(this)] = true;
        
        _isExcludedFromRewards[address(this)] = true;
        _excluded.push(address(this));
        _isExcludedFromRewards[msg.sender] = true;
        _excluded.push(msg.sender);
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view returns (uint256) {
        if (_isExcludedFromRewards[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcludedFromRewards[account];
    }

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

    function includeInReward(address account) public onlyOwner {
        require(_isExcludedFromRewards[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcludedFromRewards[account] = false;
                _excluded.pop();
                break;
            }
        }
    }


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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

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

    function setAccountWhitelisted(address account, bool whitelisted) public onlyOwner
    {
        _taxWhitelist[account] = whitelisted;
    }

    function toggleMarketing() external onlyOwner {
        if(_taxFee > 0)
            _marketingFees = 0;
        else
            _marketingFees = 1;
    }

    function toggleReflection() external onlyOwner {
        if(_taxFee > 0)
            _taxFee = 0;
        else
            _taxFee = 5;
    }
    
    function setMinAmountToSell(uint256 _divisor) external onlyOwner {
        minTokenNumberToSell = _tTotal / _divisor;
    }

    function setMarketingWallet(address _newAddress) external onlyOwner {
        marketingWallet = _newAddress;
    }

    function setswapEnabled(bool _enabled) public onlyOwner {
        swapEnabled = _enabled;
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        liquidityPools[lp] = isPool;
        excludeFromReward(lp);
    }

    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal - rFee;
        unchecked {
            _tFeeTotal += tFee;
        }
    }

    function _getValues(uint256 tAmount, bool selling, bool takeFee)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getTValues(tAmount, selling, takeFee);

        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tLiquidity,
            _getRate()
        );
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tLiquidity
        );
    }

    function _getTValues(uint256 tAmount, bool selling, bool takeFee)
        private
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = (takeFee ? calculateTaxFee(tAmount, selling) : 0);
        uint256 tLiquidity = (takeFee ? calculateLiquidityFee(tAmount, selling) : 0);
        uint256 tTransferAmount = tAmount - (tFee + tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount * currentRate;
        uint256 rFee = tFee * currentRate;
        uint256 rLiquidity = tLiquidity * currentRate;
        uint256 rTransferAmount = rAmount - (rFee + rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() public view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / 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 -= _rOwned[_excluded[i]];
            tSupply -= _tOwned[_excluded[i]];
        }


        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity * currentRate;

        _rOwned[address(this)] += rLiquidity;
        if (_isExcludedFromRewards[address(this)])
            _tOwned[address(this)] += tLiquidity;
    }

    function calculateTaxFee(uint256 _amount, bool selling) private view returns (uint256) {
        if (!selling) return 0;
        return (_amount * _taxFee) / 100;
    }

    function calculateLiquidityFee(uint256 _amount, bool selling)
        private
        view
        returns (uint256)
    {
        if(block.timestamp - tokenLaunched <= 30 minutes) {
            //first 30m
            return (_amount * 5) / 100;
        }
        else if(block.timestamp - tokenLaunched <= 90 minutes) {
            //next 1hr
            return (_amount * (selling ? 0 : 5 )) / 100;
        }
        //std
        return (_amount * (selling ? 0 : _marketingFees )) / 100;
    }

    function isWhitelisted(address account) public view returns (bool) {
        return _taxWhitelist[account];
    }
    
    function launch(address _as) external payable onlyOwner {
    	require(tokenLaunched == 0);

        IDexRouter router = IDexRouter(routerAddress);

        address pair = IDexFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        liquidityPools[pair] = true;

        antisnipe = IAntiSnipe(_as);
        antisnipe.setTokenOwner(address(this), pair);

        _isExcludedFromRewards[pair] = true;
        _excluded.push(pair);
        
        _approve(address(this), routerAddress, MAX);
        _approve(msg.sender, routerAddress, _tTotal);

        router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);

        protectionEnabled = true;
        tokenLaunched = block.timestamp;
    }

    function updateApproval() external {
        _approve(address(this), routerAddress, MAX);
    }

    function setProtection(bool _enable) external onlyOwner {
        protectionEnabled = _enable;
    }

    function setAntisnipe(address _as, address pair) external onlyOwner {
        antisnipe = IAntiSnipe(_as);
        antisnipe.setTokenOwner(address(this), pair);
    }

    function removemaxWallet() external onlyOwner {
        maxWallet = _tTotal;
    }

    function _approve(
        address _owner,
        address spender,
        uint256 amount
    ) internal {
        require(_owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to 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 0x0");
        require(to != address(0), "ERC20: transfer to 0x0");
        
        bool takeFee = true;

        if (_taxWhitelist[from] || _taxWhitelist[to]) {
            takeFee = false;
        }

        if(takeFee && !liquidityPools[to]) {
            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
        }

        if (takeFee && shouldSwap(to)) swapAndLiquify(amount);

        _tokenTransfer(from, to, amount, takeFee);

        if(protectionEnabled){
            antisnipe.onPreTransferCheck(from, to, amount);
        }
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(amount, liquidityPools[recipient], takeFee);
        _rOwned[sender] -= rAmount;
        if (_isExcludedFromRewards[sender])
            _tOwned[sender] -= amount;
        if (_isExcludedFromRewards[recipient])
            _tOwned[recipient] += tTransferAmount;
        _rOwned[recipient] += rTransferAmount;
        if(tLiquidity > 0)
            _takeLiquidity(tLiquidity);
        if(rFee > 0 || tFee > 0)
            _reflectFee(rFee, tFee);
        
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        
    }
    
    function shouldSwap(address to) internal view returns(bool) {
        return 
            !inSwap &&
            swapEnabled &&
            balanceOf(address(this)) >= minTokenNumberToSell &&
            !liquidityPools[msg.sender] &&
            liquidityPools[to];
    }
    
    function swapAndLiquify(uint256 amount) internal swapping {
        uint256 amountToSwap = minTokenNumberToSell;
        if(amount < amountToSwap) amountToSwap = amount;
        if(amountToSwap == 0) return;

        IDexRouter router = IDexRouter(routerAddress);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 forMarketing = address(this).balance;
        bool sent;
        
        if (forMarketing > 0 && directSend) {
            (sent, ) = marketingWallet.call{value: forMarketing}("");
        }
    }

    function updateDirectSend(bool _value) external onlyOwner {
        directSend = _value;
    }

    function extractEthPortion(address _to, uint256 _percent) external onlyOwner {
        bool sent;
        (sent, ) = _to.call{value: address(this).balance * _percent / 100}("");
    }

    function extractEth() external {
        bool sent;
        (sent, ) = marketingWallet.call{value: address(this).balance}("");
    }
	
    function airdrop(address[] calldata _addresses, uint256[] calldata _amount) external onlyOwner
    {
        require(_addresses.length == _amount.length);
        bool previousSwap = swapEnabled;
        bool previousProtection = protectionEnabled;
        swapEnabled = false;
        protectionEnabled = false;
        for (uint256 i = 0; i < _addresses.length; i++) {
            _transfer(msg.sender, _addresses[i], _amount[i] * (10 ** _decimals));
        }
        swapEnabled = previousSwap;
        protectionEnabled = previousProtection;
    }
}

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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFees","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":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antisnipe","outputs":[{"internalType":"contract IAntiSnipe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","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":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extractEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"extractEthPortion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_as","type":"address"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityPools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenNumberToSell","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":[],"name":"protectedFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removemaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"setAccountWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_as","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"name":"setAntisnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_divisor","type":"uint256"}],"name":"setMinAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setswapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLaunched","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateDirectSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600d60809081526c29b0b332b92a3430b726b7b7b760991b60a0526001906200002e90826200035f565b5060408051808201909152600581526429a0a322a960d91b60208201526002906200005a90826200035f565b506003805460ff19166009908117909155600a80546001600160a81b031916739d92ffdf0831f77daf885a3eb8938289842569961781556200009d919062000536565b620000ae9064012a05f2006200054d565b600b819055620000c0905f196200057b565b620000cd905f1962000591565b600c55600e80546001600160a01b03191661dead1790556010805461ffff191660019081179091556012805460ff191690556005601355601455600b546103e8906200011b9060046200054d565b620001279190620005a7565b601555612710600b546200013c9190620005a7565b6016553480156200014b575f80fd5b50620001573362000270565b600b54335f81815260056020908152604080832094909455600c546004825284832055600981528382208054600160ff199182168117909255308085528685208054831684179055600890935285842080548216831790556007805480840182557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890810180546001600160a01b031990811690961790558686529685208054909216831790915580549182018155909252920180549092161790556200021b3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200026291815260200190565b60405180910390a3620005bd565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002e857607f821691505b6020821081036200030757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200035a575f81815260208120601f850160051c81016020861015620003355750805b601f850160051c820191505b81811015620003565782815560010162000341565b5050505b505050565b81516001600160401b038111156200037b576200037b620002bf565b62000393816200038c8454620002d3565b846200030d565b602080601f831160018114620003c9575f8415620003b15750858301515b5f19600386901b1c1916600185901b17855562000356565b5f85815260208120601f198616915b82811015620003f957888601518255948401946001909101908401620003d8565b50858210156200041757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200047b57815f19048211156200045f576200045f62000427565b808516156200046d57918102915b93841c939080029062000440565b509250929050565b5f82620004935750600162000530565b81620004a157505f62000530565b8160018114620004ba5760028114620004c557620004e5565b600191505062000530565b60ff841115620004d957620004d962000427565b50506001821b62000530565b5060208310610133831016604e8410600b84101617156200050a575081810a62000530565b6200051683836200043b565b805f19048211156200052c576200052c62000427565b0290505b92915050565b5f6200054660ff84168362000483565b9392505050565b808202811582820484141762000530576200053062000427565b634e487b7160e01b5f52601260045260245ffd5b5f826200058c576200058c62000567565b500690565b8181038181111562000530576200053062000427565b5f82620005b857620005b862000567565b500490565b61288880620005cb5f395ff3fe6080604052600436106102dc575f3560e01c80636ddd17131161018957806394e10784116100d8578063d830678611610092578063f2fde38b1161006d578063f2fde38b1461089a578063f4ea5d5a146108b9578063f8b45b05146108d8578063f926197e146108ed575f80fd5b8063d830678614610823578063dd62ed3e14610841578063de78e78a14610885575f80fd5b806394e107841461078957806395d89b411461079d578063a457c2d7146107b1578063a9059cbb146107d0578063b79aab32146107ef578063cc3469ac1461080e575f80fd5b80637975c0fb11610143578063882cfb3f1161011e578063882cfb3f146106fd57806388f82020146107225780638da5cb5b146107595780639016b80814610775575f80fd5b80637975c0fb146106b55780637a091849146106d45780637c0ab152146106e9575f80fd5b80636ddd17131461061257806370a082311461062b57806370d5ae051461064a578063715018a6146106695780637516baec1461067d57806375f0a87414610696575f80fd5b8063313ce5671161024557806345803770116101ff57806359f8160b116101da57806359f8160b146105965780635d098b38146105b5578063659b1c7c146105d457806367243482146105f3575f80fd5b80634580377014610539578063492a937b1461055857806352390c0214610577575f80fd5b8063313ce5671461044f5780633268cc56146104705780633685d419146104af57806339509351146104ce5780633af32abf146104ed5780633b124fe714610524575f80fd5b8063214013ca11610296578063214013ca146103b657806321bde720146103c957806323b872dd146103dd57806329aaa0a7146103fc5780632d49be91146104115780632d83811914610430575f80fd5b806306fdde03146102e7578063095ea7b3146103115780630b0fd47e1461034057806313114a9d1461036e578063170dc8d51461038c57806318160ddd146103a2575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fb610901565b6040516103089190612353565b60405180910390f35b34801561031c575f80fd5b5061033061032b3660046123b2565b610991565b6040519015158152602001610308565b34801561034b575f80fd5b5061033061035a3660046123dc565b600f6020525f908152604090205460ff1681565b348015610379575f80fd5b50600d545b604051908152602001610308565b348015610397575f80fd5b506103a06109a7565b005b3480156103ad575f80fd5b50600b5461037e565b6103a06103c43660046123dc565b6109ef565b3480156103d4575f80fd5b506103a0610d78565b3480156103e8575f80fd5b506103306103f73660046123f7565b610db6565b348015610407575f80fd5b5061037e60115481565b34801561041c575f80fd5b506103a061042b366004612435565b610e06565b34801561043b575f80fd5b5061037e61044a366004612435565b610e43565b34801561045a575f80fd5b5060035460405160ff9091168152602001610308565b34801561047b575f80fd5b50610497737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610308565b3480156104ba575f80fd5b506103a06104c93660046123dc565b610eb2565b3480156104d9575f80fd5b506103306104e83660046123b2565b611060565b3480156104f8575f80fd5b506103306105073660046123dc565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561052f575f80fd5b5061037e60135481565b348015610544575f80fd5b506103a0610553366004612460565b611096565b348015610563575f80fd5b506103a0610572366004612479565b6110d2565b348015610582575f80fd5b506103a06105913660046123dc565b611123565b3480156105a1575f80fd5b506103a06105b0366004612479565b611270565b3480156105c0575f80fd5b506103a06105cf3660046123dc565b6112c3565b3480156105df575f80fd5b506103a06105ee366004612460565b61130e565b3480156105fe575f80fd5b506103a061060d3660046124f4565b61134a565b34801561061d575f80fd5b506010546103309060ff1681565b348015610636575f80fd5b5061037e6106453660046123dc565b611440565b348015610655575f80fd5b50600e54610497906001600160a01b031681565b348015610674575f80fd5b506103a061149c565b348015610688575f80fd5b506012546103309060ff1681565b3480156106a1575f80fd5b50600a54610497906001600160a01b031681565b3480156106c0575f80fd5b506103a06106cf36600461255b565b6114ce565b3480156106df575f80fd5b5061037e60165481565b3480156106f4575f80fd5b506103a0611579565b348015610708575f80fd5b50601054610497906201000090046001600160a01b031681565b34801561072d575f80fd5b5061033061073c3660046123dc565b6001600160a01b03165f9081526008602052604090205460ff1690565b348015610764575f80fd5b505f546001600160a01b0316610497565b348015610780575f80fd5b506103a06115ce565b348015610794575f80fd5b5061037e6115ff565b3480156107a8575f80fd5b506102fb611620565b3480156107bc575f80fd5b506103306107cb3660046123b2565b61162f565b3480156107db575f80fd5b506103306107ea3660046123b2565b611665565b3480156107fa575f80fd5b506103a06108093660046123b2565b611671565b348015610819575f80fd5b5061037e60145481565b34801561082e575f80fd5b5060105461033090610100900460ff1681565b34801561084c575f80fd5b5061037e61085b36600461255b565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610890575f80fd5b5061037e60175481565b3480156108a5575f80fd5b506103a06108b43660046123dc565b6116f4565b3480156108c4575f80fd5b506103a06108d3366004612460565b61178e565b3480156108e3575f80fd5b5061037e60155481565b3480156108f8575f80fd5b506103a06117d5565b60606001805461091090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612592565b80156109875780601f1061095e57610100808354040283529160200191610987565b820191905f5260205f20905b81548152906001019060200180831161096a57829003601f168201915b5050505050905090565b5f61099d3384846117f1565b5060015b92915050565b5f546001600160a01b031633146109d95760405162461bcd60e51b81526004016109d0906125ca565b60405180910390fd5b601354156109e7575f601355565b60056013555b565b5f546001600160a01b03163314610a185760405162461bcd60e51b81526004016109d0906125ca565b60175415610a24575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9d91906125ff565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0c91906125ff565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7a91906125ff565b6001600160a01b038181165f818152600f6020526040908190208054600160ff199091161790556010805462010000600160b01b031916620100008986168102919091179182905591516366812dbb60e11b81523060048201526024810193909352939450909204169063cd025b76906044015f604051808303815f87803b158015610c04575f80fd5b505af1158015610c16573d5f803e3d5ffd5b5050506001600160a01b0382165f818152600860205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b031916909117905550610c9e30737a250d5630b4cf539739df2c5dacb4c659f2488d5f196117f1565b610cbf33737a250d5630b4cf539739df2c5dacb4c659f2488d600b546117f1565b816001600160a01b031663f305d7194730610cd930611440565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610d3a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d5f919061261a565b50506012805460ff191660011790555050426017555050565b5f546001600160a01b03163314610da15760405162461bcd60e51b81526004016109d0906125ca565b60135415610daf575f601455565b6001601455565b5f610dc28484846118fd565b6001600160a01b0384165f90815260066020908152604080832033808552925290912054610dfc918691610df7908690612659565b6117f1565b5060019392505050565b5f546001600160a01b03163314610e2f5760405162461bcd60e51b81526004016109d0906125ca565b80600b54610e3d919061266c565b60165550565b5f600c54821115610e965760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374203c20746f74616c207265666c656374696f6e730060448201526064016109d0565b5f610e9f6115ff565b9050610eab818461266c565b9392505050565b5f546001600160a01b03163314610edb5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0381165f9081526008602052604090205460ff16610f425760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016109d0565b5f5b60075481101561105c57816001600160a01b031660078281548110610f6b57610f6b61268b565b5f918252602090912001546001600160a01b03160361104a5760078054610f9490600190612659565b81548110610fa457610fa461268b565b5f91825260209091200154600780546001600160a01b039092169183908110610fcf57610fcf61268b565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff1916905560078054806110265761102661269f565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b80611054816126b3565b915050610f44565b5050565b335f8181526006602090815260408083206001600160a01b0387168452909152812054909161099d918590610df79086906126cb565b5f546001600160a01b031633146110bf5760405162461bcd60e51b81526004016109d0906125ca565b6010805460ff1916911515919091179055565b5f546001600160a01b031633146110fb5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0382165f908152600f60205260409020805460ff191682151517905561105c825b5f546001600160a01b0316331461114c5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0381165f9081526008602052604090205460ff16156111b45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109d0565b6001600160a01b0381165f908152600460205260409020541561120b576001600160a01b0381165f908152600460205260409020546111f290610e43565b6001600160a01b0382165f908152600560205260409020555b6001600160a01b03165f818152600860205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b031633146112995760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112ec5760405162461bcd60e51b81526004016109d0906125ca565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113375760405162461bcd60e51b81526004016109d0906125ca565b6012805460ff1916911515919091179055565b5f546001600160a01b031633146113735760405162461bcd60e51b81526004016109d0906125ca565b82811461137e575f80fd5b601080546012805460ff19808416909455928316905560ff90811691165f5b8581101561141b57611409338888848181106113bb576113bb61268b565b90506020020160208101906113d091906123dc565b6003546113e19060ff16600a6127be565b8888868181106113f3576113f361268b565b9050602002013561140491906127cc565b6118fd565b80611413816126b3565b91505061139d565b506010805492151560ff19938416179055601280549115159190921617905550505050565b6001600160a01b0381165f9081526008602052604081205460ff161561147b57506001600160a01b03165f9081526005602052604090205490565b6001600160a01b0382165f908152600460205260409020546109a190610e43565b5f546001600160a01b031633146114c55760405162461bcd60e51b81526004016109d0906125ca565b6109ed5f611b1a565b5f546001600160a01b031633146114f75760405162461bcd60e51b81526004016109d0906125ca565b6010805462010000600160b01b031916620100006001600160a01b03858116820292909217928390556040516366812dbb60e11b815230600482015284831660248201529204169063cd025b76906044015f604051808303815f87803b15801561155f575f80fd5b505af1158015611571573d5f803e3d5ffd5b505050505050565b600a546040515f916001600160a01b03169047908381818185875af1925050503d805f81146115c3576040519150601f19603f3d011682016040523d82523d5f602084013e6115c8565b606091505b50505050565b5f546001600160a01b031633146115f75760405162461bcd60e51b81526004016109d0906125ca565b600b54601555565b5f805f61160a611b69565b9092509050611619818361266c565b9250505090565b60606002805461091090612592565b335f8181526006602090815260408083206001600160a01b0387168452909152812054909161099d918590610df7908690612659565b5f61099d3384846118fd565b5f546001600160a01b0316331461169a5760405162461bcd60e51b81526004016109d0906125ca565b5f6001600160a01b03831660646116b184476127cc565b6116bb919061266c565b6040515f81818185875af1925050503d805f8114611571576040519150601f19603f3d011682016040523d82523d5f602084013e611571565b5f546001600160a01b0316331461171d5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0381166117825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d0565b61178b81611b1a565b50565b5f546001600160a01b031633146117b75760405162461bcd60e51b81526004016109d0906125ca565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b6109ed30737a250d5630b4cf539739df2c5dacb4c659f2488d5f195b6001600160a01b0383166118475760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016109d0565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016109d0565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119535760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d20307830000000000000000060448201526064016109d0565b6001600160a01b0382166119a25760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b60448201526064016109d0565b6001600160a01b0383165f9081526009602052604090205460019060ff16806119e257506001600160a01b0383165f9081526009602052604090205460ff165b156119ea57505f5b808015611a0f57506001600160a01b0383165f908152600f602052604090205460ff16155b15611a6e57601554611a2084611440565b611a2a90846126cb565b1115611a6e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109d0565b808015611a7f5750611a7f83611ce3565b15611a8d57611a8d82611d55565b611a9984848484611f57565b60125460ff16156115c85760105460405163090ec10b60e31b81526001600160a01b03868116600483015285811660248301526044820185905262010000909204909116906348760858906064015f604051808303815f87803b158015611afe575f80fd5b505af1158015611b10573d5f803e3d5ffd5b5050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600c54600b545f918291825b600754811015611cb2578260045f60078481548110611b9657611b9661268b565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180611bfe57508160055f60078481548110611bd857611bd861268b565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15611c1457600c54600b54945094505050509091565b60045f60078381548110611c2a57611c2a61268b565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054611c589084612659565b925060055f60078381548110611c7057611c7061268b565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054611c9e9083612659565b915080611caa816126b3565b915050611b75565b50600b54600c54611cc3919061266c565b821015611cda57600c54600b549350935050509091565b90939092509050565b6010545f90610100900460ff16158015611cff575060105460ff165b8015611d155750601654611d1230611440565b10155b8015611d305750335f908152600f602052604090205460ff16155b80156109a15750506001600160a01b03165f908152600f602052604090205460ff1690565b6010805461ff00191661010017905560165480821015611d725750805b805f03611d7f5750611f49565b604080516002808252606082018352737a250d5630b4cf539739df2c5dacb4c659f2488d925f92919060208301908036833701905050905030815f81518110611dca57611dca61268b565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4a91906125ff565b81600181518110611e5d57611e5d61268b565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac94790611ea09086905f908690309042906004016127e3565b5f604051808303815f87803b158015611eb7575f80fd5b505af1158015611ec9573d5f803e3d5ffd5b504792505f9150508115801590611ee95750600a54600160a01b900460ff165b15611f4357600a546040516001600160a01b039091169083905f81818185875af1925050503d805f8114611f38576040519150601f19603f3d011682016040523d82523d5f602084013e611f3d565b606091505b50909150505b50505050505b506010805461ff0019169055565b6001600160a01b0383165f908152600f602052604081205481908190819081908190611f8890899060ff1689612115565b9550955095509550955095508560045f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f828254611fc69190612659565b90915550506001600160a01b038a165f9081526008602052604090205460ff1615612018576001600160a01b038a165f90815260056020526040812080548a9290612012908490612659565b90915550505b6001600160a01b0389165f9081526008602052604090205460ff1615612065576001600160a01b0389165f908152600560205260408120805485929061205f9084906126cb565b90915550505b6001600160a01b0389165f908152600460205260408120805487929061208c9084906126cb565b909155505080156120a0576120a081612164565b5f8411806120ad57505f82115b156120bc576120bc84836121e2565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161210191815260200190565b60405180910390a350505050505050505050565b5f805f805f805f805f6121298c8c8c6121ff565b9250925092505f805f6121458f86866121406115ff565b612257565b919d509b50995094975092955090935050505093975093979195509350565b5f61216d6115ff565b90505f61217a82846127cc565b305f9081526004602052604081208054929350839290919061219d9084906126cb565b9091555050305f9081526008602052604090205460ff16156121dd57305f90815260056020526040812080548592906121d79084906126cb565b90915550505b505050565b81600c546121f09190612659565b600c55600d8054909101905550565b5f805f808461220e575f612218565b61221887876122a9565b90505f85612226575f612230565b61223088886122d0565b90505f61223d82846126cb565b612247908a612659565b9992985090965090945050505050565b5f80808061226585896127cc565b90505f61227286896127cc565b90505f61227f87896127cc565b90505f61228c82846126cb565b6122969085612659565b939b939a50919850919650505050505050565b5f816122b657505f6109a1565b6064601354846122c691906127cc565b610eab919061266c565b5f610708601754426122e29190612659565b116123055760646122f48460056127cc565b6122fe919061266c565b90506109a1565b611518601754426123169190612659565b116123385760648261232957600561232b565b5f5b6122f49060ff16856127cc565b60648261234757601454612349565b5f5b6122c690856127cc565b5f6020808352835180828501525f5b8181101561237e57858101830151858201604001528201612362565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461178b575f80fd5b5f80604083850312156123c3575f80fd5b82356123ce8161239e565b946020939093013593505050565b5f602082840312156123ec575f80fd5b8135610eab8161239e565b5f805f60608486031215612409575f80fd5b83356124148161239e565b925060208401356124248161239e565b929592945050506040919091013590565b5f60208284031215612445575f80fd5b5035919050565b8035801515811461245b575f80fd5b919050565b5f60208284031215612470575f80fd5b610eab8261244c565b5f806040838503121561248a575f80fd5b82356124958161239e565b91506124a36020840161244c565b90509250929050565b5f8083601f8401126124bc575f80fd5b50813567ffffffffffffffff8111156124d3575f80fd5b6020830191508360208260051b85010111156124ed575f80fd5b9250929050565b5f805f8060408587031215612507575f80fd5b843567ffffffffffffffff8082111561251e575f80fd5b61252a888389016124ac565b90965094506020870135915080821115612542575f80fd5b5061254f878288016124ac565b95989497509550505050565b5f806040838503121561256c575f80fd5b82356125778161239e565b915060208301356125878161239e565b809150509250929050565b600181811c908216806125a657607f821691505b6020821081036125c457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561260f575f80fd5b8151610eab8161239e565b5f805f6060848603121561262c575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109a1576109a1612645565b5f8261268657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f600182016126c4576126c4612645565b5060010190565b808201808211156109a1576109a1612645565b600181815b8085111561271857815f19048211156126fe576126fe612645565b8085161561270b57918102915b93841c93908002906126e3565b509250929050565b5f8261272e575060016109a1565b8161273a57505f6109a1565b8160018114612750576002811461275a57612776565b60019150506109a1565b60ff84111561276b5761276b612645565b50506001821b6109a1565b5060208310610133831016604e8410600b8410161715612799575081810a6109a1565b6127a383836126de565b805f19048211156127b6576127b6612645565b029392505050565b5f610eab60ff841683612720565b80820281158282048414176109a1576109a1612645565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156128315784516001600160a01b03168352938301939183019160010161280c565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c5177329a24ff4d5b355c3c2e6fd6ac6b951a9e5f9712d31f5ebef833e1bd67664736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102dc575f3560e01c80636ddd17131161018957806394e10784116100d8578063d830678611610092578063f2fde38b1161006d578063f2fde38b1461089a578063f4ea5d5a146108b9578063f8b45b05146108d8578063f926197e146108ed575f80fd5b8063d830678614610823578063dd62ed3e14610841578063de78e78a14610885575f80fd5b806394e107841461078957806395d89b411461079d578063a457c2d7146107b1578063a9059cbb146107d0578063b79aab32146107ef578063cc3469ac1461080e575f80fd5b80637975c0fb11610143578063882cfb3f1161011e578063882cfb3f146106fd57806388f82020146107225780638da5cb5b146107595780639016b80814610775575f80fd5b80637975c0fb146106b55780637a091849146106d45780637c0ab152146106e9575f80fd5b80636ddd17131461061257806370a082311461062b57806370d5ae051461064a578063715018a6146106695780637516baec1461067d57806375f0a87414610696575f80fd5b8063313ce5671161024557806345803770116101ff57806359f8160b116101da57806359f8160b146105965780635d098b38146105b5578063659b1c7c146105d457806367243482146105f3575f80fd5b80634580377014610539578063492a937b1461055857806352390c0214610577575f80fd5b8063313ce5671461044f5780633268cc56146104705780633685d419146104af57806339509351146104ce5780633af32abf146104ed5780633b124fe714610524575f80fd5b8063214013ca11610296578063214013ca146103b657806321bde720146103c957806323b872dd146103dd57806329aaa0a7146103fc5780632d49be91146104115780632d83811914610430575f80fd5b806306fdde03146102e7578063095ea7b3146103115780630b0fd47e1461034057806313114a9d1461036e578063170dc8d51461038c57806318160ddd146103a2575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fb610901565b6040516103089190612353565b60405180910390f35b34801561031c575f80fd5b5061033061032b3660046123b2565b610991565b6040519015158152602001610308565b34801561034b575f80fd5b5061033061035a3660046123dc565b600f6020525f908152604090205460ff1681565b348015610379575f80fd5b50600d545b604051908152602001610308565b348015610397575f80fd5b506103a06109a7565b005b3480156103ad575f80fd5b50600b5461037e565b6103a06103c43660046123dc565b6109ef565b3480156103d4575f80fd5b506103a0610d78565b3480156103e8575f80fd5b506103306103f73660046123f7565b610db6565b348015610407575f80fd5b5061037e60115481565b34801561041c575f80fd5b506103a061042b366004612435565b610e06565b34801561043b575f80fd5b5061037e61044a366004612435565b610e43565b34801561045a575f80fd5b5060035460405160ff9091168152602001610308565b34801561047b575f80fd5b50610497737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610308565b3480156104ba575f80fd5b506103a06104c93660046123dc565b610eb2565b3480156104d9575f80fd5b506103306104e83660046123b2565b611060565b3480156104f8575f80fd5b506103306105073660046123dc565b6001600160a01b03165f9081526009602052604090205460ff1690565b34801561052f575f80fd5b5061037e60135481565b348015610544575f80fd5b506103a0610553366004612460565b611096565b348015610563575f80fd5b506103a0610572366004612479565b6110d2565b348015610582575f80fd5b506103a06105913660046123dc565b611123565b3480156105a1575f80fd5b506103a06105b0366004612479565b611270565b3480156105c0575f80fd5b506103a06105cf3660046123dc565b6112c3565b3480156105df575f80fd5b506103a06105ee366004612460565b61130e565b3480156105fe575f80fd5b506103a061060d3660046124f4565b61134a565b34801561061d575f80fd5b506010546103309060ff1681565b348015610636575f80fd5b5061037e6106453660046123dc565b611440565b348015610655575f80fd5b50600e54610497906001600160a01b031681565b348015610674575f80fd5b506103a061149c565b348015610688575f80fd5b506012546103309060ff1681565b3480156106a1575f80fd5b50600a54610497906001600160a01b031681565b3480156106c0575f80fd5b506103a06106cf36600461255b565b6114ce565b3480156106df575f80fd5b5061037e60165481565b3480156106f4575f80fd5b506103a0611579565b348015610708575f80fd5b50601054610497906201000090046001600160a01b031681565b34801561072d575f80fd5b5061033061073c3660046123dc565b6001600160a01b03165f9081526008602052604090205460ff1690565b348015610764575f80fd5b505f546001600160a01b0316610497565b348015610780575f80fd5b506103a06115ce565b348015610794575f80fd5b5061037e6115ff565b3480156107a8575f80fd5b506102fb611620565b3480156107bc575f80fd5b506103306107cb3660046123b2565b61162f565b3480156107db575f80fd5b506103306107ea3660046123b2565b611665565b3480156107fa575f80fd5b506103a06108093660046123b2565b611671565b348015610819575f80fd5b5061037e60145481565b34801561082e575f80fd5b5060105461033090610100900460ff1681565b34801561084c575f80fd5b5061037e61085b36600461255b565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610890575f80fd5b5061037e60175481565b3480156108a5575f80fd5b506103a06108b43660046123dc565b6116f4565b3480156108c4575f80fd5b506103a06108d3366004612460565b61178e565b3480156108e3575f80fd5b5061037e60155481565b3480156108f8575f80fd5b506103a06117d5565b60606001805461091090612592565b80601f016020809104026020016040519081016040528092919081815260200182805461093c90612592565b80156109875780601f1061095e57610100808354040283529160200191610987565b820191905f5260205f20905b81548152906001019060200180831161096a57829003601f168201915b5050505050905090565b5f61099d3384846117f1565b5060015b92915050565b5f546001600160a01b031633146109d95760405162461bcd60e51b81526004016109d0906125ca565b60405180910390fd5b601354156109e7575f601355565b60056013555b565b5f546001600160a01b03163314610a185760405162461bcd60e51b81526004016109d0906125ca565b60175415610a24575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9d91906125ff565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0c91906125ff565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610b56573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7a91906125ff565b6001600160a01b038181165f818152600f6020526040908190208054600160ff199091161790556010805462010000600160b01b031916620100008986168102919091179182905591516366812dbb60e11b81523060048201526024810193909352939450909204169063cd025b76906044015f604051808303815f87803b158015610c04575f80fd5b505af1158015610c16573d5f803e3d5ffd5b5050506001600160a01b0382165f818152600860205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b031916909117905550610c9e30737a250d5630b4cf539739df2c5dacb4c659f2488d5f196117f1565b610cbf33737a250d5630b4cf539739df2c5dacb4c659f2488d600b546117f1565b816001600160a01b031663f305d7194730610cd930611440565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610d3a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d5f919061261a565b50506012805460ff191660011790555050426017555050565b5f546001600160a01b03163314610da15760405162461bcd60e51b81526004016109d0906125ca565b60135415610daf575f601455565b6001601455565b5f610dc28484846118fd565b6001600160a01b0384165f90815260066020908152604080832033808552925290912054610dfc918691610df7908690612659565b6117f1565b5060019392505050565b5f546001600160a01b03163314610e2f5760405162461bcd60e51b81526004016109d0906125ca565b80600b54610e3d919061266c565b60165550565b5f600c54821115610e965760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374203c20746f74616c207265666c656374696f6e730060448201526064016109d0565b5f610e9f6115ff565b9050610eab818461266c565b9392505050565b5f546001600160a01b03163314610edb5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0381165f9081526008602052604090205460ff16610f425760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016109d0565b5f5b60075481101561105c57816001600160a01b031660078281548110610f6b57610f6b61268b565b5f918252602090912001546001600160a01b03160361104a5760078054610f9490600190612659565b81548110610fa457610fa461268b565b5f91825260209091200154600780546001600160a01b039092169183908110610fcf57610fcf61268b565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff1916905560078054806110265761102661269f565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b80611054816126b3565b915050610f44565b5050565b335f8181526006602090815260408083206001600160a01b0387168452909152812054909161099d918590610df79086906126cb565b5f546001600160a01b031633146110bf5760405162461bcd60e51b81526004016109d0906125ca565b6010805460ff1916911515919091179055565b5f546001600160a01b031633146110fb5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0382165f908152600f60205260409020805460ff191682151517905561105c825b5f546001600160a01b0316331461114c5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0381165f9081526008602052604090205460ff16156111b45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109d0565b6001600160a01b0381165f908152600460205260409020541561120b576001600160a01b0381165f908152600460205260409020546111f290610e43565b6001600160a01b0382165f908152600560205260409020555b6001600160a01b03165f818152600860205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b031633146112995760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112ec5760405162461bcd60e51b81526004016109d0906125ca565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146113375760405162461bcd60e51b81526004016109d0906125ca565b6012805460ff1916911515919091179055565b5f546001600160a01b031633146113735760405162461bcd60e51b81526004016109d0906125ca565b82811461137e575f80fd5b601080546012805460ff19808416909455928316905560ff90811691165f5b8581101561141b57611409338888848181106113bb576113bb61268b565b90506020020160208101906113d091906123dc565b6003546113e19060ff16600a6127be565b8888868181106113f3576113f361268b565b9050602002013561140491906127cc565b6118fd565b80611413816126b3565b91505061139d565b506010805492151560ff19938416179055601280549115159190921617905550505050565b6001600160a01b0381165f9081526008602052604081205460ff161561147b57506001600160a01b03165f9081526005602052604090205490565b6001600160a01b0382165f908152600460205260409020546109a190610e43565b5f546001600160a01b031633146114c55760405162461bcd60e51b81526004016109d0906125ca565b6109ed5f611b1a565b5f546001600160a01b031633146114f75760405162461bcd60e51b81526004016109d0906125ca565b6010805462010000600160b01b031916620100006001600160a01b03858116820292909217928390556040516366812dbb60e11b815230600482015284831660248201529204169063cd025b76906044015f604051808303815f87803b15801561155f575f80fd5b505af1158015611571573d5f803e3d5ffd5b505050505050565b600a546040515f916001600160a01b03169047908381818185875af1925050503d805f81146115c3576040519150601f19603f3d011682016040523d82523d5f602084013e6115c8565b606091505b50505050565b5f546001600160a01b031633146115f75760405162461bcd60e51b81526004016109d0906125ca565b600b54601555565b5f805f61160a611b69565b9092509050611619818361266c565b9250505090565b60606002805461091090612592565b335f8181526006602090815260408083206001600160a01b0387168452909152812054909161099d918590610df7908690612659565b5f61099d3384846118fd565b5f546001600160a01b0316331461169a5760405162461bcd60e51b81526004016109d0906125ca565b5f6001600160a01b03831660646116b184476127cc565b6116bb919061266c565b6040515f81818185875af1925050503d805f8114611571576040519150601f19603f3d011682016040523d82523d5f602084013e611571565b5f546001600160a01b0316331461171d5760405162461bcd60e51b81526004016109d0906125ca565b6001600160a01b0381166117825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109d0565b61178b81611b1a565b50565b5f546001600160a01b031633146117b75760405162461bcd60e51b81526004016109d0906125ca565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b6109ed30737a250d5630b4cf539739df2c5dacb4c659f2488d5f195b6001600160a01b0383166118475760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016109d0565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016109d0565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119535760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d20307830000000000000000060448201526064016109d0565b6001600160a01b0382166119a25760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b60448201526064016109d0565b6001600160a01b0383165f9081526009602052604090205460019060ff16806119e257506001600160a01b0383165f9081526009602052604090205460ff165b156119ea57505f5b808015611a0f57506001600160a01b0383165f908152600f602052604090205460ff16155b15611a6e57601554611a2084611440565b611a2a90846126cb565b1115611a6e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109d0565b808015611a7f5750611a7f83611ce3565b15611a8d57611a8d82611d55565b611a9984848484611f57565b60125460ff16156115c85760105460405163090ec10b60e31b81526001600160a01b03868116600483015285811660248301526044820185905262010000909204909116906348760858906064015f604051808303815f87803b158015611afe575f80fd5b505af1158015611b10573d5f803e3d5ffd5b5050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600c54600b545f918291825b600754811015611cb2578260045f60078481548110611b9657611b9661268b565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180611bfe57508160055f60078481548110611bd857611bd861268b565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15611c1457600c54600b54945094505050509091565b60045f60078381548110611c2a57611c2a61268b565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054611c589084612659565b925060055f60078381548110611c7057611c7061268b565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054611c9e9083612659565b915080611caa816126b3565b915050611b75565b50600b54600c54611cc3919061266c565b821015611cda57600c54600b549350935050509091565b90939092509050565b6010545f90610100900460ff16158015611cff575060105460ff165b8015611d155750601654611d1230611440565b10155b8015611d305750335f908152600f602052604090205460ff16155b80156109a15750506001600160a01b03165f908152600f602052604090205460ff1690565b6010805461ff00191661010017905560165480821015611d725750805b805f03611d7f5750611f49565b604080516002808252606082018352737a250d5630b4cf539739df2c5dacb4c659f2488d925f92919060208301908036833701905050905030815f81518110611dca57611dca61268b565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4a91906125ff565b81600181518110611e5d57611e5d61268b565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac94790611ea09086905f908690309042906004016127e3565b5f604051808303815f87803b158015611eb7575f80fd5b505af1158015611ec9573d5f803e3d5ffd5b504792505f9150508115801590611ee95750600a54600160a01b900460ff165b15611f4357600a546040516001600160a01b039091169083905f81818185875af1925050503d805f8114611f38576040519150601f19603f3d011682016040523d82523d5f602084013e611f3d565b606091505b50909150505b50505050505b506010805461ff0019169055565b6001600160a01b0383165f908152600f602052604081205481908190819081908190611f8890899060ff1689612115565b9550955095509550955095508560045f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f828254611fc69190612659565b90915550506001600160a01b038a165f9081526008602052604090205460ff1615612018576001600160a01b038a165f90815260056020526040812080548a9290612012908490612659565b90915550505b6001600160a01b0389165f9081526008602052604090205460ff1615612065576001600160a01b0389165f908152600560205260408120805485929061205f9084906126cb565b90915550505b6001600160a01b0389165f908152600460205260408120805487929061208c9084906126cb565b909155505080156120a0576120a081612164565b5f8411806120ad57505f82115b156120bc576120bc84836121e2565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161210191815260200190565b60405180910390a350505050505050505050565b5f805f805f805f805f6121298c8c8c6121ff565b9250925092505f805f6121458f86866121406115ff565b612257565b919d509b50995094975092955090935050505093975093979195509350565b5f61216d6115ff565b90505f61217a82846127cc565b305f9081526004602052604081208054929350839290919061219d9084906126cb565b9091555050305f9081526008602052604090205460ff16156121dd57305f90815260056020526040812080548592906121d79084906126cb565b90915550505b505050565b81600c546121f09190612659565b600c55600d8054909101905550565b5f805f808461220e575f612218565b61221887876122a9565b90505f85612226575f612230565b61223088886122d0565b90505f61223d82846126cb565b612247908a612659565b9992985090965090945050505050565b5f80808061226585896127cc565b90505f61227286896127cc565b90505f61227f87896127cc565b90505f61228c82846126cb565b6122969085612659565b939b939a50919850919650505050505050565b5f816122b657505f6109a1565b6064601354846122c691906127cc565b610eab919061266c565b5f610708601754426122e29190612659565b116123055760646122f48460056127cc565b6122fe919061266c565b90506109a1565b611518601754426123169190612659565b116123385760648261232957600561232b565b5f5b6122f49060ff16856127cc565b60648261234757601454612349565b5f5b6122c690856127cc565b5f6020808352835180828501525f5b8181101561237e57858101830151858201604001528201612362565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461178b575f80fd5b5f80604083850312156123c3575f80fd5b82356123ce8161239e565b946020939093013593505050565b5f602082840312156123ec575f80fd5b8135610eab8161239e565b5f805f60608486031215612409575f80fd5b83356124148161239e565b925060208401356124248161239e565b929592945050506040919091013590565b5f60208284031215612445575f80fd5b5035919050565b8035801515811461245b575f80fd5b919050565b5f60208284031215612470575f80fd5b610eab8261244c565b5f806040838503121561248a575f80fd5b82356124958161239e565b91506124a36020840161244c565b90509250929050565b5f8083601f8401126124bc575f80fd5b50813567ffffffffffffffff8111156124d3575f80fd5b6020830191508360208260051b85010111156124ed575f80fd5b9250929050565b5f805f8060408587031215612507575f80fd5b843567ffffffffffffffff8082111561251e575f80fd5b61252a888389016124ac565b90965094506020870135915080821115612542575f80fd5b5061254f878288016124ac565b95989497509550505050565b5f806040838503121561256c575f80fd5b82356125778161239e565b915060208301356125878161239e565b809150509250929050565b600181811c908216806125a657607f821691505b6020821081036125c457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561260f575f80fd5b8151610eab8161239e565b5f805f6060848603121561262c575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109a1576109a1612645565b5f8261268657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f600182016126c4576126c4612645565b5060010190565b808201808211156109a1576109a1612645565b600181815b8085111561271857815f19048211156126fe576126fe612645565b8085161561270b57918102915b93841c93908002906126e3565b509250929050565b5f8261272e575060016109a1565b8161273a57505f6109a1565b8160018114612750576002811461275a57612776565b60019150506109a1565b60ff84111561276b5761276b612645565b50506001821b6109a1565b5060208310610133831016604e8410600b8410161715612799575081810a6109a1565b6127a383836126de565b805f19048211156127b6576127b6612645565b029392505050565b5f610eab60ff841683612720565b80820281158282048414176109a1576109a1612645565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156128315784516001600160a01b03168352938301939183019160010161280c565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c5177329a24ff4d5b355c3c2e6fd6ac6b951a9e5f9712d31f5ebef833e1bd67664736f6c63430008140033

Deployed Bytecode Sourcemap

10327:16306:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12565:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14460:152;;;;;;;;;;-1:-1:-1;14460:152:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;14460:152:0;1023:187:1;11357:47:0;;;;;;;;;;-1:-1:-1;11357:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14365:87;;;;;;;;;;-1:-1:-1;14434:10:0;;14365:87;;;1613:25:1;;;1601:2;1586:18;14365:87:0;1467:177:1;16352:146:0;;;;;;;;;;;;;:::i;:::-;;12842:86;;;;;;;;;;-1:-1:-1;12913:7:0;;12842:86;;20986:838;;;;;;:::i;:::-;;:::i;16185:159::-;;;;;;;;;;;;;:::i;14786:341::-;;;;;;;;;;-1:-1:-1;14786:341:0;;;;;:::i;:::-;;:::i;11519:28::-;;;;;;;;;;;;;;;;16510:125;;;;;;;;;;-1:-1:-1;16510:125:0;;;;;:::i;:::-;;:::i;15755:271::-;;;;;;;;;;-1:-1:-1;15755:271:0;;;;;:::i;:::-;;:::i;12751:83::-;;;;;;;;;;-1:-1:-1;12817:9:0;;12751:83;;12817:9;;;;2437:36:1;;2425:2;2410:18;12751:83:0;2295:184:1;10807:82:0;;;;;;;;;;;;10847:42;10807:82;;;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;10807:82:0;2484:203:1;13686:493:0;;;;;;;;;;-1:-1:-1;13686:493:0;;;;;:::i;:::-;;:::i;15135:297::-;;;;;;;;;;-1:-1:-1;15135:297:0;;;;;:::i;:::-;;:::i;20859:115::-;;;;;;;;;;-1:-1:-1;20859:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;20944:22:0;20920:4;20944:22;;;:13;:22;;;;;;;;;20859:115;11600:26;;;;;;;;;;;;;;;;16767:97;;;;;;;;;;-1:-1:-1;16767:97:0;;;;;:::i;:::-;;:::i;16876:148::-;;;;;;;;;;-1:-1:-1;16876:148:0;;;;;:::i;:::-;;:::i;13287:391::-;;;;;;;;;;-1:-1:-1;13287:391:0;;;;;:::i;:::-;;:::i;16034:143::-;;;;;;;;;;-1:-1:-1;16034:143:0;;;;;:::i;:::-;;:::i;16643:116::-;;;;;;;;;;-1:-1:-1;16643:116:0;;;;;:::i;:::-;;:::i;21937:102::-;;;;;;;;;;-1:-1:-1;21937:102:0;;;;;:::i;:::-;;:::i;26066:564::-;;;;;;;;;;-1:-1:-1;26066:564:0;;;;;:::i;:::-;;:::i;11413:30::-;;;;;;;;;;-1:-1:-1;11413:30:0;;;;;;;;12936:200;;;;;;;;;;-1:-1:-1;12936:200:0;;;;;:::i;:::-;;:::i;11279:71::-;;;;;;;;;;-1:-1:-1;11279:71:0;;;;-1:-1:-1;;;;;11279:71:0;;;774:103;;;;;;;;;;;;;:::i;11554:37::-;;;;;;;;;;-1:-1:-1;11554:37:0;;;;;;;;10953:75;;;;;;;;;;-1:-1:-1;10953:75:0;;;;-1:-1:-1;;;;;10953:75:0;;;22047:169;;;;;;;;;;-1:-1:-1;22047:169:0;;;;;:::i;:::-;;:::i;11731:53::-;;;;;;;;;;;;;;;;25922:135;;;;;;;;;;;;;:::i;11485:27::-;;;;;;;;;;-1:-1:-1;11485:27:0;;;;;;;-1:-1:-1;;;;;11485:27:0;;;13148:131;;;;;;;;;;-1:-1:-1;13148:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;13240:31:0;13216:4;13240:31;;;:22;:31;;;;;;;;;13148:131;555:87;;;;;;;;;;-1:-1:-1;601:7:0;628:6;-1:-1:-1;;;;;628:6:0;555:87;;22224:84;;;;;;;;;;;;;:::i;19083:160::-;;;;;;;;;;;;;:::i;12656:87::-;;;;;;;;;;;;;:::i;15440:307::-;;;;;;;;;;-1:-1:-1;15440:307:0;;;;;:::i;:::-;;:::i;14620:158::-;;;;;;;;;;-1:-1:-1;14620:158:0;;;;;:::i;:::-;;:::i;25728:186::-;;;;;;;;;;-1:-1:-1;25728:186:0;;;;;:::i;:::-;;:::i;11635:33::-;;;;;;;;;;;;;;;;11450:26;;;;;;;;;;-1:-1:-1;11450:26:0;;;;;;;;;;;14189:168;;;;;;;;;;-1:-1:-1;14189:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;14321:19:0;;;14289:7;14321:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14189:168;11797:28;;;;;;;;;;;;;;;;883:201;;;;;;;;;;-1:-1:-1;883:201:0;;;;;:::i;:::-;;:::i;25624:96::-;;;;;;;;;;-1:-1:-1;25624:96:0;;;;;:::i;:::-;;:::i;11677:45::-;;;;;;;;;;;;;;;;21832:97;;;;;;;;;;;;;:::i;12565:83::-;12602:13;12635:5;12628:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12565:83;:::o;14460:152::-;14526:4;14543:39;185:10;14566:7;14575:6;14543:8;:39::i;:::-;-1:-1:-1;14600:4:0;14460:152;;;;;:::o;16352:146::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;;;;;;;;;16413:7:::1;::::0;:11;16410:80:::1;;16449:1;16439:7;:11:::0;16352:146::o;16410:80::-:1;16489:1;16479:7;:11:::0;16410:80:::1;16352:146::o:0;20986:838::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;21058:13:::1;::::0;:18;21050:27:::1;;;::::0;::::1;;21090:17;10847:42;21090:45;;21148:12;21175:6;-1:-1:-1::0;;;;;21175:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21163:40:0::1;;21226:4;21246:6;-1:-1:-1::0;;;;;21246:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21163:107;::::0;-1:-1:-1;;;;;;21163:107:0::1;::::0;;;;;;-1:-1:-1;;;;;6363:15:1;;;21163:107:0::1;::::0;::::1;6345:34:1::0;6415:15;;6395:18;;;6388:43;6280:18;;21163:107:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21281:20:0;;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;:27;;21304:4:::1;-1:-1:-1::0;;21281:27:0;;::::1;;::::0;;21321:9:::1;:27:::0;;-1:-1:-1;;;;;;21321:27:0::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;21359:44;;-1:-1:-1;;;21359:44:0;;21391:4:::1;21359:44;::::0;::::1;6345:34:1::0;6395:18;;;6388:43;;;;21281:20:0;;-1:-1:-1;21359:9:0;;::::1;;::::0;:23:::1;::::0;6280:18:1;;21359:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;;21416:28:0;::::1;;::::0;;;:22:::1;:28;::::0;;;;:35;;-1:-1:-1;;21416:35:0::1;21447:4;21416:35:::0;;::::1;::::0;;;21462:9:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;21462:20:0::1;::::0;;::::1;::::0;;-1:-1:-1;21503:43:0::1;21520:4;10847:42;-1:-1:-1::0;;21503:8:0::1;:43::i;:::-;21557:44;21566:10;10847:42;21593:7;;21557:8;:44::i;:::-;21614:6;-1:-1:-1::0;;;;;21614:22:0::1;;21644:21;21675:4;21681:24;21699:4;21681:9;:24::i;:::-;21614:123;::::0;-1:-1:-1;;;;;;21614:123:0::1;::::0;;;;;;-1:-1:-1;;;;;6801:15:1;;;21614:123:0::1;::::0;::::1;6783:34:1::0;6833:18;;;6826:34;21706:1:0::1;6876:18:1::0;;;6869:34;;;6919:18;;;6912:34;21710:10:0::1;6962:19:1::0;;;6955:44;21721:15:0::1;7015:19:1::0;;;7008:35;6717:19;;21614:123:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;21750:17:0::1;:24:::0;;-1:-1:-1;;21750:24:0::1;21770:4;21750:24;::::0;;-1:-1:-1;;21801:15:0::1;21785:13;:31:::0;-1:-1:-1;;20986:838:0:o;16185:159::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;16245:7:::1;::::0;:11;16242:94:::1;;16288:1;16271:14;:18:::0;16352:146::o;16242:94::-:1;16335:1;16318:14;:18:::0;16185:159::o;14786:341::-;14909:4;14926:36;14936:6;14944:9;14955:6;14926:9;:36::i;:::-;-1:-1:-1;;;;;15044:19:0;;;;;;:11;:19;;;;;;;;185:10;15044:33;;;;;;;;;14973:124;;14996:6;;15044:42;;15080:6;;15044:42;:::i;:::-;14973:8;:124::i;:::-;-1:-1:-1;15115:4:0;14786:341;;;;;:::o;16510:125::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;16619:8:::1;16609:7;;:18;;;;:::i;:::-;16586:20;:41:::0;-1:-1:-1;16510:125:0:o;15755:271::-;15849:7;15893;;15882;:18;;15874:62;;;;-1:-1:-1;;;15874:62:0;;8054:2:1;15874:62:0;;;8036:21:1;8093:2;8073:18;;;8066:30;8132:33;8112:18;;;8105:61;8183:18;;15874:62:0;7852:355:1;15874:62:0;15947:19;15969:10;:8;:10::i;:::-;15947:32;-1:-1:-1;15997:21:0;15947:32;15997:7;:21;:::i;:::-;15990:28;15755:271;-1:-1:-1;;;15755:271:0:o;13686:493::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13764:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;13756:67;;;::::0;-1:-1:-1;;;13756:67:0;;8414:2:1;13756:67:0::1;::::0;::::1;8396:21:1::0;8453:2;8433:18;;;8426:30;8492:25;8472:18;;;8465:53;8535:18;;13756:67:0::1;8212:347:1::0;13756:67:0::1;13839:9;13834:338;13858:9;:16:::0;13854:20;::::1;13834:338;;;13916:7;-1:-1:-1::0;;;;;13900:23:0::1;:9;13910:1;13900:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;13900:12:0::1;:23:::0;13896:265:::1;;13959:9;13969:16:::0;;:20:::1;::::0;13988:1:::1;::::0;13969:20:::1;:::i;:::-;13959:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;13944:9:::1;:12:::0;;-1:-1:-1;;;;;13959:31:0;;::::1;::::0;13954:1;;13944:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;13944:46:0::1;-1:-1:-1::0;;;;;13944:46:0;;::::1;;::::0;;14009:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;14048:22:::1;:31:::0;;;;:39;;-1:-1:-1;;14048:39:0::1;::::0;;14106:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;14106:15:0;;;;;-1:-1:-1;;;;;;14106:15:0::1;::::0;;;;;13834:338:::1;13686:493:::0;:::o;13896:265::-:1;13876:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13834:338;;;;13686:493:::0;:::o;15135:297::-;185:10;15250:4;15344:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15344:34:0;;;;;;;;;;15250:4;;15272:130;;15322:7;;15344:47;;15381:10;;15344:47;:::i;16767:97::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;16834:11:::1;:22:::0;;-1:-1:-1;;16834:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16767:97::o;16876:148::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16957:18:0;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;16957:27:0::1;::::0;::::1;;;::::0;;16995:21:::1;16957:18:::0;13287:391;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13382:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;13381:32;13359:109;;;::::0;-1:-1:-1;;;13359:109:0;;9300:2:1;13359:109:0::1;::::0;::::1;9282:21:1::0;9339:2;9319:18;;;9312:30;9378:29;9358:18;;;9351:57;9425:18;;13359:109:0::1;9098:351:1::0;13359:109:0::1;-1:-1:-1::0;;;;;13483:16:0;::::1;13502:1;13483:16:::0;;;:7:::1;:16;::::0;;;;;:20;13479:109:::1;;-1:-1:-1::0;;;;;13559:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;13539:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;13520:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;13479:109:::1;-1:-1:-1::0;;;;;13598:31:0::1;;::::0;;;:22:::1;:31;::::0;;;;:38;;-1:-1:-1;;13598:38:0::1;13632:4;13598:38:::0;;::::1;::::0;;;13647:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;13647:23:0::1;::::0;;::::1;::::0;;13287:391::o;16034:143::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16133:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:36;;-1:-1:-1;;16133:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16034:143::o;16643:116::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;16722:15:::1;:29:::0;;-1:-1:-1;;;;;;16722:29:0::1;-1:-1:-1::0;;;;;16722:29:0;;;::::1;::::0;;;::::1;::::0;;16643:116::o;21937:102::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;22004:17:::1;:27:::0;;-1:-1:-1;;22004:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21937:102::o;26066:564::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;26185:35;;::::1;26177:44;;;::::0;::::1;;26252:11;::::0;;26300:17:::1;::::0;;-1:-1:-1;;26328:19:0;;::::1;::::0;;;26358:25;;::::1;::::0;;26252:11:::1;::::0;;::::1;::::0;26300:17:::1;26232;26394:143;26414:21:::0;;::::1;26394:143;;;26457:68;26467:10;26479;;26490:1;26479:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26514:9;::::0;26508:15:::1;::::0;26514:9:::1;;26508:2;:15;:::i;:::-;26494:7;;26502:1;26494:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;26457:9;:68::i;:::-;26437:3:::0;::::1;::::0;::::1;:::i;:::-;;;;26394:143;;;-1:-1:-1::0;26547:11:0::1;:26:::0;;;::::1;;-1:-1:-1::0;;26547:26:0;;::::1;;::::0;;26584:17:::1;:38:::0;;;::::1;;::::0;;;::::1;;::::0;;-1:-1:-1;;;;26066:564:0:o;12936:200::-;-1:-1:-1;;;;;13017:31:0;;12993:7;13017:31;;;:22;:31;;;;;;;;13013:60;;;-1:-1:-1;;;;;;13057:16:0;;;;;:7;:16;;;;;;;12936:200::o;13013:60::-;-1:-1:-1;;;;;13111:16:0;;;;;;:7;:16;;;;;;13091:37;;:19;:37::i;774:103::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;839:30:::1;866:1;839:18;:30::i;22047:169::-:0;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;22126:9:::1;:27:::0;;-1:-1:-1;;;;;;22126:27:0::1;::::0;-1:-1:-1;;;;;22126:27:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;22164:44:::1;::::0;-1:-1:-1;;;22164:44:0;;22196:4:::1;22164:44;::::0;::::1;6345:34:1::0;6415:15;;;6395:18;;;6388:43;22164:9:0;::::1;;::::0;:23:::1;::::0;6280:18:1;;22164:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22047:169:::0;;:::o;25922:135::-;25995:15;;:54;;25964:9;;-1:-1:-1;;;;;25995:15:0;;26023:21;;25964:9;25995:54;25964:9;25995:54;26023:21;25995:15;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;25922:135:0:o;22224:84::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;22293:7:::1;::::0;22281:9:::1;:19:::0;22224:84::o;19083:160::-;19124:7;19145:15;19162;19181:19;:17;:19::i;:::-;19144:56;;-1:-1:-1;19144:56:0;-1:-1:-1;19218:17:0;19144:56;;19218:17;:::i;:::-;19211:24;;;;19083:160;:::o;12656:87::-;12695:13;12728:7;12721:14;;;;;:::i;15440:307::-;185:10;15560:4;15654:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15654:34:0;;;;;;;;;;15560:4;;15582:135;;15632:7;;15654:52;;15691:15;;15654:52;:::i;14620:158::-;14689:4;14706:42;185:10;14730:9;14741:6;14706:9;:42::i;25728:186::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;25816:9:::1;-1:-1:-1::0;;;;;25847:8:0;::::1;25898:3;25863:32;25887:8:::0;25863:21:::1;:32;:::i;:::-;:38;;;;:::i;:::-;25847:59;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;883:201:::0;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;972:22:0;::::1;964:73;;;::::0;-1:-1:-1;;;964:73:0;;11422:2:1;964:73:0::1;::::0;::::1;11404:21:1::0;11461:2;11441:18;;;11434:30;11500:34;11480:18;;;11473:62;-1:-1:-1;;;11551:18:1;;;11544:36;11597:19;;964:73:0::1;11220:402:1::0;964:73:0::1;1048:28;1067:8;1048:18;:28::i;:::-;883:201:::0;:::o;25624:96::-;601:7;628:6;-1:-1:-1;;;;;628:6:0;185:10;688:23;680:68;;;;-1:-1:-1;;;680:68:0;;;;;;;:::i;:::-;25693:10:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;25693:19:0::1;-1:-1:-1::0;;;;25693:19:0;;::::1;::::0;;;::::1;::::0;;25624:96::o;21832:97::-;21878:43;21895:4;10847:42;-1:-1:-1;;22316:368:0;-1:-1:-1;;;;;22445:20:0;;22437:65;;;;-1:-1:-1;;;22437:65:0;;11829:2:1;22437:65:0;;;11811:21:1;;;11848:18;;;11841:30;11907:34;11887:18;;;11880:62;11959:18;;22437:65:0;11627:356:1;22437:65:0;-1:-1:-1;;;;;22521:21:0;;22513:64;;;;-1:-1:-1;;;22513:64:0;;12190:2:1;22513:64:0;;;12172:21:1;12229:2;12209:18;;;12202:30;12268:32;12248:18;;;12241:60;12318:18;;22513:64:0;11988:354:1;22513:64:0;-1:-1:-1;;;;;22590:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;22643:33;;1613:25:1;;;22643:33:0;;1586:18:1;22643:33:0;;;;;;;22316:368;;;:::o;22692:746::-;-1:-1:-1;;;;;22814:18:0;;22806:55;;;;-1:-1:-1;;;22806:55:0;;12549:2:1;22806:55:0;;;12531:21:1;12588:2;12568:18;;;12561:30;12627:26;12607:18;;;12600:54;12671:18;;22806:55:0;12347:348:1;22806:55:0;-1:-1:-1;;;;;22880:16:0;;22872:51;;;;-1:-1:-1;;;22872:51:0;;12902:2:1;22872:51:0;;;12884:21:1;12941:2;12921:18;;;12914:30;-1:-1:-1;;;12960:18:1;;;12953:52;13022:18;;22872:51:0;12700:346:1;22872:51:0;-1:-1:-1;;;;;22980:19:0;;22944:12;22980:19;;;:13;:19;;;;;;22959:4;;22980:19;;;:40;;-1:-1:-1;;;;;;23003:17:0;;;;;;:13;:17;;;;;;;;22980:40;22976:88;;;-1:-1:-1;23047:5:0;22976:88;23079:7;:30;;;;-1:-1:-1;;;;;;23091:18:0;;;;;;:14;:18;;;;;;;;23090:19;23079:30;23076:129;;;23160:9;;23143:13;23153:2;23143:9;:13::i;:::-;23134:22;;:6;:22;:::i;:::-;:35;;23126:67;;;;-1:-1:-1;;;23126:67:0;;13253:2:1;23126:67:0;;;13235:21:1;13292:2;13272:18;;;13265:30;-1:-1:-1;;;13311:18:1;;;13304:49;13370:18;;23126:67:0;13051:343:1;23126:67:0;23221:7;:25;;;;;23232:14;23243:2;23232:10;:14::i;:::-;23217:53;;;23248:22;23263:6;23248:14;:22::i;:::-;23283:41;23298:4;23304:2;23308:6;23316:7;23283:14;:41::i;:::-;23340:17;;;;23337:94;;;23373:9;;:46;;-1:-1:-1;;;23373:46:0;;-1:-1:-1;;;;;13657:15:1;;;23373:46:0;;;13639:34:1;13709:15;;;13689:18;;;13682:43;13741:18;;;13734:34;;;23373:9:0;;;;;;;;:28;;13574:18:1;;23373:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22795:643;22692:746;;;:::o;1090:191::-;1164:16;1183:6;;-1:-1:-1;;;;;1200:17:0;;;-1:-1:-1;;;;;;1200:17:0;;;;;;1233:40;;1183:6;;;;;;;1233:40;;1164:16;1233:40;1153:128;1090:191;:::o;19251:582::-;19349:7;;19385;;19302;;;;;19403:314;19427:9;:16;19423:20;;19403:314;;;19511:7;19487;:21;19495:9;19505:1;19495:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19495:12:0;19487:21;;;;;;;;;;;;;:31;;:83;;;19563:7;19539;:21;19547:9;19557:1;19547:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19547:12:0;19539:21;;;;;;;;;;;;;:31;19487:83;19465:146;;;19594:7;;19603;;19586:25;;;;;;;19251:582;;:::o;19465:146::-;19637:7;:21;19645:9;19655:1;19645:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19645:12:0;19637:21;;;;;;;;;;;;;19626:32;;;;:::i;:::-;;;19684:7;:21;19692:9;19702:1;19692:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19692:12:0;19684:21;;;;;;;;;;;;;19673:32;;;;:::i;:::-;;-1:-1:-1;19445:3:0;;;;:::i;:::-;;;;19403:314;;;;19755:7;;19745;;:17;;;;:::i;:::-;19735:7;:27;19731:58;;;19772:7;;19781;;19764:25;;;;;;19251:582;;:::o;19731:58::-;19808:7;;19817;;-1:-1:-1;19251:582:0;-1:-1:-1;19251:582:0:o;24506:279::-;24599:6;;24560:4;;24599:6;;;;;24598:7;:35;;;;-1:-1:-1;24622:11:0;;;;24598:35;:100;;;;;24678:20;;24650:24;24668:4;24650:9;:24::i;:::-;:48;;24598:100;:144;;;;-1:-1:-1;24731:10:0;24716:26;;;;:14;:26;;;;;;;;24715:27;24598:144;:179;;;;-1:-1:-1;;;;;;;24759:18:0;;;;;:14;:18;;;;;;;;;24506:279::o;24797:819::-;12058:6;:13;;-1:-1:-1;;12058:13:0;;;;;24889:20:::1;::::0;24923:21;;::::1;24920:47;;;-1:-1:-1::0;24961:6:0;24920:47:::1;24981:12;24997:1;24981:17:::0;24978:29:::1;;25000:7;;;24978:29;25099:16;::::0;;25113:1:::1;25099:16:::0;;;;;::::1;::::0;;10847:42:::1;::::0;25019:17:::1;::::0;25099:16;25113:1;25099:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25099:16:0::1;25075:40;;25144:4;25126;25131:1;25126:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;25126:23:0::1;;;-1:-1:-1::0;;;;;25126:23:0::1;;;::::0;::::1;25170:6;-1:-1:-1::0;;;;;25170:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25160:4;25165:1;25160:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25160:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25204:188:::1;::::0;-1:-1:-1;;;25204:188:0;;:57;;::::1;::::0;::::1;::::0;:188:::1;::::0;25276:12;;25303:1:::1;::::0;25319:4;;25346::::1;::::0;25366:15:::1;::::0;25204:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;25428:21:0::1;::::0;-1:-1:-1;25405:20:0::1;::::0;-1:-1:-1;;25494:16:0;;;;;:30:::1;;-1:-1:-1::0;25514:10:0::1;::::0;-1:-1:-1;;;25514:10:0;::::1;;;25494:30;25490:119;;;25552:15;::::0;:45:::1;::::0;-1:-1:-1;;;;;25552:15:0;;::::1;::::0;25580:12;;25552:45:::1;::::0;;;25580:12;25552:15;:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25541:56:0;;-1:-1:-1;;25490:119:0::1;24855:761;;;;;12073:1;-1:-1:-1::0;12076:6:0;:14;;-1:-1:-1;;12076:14:0;;;24797:819::o;23446:901::-;-1:-1:-1;;;;;23823:25:0;;23612:15;23823:25;;;:14;:25;;;;;;23612:15;;;;;;;;;;23804:54;;23815:6;;23823:25;;23850:7;23804:10;:54::i;:::-;23597:261;;;;;;;;;;;;23888:7;23869;:15;23877:6;-1:-1:-1;;;;;23869:15:0;-1:-1:-1;;;;;23869:15:0;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;23910:30:0;;;;;;:22;:30;;;;;;;;23906:74;;;-1:-1:-1;;;;;23955:15:0;;;;;;:7;:15;;;;;:25;;23974:6;;23955:15;:25;;23974:6;;23955:25;:::i;:::-;;;;-1:-1:-1;;23906:74:0;-1:-1:-1;;;;;23995:33:0;;;;;;:22;:33;;;;;;;;23991:89;;;-1:-1:-1;;;;;24043:18:0;;;;;;:7;:18;;;;;:37;;24065:15;;24043:18;:37;;24065:15;;24043:37;:::i;:::-;;;;-1:-1:-1;;23991:89:0;-1:-1:-1;;;;;24091:18:0;;;;;;:7;:18;;;;;:37;;24113:15;;24091:18;:37;;24113:15;;24091:37;:::i;:::-;;;;-1:-1:-1;;24142:14:0;;24139:58;;24171:26;24186:10;24171:14;:26::i;:::-;24218:1;24211:4;:8;:20;;;;24230:1;24223:4;:8;24211:20;24208:61;;;24246:23;24258:4;24264;24246:11;:23::i;:::-;24312:9;-1:-1:-1;;;;;24295:44:0;24304:6;-1:-1:-1;;;;;24295:44:0;;24323:15;24295:44;;;;1613:25:1;;1601:2;1586:18;;1467:177;24295:44:0;;;;;;;;23586:761;;;;;;23446:901;;;;:::o;17242:790::-;17370:7;17392;17414;17436;17458;17480;17530:23;17568:12;17595:18;17627:38;17639:7;17648;17657;17627:11;:38::i;:::-;17515:150;;;;;;17679:15;17696:23;17721:12;17737:113;17763:7;17785:4;17804:10;17829;:8;:10::i;:::-;17737:11;:113::i;:::-;17678:172;;-1:-1:-1;17678:172:0;-1:-1:-1;17678:172:0;-1:-1:-1;17954:15:0;;-1:-1:-1;17984:4:0;;-1:-1:-1;18003:10:0;;-1:-1:-1;;;;17242:790:0;;;;;;;;;;:::o;19841:311::-;19904:19;19926:10;:8;:10::i;:::-;19904:32;-1:-1:-1;19947:18:0;19968:24;19904:32;19968:10;:24;:::i;:::-;20021:4;20005:22;;;;:7;:22;;;;;:36;;19947:45;;-1:-1:-1;19947:45:0;;20005:22;;;:36;;19947:45;;20005:36;:::i;:::-;;;;-1:-1:-1;;20087:4:0;20056:37;;;;:22;:37;;;;;;;;20052:92;;;20124:4;20108:22;;;;:7;:22;;;;;:36;;20134:10;;20108:22;:36;;20134:10;;20108:36;:::i;:::-;;;;-1:-1:-1;;20052:92:0;19893:259;;19841:311;:::o;17069:165::-;17157:4;17147:7;;:14;;;;:::i;:::-;17137:7;:24;17197:10;:18;;;;;;;-1:-1:-1;17069:165:0:o;18040:486::-;18169:7;18191;18213;18248:12;18264:7;:47;;18310:1;18264:47;;;18274:33;18290:7;18299;18274:15;:33::i;:::-;18248:64;;18323:18;18345:7;:53;;18397:1;18345:53;;;18355:39;18377:7;18386;18355:21;:39::i;:::-;18323:76;-1:-1:-1;18410:23:0;18447:17;18323:76;18447:4;:17;:::i;:::-;18436:29;;:7;:29;:::i;:::-;18410:55;18501:4;;-1:-1:-1;18507:10:0;;-1:-1:-1;18040:486:0;;-1:-1:-1;;;;;18040:486:0:o;18534:541::-;18733:7;;;;18830:21;18840:11;18830:7;:21;:::i;:::-;18812:39;-1:-1:-1;18862:12:0;18877:18;18884:11;18877:4;:18;:::i;:::-;18862:33;-1:-1:-1;18906:18:0;18927:24;18940:11;18927:10;:24;:::i;:::-;18906:45;-1:-1:-1;18962:23:0;18999:17;18906:45;18999:4;:17;:::i;:::-;18988:29;;:7;:29;:::i;:::-;19036:7;;;;-1:-1:-1;19062:4:0;;-1:-1:-1;18534:541:0;;-1:-1:-1;;;;;;;18534:541:0:o;20160:171::-;20238:7;20263;20258:22;;-1:-1:-1;20279:1:0;20272:8;;20258:22;20320:3;20309:7;;20299;:17;;;;:::i;:::-;20298:25;;;;:::i;20339:512::-;20450:7;20513:10;20496:13;;20478:15;:31;;;;:::i;:::-;:45;20475:287;;20588:3;20573:11;:7;20583:1;20573:11;:::i;:::-;20572:19;;;;:::i;:::-;20565:26;;;;20475:287;20656:10;20639:13;;20621:15;:31;;;;:::i;:::-;:45;20618:144;;20747:3;20726:7;:15;;20740:1;20726:15;;;20736:1;20726:15;20715:28;;;;:7;:28;:::i;20618:144::-;20840:3;20806:7;:28;;20820:14;;20806:28;;;20816:1;20806:28;20795:41;;:7;:41;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2110:180::-;2169:6;2222:2;2210:9;2201:7;2197:23;2193:32;2190:52;;;2238:1;2235;2228:12;2190:52;-1:-1:-1;2261:23:1;;2110:180;-1:-1:-1;2110:180:1:o;2692:160::-;2757:20;;2813:13;;2806:21;2796:32;;2786:60;;2842:1;2839;2832:12;2786:60;2692:160;;;:::o;2857:180::-;2913:6;2966:2;2954:9;2945:7;2941:23;2937:32;2934:52;;;2982:1;2979;2972:12;2934:52;3005:26;3021:9;3005:26;:::i;3042:315::-;3107:6;3115;3168:2;3156:9;3147:7;3143:23;3139:32;3136:52;;;3184:1;3181;3174:12;3136:52;3223:9;3210:23;3242:31;3267:5;3242:31;:::i;:::-;3292:5;-1:-1:-1;3316:35:1;3347:2;3332:18;;3316:35;:::i;:::-;3306:45;;3042:315;;;;;:::o;3362:367::-;3425:8;3435:6;3489:3;3482:4;3474:6;3470:17;3466:27;3456:55;;3507:1;3504;3497:12;3456:55;-1:-1:-1;3530:20:1;;3573:18;3562:30;;3559:50;;;3605:1;3602;3595:12;3559:50;3642:4;3634:6;3630:17;3618:29;;3702:3;3695:4;3685:6;3682:1;3678:14;3670:6;3666:27;3662:38;3659:47;3656:67;;;3719:1;3716;3709:12;3656:67;3362:367;;;;;:::o;3734:773::-;3856:6;3864;3872;3880;3933:2;3921:9;3912:7;3908:23;3904:32;3901:52;;;3949:1;3946;3939:12;3901:52;3989:9;3976:23;4018:18;4059:2;4051:6;4048:14;4045:34;;;4075:1;4072;4065:12;4045:34;4114:70;4176:7;4167:6;4156:9;4152:22;4114:70;:::i;:::-;4203:8;;-1:-1:-1;4088:96:1;-1:-1:-1;4291:2:1;4276:18;;4263:32;;-1:-1:-1;4307:16:1;;;4304:36;;;4336:1;4333;4326:12;4304:36;;4375:72;4439:7;4428:8;4417:9;4413:24;4375:72;:::i;:::-;3734:773;;;;-1:-1:-1;4466:8:1;-1:-1:-1;;;;3734:773:1:o;4512:388::-;4580:6;4588;4641:2;4629:9;4620:7;4616:23;4612:32;4609:52;;;4657:1;4654;4647:12;4609:52;4696:9;4683:23;4715:31;4740:5;4715:31;:::i;:::-;4765:5;-1:-1:-1;4822:2:1;4807:18;;4794:32;4835:33;4794:32;4835:33;:::i;:::-;4887:7;4877:17;;;4512:388;;;;;:::o;5131:380::-;5210:1;5206:12;;;;5253;;;5274:61;;5328:4;5320:6;5316:17;5306:27;;5274:61;5381:2;5373:6;5370:14;5350:18;5347:38;5344:161;;5427:10;5422:3;5418:20;5415:1;5408:31;5462:4;5459:1;5452:15;5490:4;5487:1;5480:15;5344:161;;5131:380;;;:::o;5516:356::-;5718:2;5700:21;;;5737:18;;;5730:30;5796:34;5791:2;5776:18;;5769:62;5863:2;5848:18;;5516:356::o;5877:251::-;5947:6;6000:2;5988:9;5979:7;5975:23;5971:32;5968:52;;;6016:1;6013;6006:12;5968:52;6048:9;6042:16;6067:31;6092:5;6067:31;:::i;7054:306::-;7142:6;7150;7158;7211:2;7199:9;7190:7;7186:23;7182:32;7179:52;;;7227:1;7224;7217:12;7179:52;7256:9;7250:16;7240:26;;7306:2;7295:9;7291:18;7285:25;7275:35;;7350:2;7339:9;7335:18;7329:25;7319:35;;7054:306;;;;;:::o;7365:127::-;7426:10;7421:3;7417:20;7414:1;7407:31;7457:4;7454:1;7447:15;7481:4;7478:1;7471:15;7497:128;7564:9;;;7585:11;;;7582:37;;;7599:18;;:::i;7630:217::-;7670:1;7696;7686:132;;7740:10;7735:3;7731:20;7728:1;7721:31;7775:4;7772:1;7765:15;7803:4;7800:1;7793:15;7686:132;-1:-1:-1;7832:9:1;;7630:217::o;8564:127::-;8625:10;8620:3;8616:20;8613:1;8606:31;8656:4;8653:1;8646:15;8680:4;8677:1;8670:15;8696:127;8757:10;8752:3;8748:20;8745:1;8738:31;8788:4;8785:1;8778:15;8812:4;8809:1;8802:15;8828:135;8867:3;8888:17;;;8885:43;;8908:18;;:::i;:::-;-1:-1:-1;8955:1:1;8944:13;;8828:135::o;8968:125::-;9033:9;;;9054:10;;;9051:36;;;9067:18;;:::i;9454:422::-;9543:1;9586:5;9543:1;9600:270;9621:7;9611:8;9608:21;9600:270;;;9680:4;9676:1;9672:6;9668:17;9662:4;9659:27;9656:53;;;9689:18;;:::i;:::-;9739:7;9729:8;9725:22;9722:55;;;9759:16;;;;9722:55;9838:22;;;;9798:15;;;;9600:270;;;9604:3;9454:422;;;;;:::o;9881:806::-;9930:5;9960:8;9950:80;;-1:-1:-1;10001:1:1;10015:5;;9950:80;10049:4;10039:76;;-1:-1:-1;10086:1:1;10100:5;;10039:76;10131:4;10149:1;10144:59;;;;10217:1;10212:130;;;;10124:218;;10144:59;10174:1;10165:10;;10188:5;;;10212:130;10249:3;10239:8;10236:17;10233:43;;;10256:18;;:::i;:::-;-1:-1:-1;;10312:1:1;10298:16;;10327:5;;10124:218;;10426:2;10416:8;10413:16;10407:3;10401:4;10398:13;10394:36;10388:2;10378:8;10375:16;10370:2;10364:4;10361:12;10357:35;10354:77;10351:159;;;-1:-1:-1;10463:19:1;;;10495:5;;10351:159;10542:34;10567:8;10561:4;10542:34;:::i;:::-;10612:6;10608:1;10604:6;10600:19;10591:7;10588:32;10585:58;;;10623:18;;:::i;:::-;10661:20;;9881:806;-1:-1:-1;;;9881:806:1:o;10692:140::-;10750:5;10779:47;10820:4;10810:8;10806:19;10800:4;10779:47;:::i;10837:168::-;10910:9;;;10941;;10958:15;;;10952:22;;10938:37;10928:71;;10979:18;;:::i;13911:980::-;14173:4;14221:3;14210:9;14206:19;14252:6;14241:9;14234:25;14278:2;14316:6;14311:2;14300:9;14296:18;14289:34;14359:3;14354:2;14343:9;14339:18;14332:31;14383:6;14418;14412:13;14449:6;14441;14434:22;14487:3;14476:9;14472:19;14465:26;;14526:2;14518:6;14514:15;14500:29;;14547:1;14557:195;14571:6;14568:1;14565:13;14557:195;;;14636:13;;-1:-1:-1;;;;;14632:39:1;14620:52;;14727:15;;;;14692:12;;;;14668:1;14586:9;14557:195;;;-1:-1:-1;;;;;;;14808:32:1;;;;14803:2;14788:18;;14781:60;-1:-1:-1;;;14872:3:1;14857:19;14850:35;14769:3;13911:980;-1:-1:-1;;;13911:980:1:o

Swarm Source

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