ETH Price: $3,266.22 (+0.19%)
Gas: 2 Gwei

Token

FAFA (FAFA)
 

Overview

Max Total Supply

420,690,000,000,000 FAFA

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.48395 FAFA

Value
$0.00
0x9c5c388cf9bbd016a0f8d84ab0f21020c5de42bf
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:
fafa

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-19
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

pragma solidity ^0.8.4;
/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

pragma solidity ^0.8.4;
/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.4;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

pragma solidity ^0.8.4;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

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

pragma solidity ^0.8.4;

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

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

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

pragma solidity ^0.8.4;

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

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

pragma solidity ^0.8.4;

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

pragma solidity ^0.8.4;

contract fafa is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    mapping (address => uint256) public _rOwned;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBlacklisted;

    address public _PresaleAddress = 0x000000000000000000000000000000000000dEaD;
    bool public liquidityLaunched = false;
    bool public isFirstLaunch = true;
    uint256 public lastSnipeTaxBlock;
    uint8 public snipeBlocks = 0;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 42069 * (10**10) * (10**9);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 3;
    
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 3;
    
    uint256 private _redisFee;
    uint256 private _taxFee;
    
    string private constant _name = "FAFA";
    string private constant _symbol = "FAFA";
    uint8 private constant _decimals = 9;
    

    address payable private _marketingAddress = payable(0x5E5fD0DfcaaAa511626a94A114a8834CD13FDe07);
    address payable private _buybackAddress = payable(0x15ef0B24De666D7147A6cFce68526b53320541a2);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

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

        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_buybackAddress] = true;

        emit Transfer(address(0x0000000000000000000000000000000000000000), _msgSender(), _tTotal);
    }

    function setSnipeBlocks(uint8 _blocks) external onlyOwner {
        require(!liquidityLaunched);
        snipeBlocks = _blocks;
    }

    function setPresaleContract(address payable wallet) external onlyOwner{
        _PresaleAddress = wallet;
        excludeFromFees(_PresaleAddress, true);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlacklisted[from], 'Blacklisted address');

        _redisFee = 0;
        _taxFee = 0;

        // No adding liquidity before launched
        if (!liquidityLaunched) {
            if (to == uniswapV2Pair) {
                liquidityLaunched = true;
                // high tax ends in x blocks
                lastSnipeTaxBlock = block.number + snipeBlocks;
            }
        }

        //antibot block
        if (from != address(_PresaleAddress)) {
            if(liquidityLaunched && block.number <= lastSnipeTaxBlock && !isFirstLaunch){
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
                _tokenTransfer(from,to,amount);
                if (to != address(uniswapV2Pair)) {
                    _isBlacklisted[to]=true;
                }
                return;
            }
        }

        if (liquidityLaunched && isFirstLaunch){
            isFirstLaunch = false;
        }
        
        if (from != owner() && to != owner()) {
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance > 0) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
            
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
            if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
                _redisFee = 0;
                _taxFee = 0;
            }
            
        }

        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        uint256 mktAmount = amount.mul(1).div(2);
        uint256 buybackAmount = amount.sub(mktAmount);
        _marketingAddress.transfer(mktAmount);
        _buybackAddress.transfer(buybackAmount);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        uint256 tTransferAmount = tAmount.sub(tAmount.mul(_redisFee).div(100)).sub(tAmount.mul(_taxFee).div(100));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tAmount.mul(_redisFee).div(100).mul(currentRate);
        uint256 rTeam = tAmount.mul(_taxFee).div(100).mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
        _reflectFee(rFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    /**
     * only thing to change _rTotal
     */
    function _reflectFee(uint256 rFee) private {
        _rTotal = _rTotal.sub(rFee);
    }

    receive() external payable {}

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    event ExcludeFromFees(address indexed account, bool isExcluded);
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    event BlacklistAddress(address indexed account, bool value);
    function blacklistAddress(address account, bool value) public onlyOwner{
        _isBlacklisted[account] = value;
        emit BlacklistAddress(account, value);
    }

    event BlacklistMultiAddresses(address[] accounts, bool value);
    function blacklistMultiAddresses(address[] calldata accounts, bool value) public onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = value;
        }
        emit BlacklistMultiAddresses(accounts, value);
    }

}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"BlacklistAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"BlacklistMultiAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":"_PresaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistMultiAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFirstLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSnipeTaxBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setPresaleContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_blocks","type":"uint8"}],"name":"setSnipeBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipeBlocks","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff0219169083151502179055506001600560156101000a81548160ff0219169083151502179055506000600760006101000a81548160ff021916908360ff160217905550695915a68d88da6a080000600019620000b391906200088f565b600019620000c2919062000816565b60085560006009556003600a556000600b556003600c55735e5fd0dfcaaaa511626a94a114a8834cd13fde07600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507315ef0b24de666d7147a6cfce68526b53320541a2601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff021916908315150217905550348015620001c657600080fd5b506000620001d96200073660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600854600160006200028e6200073660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036d57600080fd5b505afa15801562000382573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a891906200077e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040b57600080fd5b505afa15801562000420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044691906200077e565b6040518363ffffffff1660e01b815260040162000465929190620007cc565b602060405180830381600087803b1580156200048057600080fd5b505af115801562000495573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bb91906200077e565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620005116200073e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006be6200073660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef695915a68d88da6a080000604051620007279190620007f9565b60405180910390a3506200093f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620007788162000925565b92915050565b6000602082840312156200079157600080fd5b6000620007a18482850162000767565b91505092915050565b620007b58162000851565b82525050565b620007c68162000885565b82525050565b6000604082019050620007e36000830185620007aa565b620007f26020830184620007aa565b9392505050565b6000602082019050620008106000830184620007bb565b92915050565b6000620008238262000885565b9150620008308362000885565b925082821015620008465762000845620008c7565b5b828203905092915050565b60006200085e8262000865565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200089c8262000885565b9150620008a98362000885565b925082620008bc57620008bb620008f6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620009308162000851565b81146200093c57600080fd5b50565b613982806200094f6000396000f3fe6080604052600436106101bb5760003560e01c80636a1961c4116100ec578063a9bbd1141161008a578063c492f04611610064578063c492f04614610631578063dd62ed3e1461065a578063f2fde38b14610697578063fca419ae146106c0576101c2565b8063a9bbd114146105b6578063a9f61518146105df578063c024666814610608576101c2565b8063768dc710116100c6578063768dc710146104e65780638da5cb5b1461052357806395d89b411461054e578063a9059cbb14610579576101c2565b80636a1961c41461046757806370a0823114610492578063715018a6146104cf576101c2565b80631cdd3be3116101595780632be29fa8116101335780632be29fa8146103bd578063313ce567146103e8578063455a43961461041357806349bd5a5e1461043c576101c2565b80631cdd3be3146103185780631eb147d51461035557806323b872dd14610380576101c2565b80630cfc15f9116101955780630cfc15f91461025a5780631694505e1461029757806318128129146102c257806318160ddd146102ed576101c2565b8063032bba6a146101c757806306fdde03146101f2578063095ea7b31461021d576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106e9565b6040516101e99190613009565b60405180910390f35b3480156101fe57600080fd5b5061020761070f565b604051610214919061308c565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190612c56565b61074c565b6040516102519190613056565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190612b14565b61076a565b60405161028e919061320e565b60405180910390f35b3480156102a357600080fd5b506102ac610782565b6040516102b99190613071565b60405180910390f35b3480156102ce57600080fd5b506102d76107a8565b6040516102e49190613056565b60405180910390f35b3480156102f957600080fd5b506103026107bb565b60405161030f919061320e565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190612b14565b6107cd565b60405161034c9190613056565b60405180910390f35b34801561036157600080fd5b5061036a6107ed565b6040516103779190613056565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612bcb565b610800565b6040516103b49190613056565b60405180910390f35b3480156103c957600080fd5b506103d26108d9565b6040516103df9190613283565b60405180910390f35b3480156103f457600080fd5b506103fd6108ec565b60405161040a9190613283565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612c1a565b6108f5565b005b34801561044857600080fd5b50610451610a33565b60405161045e9190613009565b60405180910390f35b34801561047357600080fd5b5061047c610a59565b604051610489919061320e565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190612b14565b610a5f565b6040516104c6919061320e565b60405180910390f35b3480156104db57600080fd5b506104e4610ab0565b005b3480156104f257600080fd5b5061050d60048036038101906105089190612b14565b610c03565b60405161051a9190613056565b60405180910390f35b34801561052f57600080fd5b50610538610c23565b6040516105459190613009565b60405180910390f35b34801561055a57600080fd5b50610563610c4c565b604051610570919061308c565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190612c56565b610c89565b6040516105ad9190613056565b60405180910390f35b3480156105c257600080fd5b506105dd60048036038101906105d89190612b66565b610ca7565b005b3480156105eb57600080fd5b5061060660048036038101906106019190612cea565b610dad565b005b34801561061457600080fd5b5061062f600480360381019061062a9190612c1a565b610e7a565b005b34801561063d57600080fd5b5061065860048036038101906106539190612c92565b610fb8565b005b34801561066657600080fd5b50610681600480360381019061067c9190612b8f565b611153565b60405161068e919061320e565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b99190612b14565b6111da565b005b3480156106cc57600080fd5b506106e760048036038101906106e29190612c92565b61139c565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4641464100000000000000000000000000000000000000000000000000000000815250905090565b6000610760610759611537565b848461153f565b6001905092915050565b60016020528060005260406000206000915090505481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560159054906101000a900460ff1681565b6000695915a68d88da6a080000905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600560149054906101000a900460ff1681565b600061080d84848461170a565b6108ce84610819611537565b6108c98560405180606001604052806028815260200161392560289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061087f611537565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f629092919063ffffffff16565b61153f565b600190509392505050565b600760009054906101000a900460ff1681565b60006009905090565b6108fd611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109819061318e565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f09fb98d4f02479ce251faed0f992a3c326d006e19ffa4f7269239763a644f72582604051610a279190613056565b60405180910390a25050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6000610aa9600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fc6565b9050919050565b610ab8611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c9061318e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4641464100000000000000000000000000000000000000000000000000000000815250905090565b6000610c9d610c96611537565b848461170a565b6001905092915050565b610caf611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d339061318e565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610daa600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610e7a565b50565b610db5611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e399061318e565b60405180910390fd5b600560149054906101000a900460ff1615610e5c57600080fd5b80600760006101000a81548160ff021916908360ff16021790555050565b610e82611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f069061318e565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fac9190613056565b60405180910390a25050565b610fc0611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110449061318e565b60405180910390fd5b60005b83839050811015611112578160036000868685818110611099577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906110ae9190612b14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061110a90613506565b915050611050565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161114693929190613024565b60405180910390a1505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111e2611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112669061318e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d6906130ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113a4611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114289061318e565b60405180910390fd5b60005b838390508110156114f657816004600086868581811061147d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906114929190612b14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114ee90613506565b915050611434565b507fd09d39390fc688d281adc0e04befeb10838d7a58109b6eb8c29db9b251ebccf683838360405161152a93929190613024565b60405180910390a1505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a6906131ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561161f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116169061310e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116fd919061320e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561177a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611771906131ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e1906130ae565b60405180910390fd5b6000811161182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906131ae565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b19061314e565b60405180910390fd5b6000600d819055506000600e81905550600560149054906101000a900460ff1661197557601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611974576001600560146101000a81548160ff021916908315150217905550600760009054906101000a900460ff1660ff164361196d9190613321565b6006819055505b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ad757600560149054906101000a900460ff1680156119e857506006544311155b8015611a015750600560159054906101000a900460ff16155b15611ad657600954600d81905550600a54600e81905550611a23838383612034565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ad1576001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611f5d565b5b600560149054906101000a900460ff168015611aff5750600560159054906101000a900460ff165b15611b20576000600560156101000a81548160ff0219169083151502179055505b611b28610c23565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b965750611b66610c23565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f51576000611ba630610a5f565b9050601260149054906101000a900460ff16158015611c135750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2b5750601260159054906101000a900460ff165b8015611c375750600081115b15611c5f57611c4581612044565b60004790506000811115611c5d57611c5c4761233e565b5b505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d0a5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2257600954600d81905550600a54600e819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dcd5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611de557600b54600d81905550600c54600e819055505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e865750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f395750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f385750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f4f576000600d819055506000600e819055505b505b611f5c838383612034565b5b505050565b6000838311158290611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa1919061308c565b60405180910390fd5b5060008385611fb99190613402565b9050809150509392505050565b600060085482111561200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906130ce565b60405180910390fd5b6000612017612457565b905061202c818461248290919063ffffffff16565b915050919050565b61203f8383836124cc565b505050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120d05781602001602082028036833780820191505090505b509050308160008151811061210e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121b057600080fd5b505afa1580156121c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e89190612b3d565b81600181518110612222577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061228930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461153f565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ed959493929190613229565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b6000612367600261235960018561284390919063ffffffff16565b61248290919063ffffffff16565b9050600061237e82846128be90919063ffffffff16565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156123e8573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612451573d6000803e3d6000fd5b50505050565b6000806000612464612908565b9150915061247b818361248290919063ffffffff16565b9250505090565b60006124c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061296d565b905092915050565b60006124d6612457565b9050600061254d61250560646124f7600e548761284390919063ffffffff16565b61248290919063ffffffff16565b61253f6125306064612522600d548961284390919063ffffffff16565b61248290919063ffffffff16565b866128be90919063ffffffff16565b6128be90919063ffffffff16565b90506000612564838561284390919063ffffffff16565b905060006125a2846125946064612586600d548a61284390919063ffffffff16565b61248290919063ffffffff16565b61284390919063ffffffff16565b905060006125e0856125d260646125c4600e548b61284390919063ffffffff16565b61248290919063ffffffff16565b61284390919063ffffffff16565b90506000612609826125fb85876128be90919063ffffffff16565b6128be90919063ffffffff16565b905061265d84600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128be90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126f281600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278782600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127d383612a2e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612830919061320e565b60405180910390a3505050505050505050565b60008083141561285657600090506128b8565b6000828461286491906133a8565b90508284826128739190613377565b146128b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128aa9061316e565b60405180910390fd5b809150505b92915050565b600061290083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f62565b905092915050565b600080600060085490506000695915a68d88da6a0800009050612940695915a68d88da6a08000060085461248290919063ffffffff16565b82101561296057600854695915a68d88da6a080000935093505050612969565b81819350935050505b9091565b600080831182906129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ab919061308c565b60405180910390fd5b50600083856129c39190613377565b9050809150509392505050565b60008082846129df9190613321565b905083811015612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b9061312e565b60405180910390fd5b8091505092915050565b612a43816008546128be90919063ffffffff16565b60088190555050565b600081359050612a5b816138b1565b92915050565b600081519050612a70816138b1565b92915050565b600081359050612a85816138c8565b92915050565b60008083601f840112612a9d57600080fd5b8235905067ffffffffffffffff811115612ab657600080fd5b602083019150836020820283011115612ace57600080fd5b9250929050565b600081359050612ae4816138df565b92915050565b600081359050612af9816138f6565b92915050565b600081359050612b0e8161390d565b92915050565b600060208284031215612b2657600080fd5b6000612b3484828501612a4c565b91505092915050565b600060208284031215612b4f57600080fd5b6000612b5d84828501612a61565b91505092915050565b600060208284031215612b7857600080fd5b6000612b8684828501612a76565b91505092915050565b60008060408385031215612ba257600080fd5b6000612bb085828601612a4c565b9250506020612bc185828601612a4c565b9150509250929050565b600080600060608486031215612be057600080fd5b6000612bee86828701612a4c565b9350506020612bff86828701612a4c565b9250506040612c1086828701612aea565b9150509250925092565b60008060408385031215612c2d57600080fd5b6000612c3b85828601612a4c565b9250506020612c4c85828601612ad5565b9150509250929050565b60008060408385031215612c6957600080fd5b6000612c7785828601612a4c565b9250506020612c8885828601612aea565b9150509250929050565b600080600060408486031215612ca757600080fd5b600084013567ffffffffffffffff811115612cc157600080fd5b612ccd86828701612a8b565b93509350506020612ce086828701612ad5565b9150509250925092565b600060208284031215612cfc57600080fd5b6000612d0a84828501612aff565b91505092915050565b6000612d1f8383612d2b565b60208301905092915050565b612d3481613436565b82525050565b612d4381613436565b82525050565b6000612d5583856132e8565b9350612d608261329e565b8060005b85811015612d9957612d76828461330a565b612d808882612d13565b9750612d8b836132ce565b925050600181019050612d64565b5085925050509392505050565b6000612db1826132b8565b612dbb81856132e8565b9350612dc6836132a8565b8060005b83811015612df7578151612dde8882612d13565b9750612de9836132db565b925050600181019050612dca565b5085935050505092915050565b612e0d8161345a565b82525050565b612e1c8161349d565b82525050565b612e2b816134c1565b82525050565b6000612e3c826132c3565b612e4681856132f9565b9350612e568185602086016134d3565b612e5f816135ad565b840191505092915050565b6000612e776023836132f9565b9150612e82826135be565b604082019050919050565b6000612e9a602a836132f9565b9150612ea58261360d565b604082019050919050565b6000612ebd6026836132f9565b9150612ec88261365c565b604082019050919050565b6000612ee06022836132f9565b9150612eeb826136ab565b604082019050919050565b6000612f03601b836132f9565b9150612f0e826136fa565b602082019050919050565b6000612f266013836132f9565b9150612f3182613723565b602082019050919050565b6000612f496021836132f9565b9150612f548261374c565b604082019050919050565b6000612f6c6020836132f9565b9150612f778261379b565b602082019050919050565b6000612f8f6029836132f9565b9150612f9a826137c4565b604082019050919050565b6000612fb26025836132f9565b9150612fbd82613813565b604082019050919050565b6000612fd56024836132f9565b9150612fe082613862565b604082019050919050565b612ff481613486565b82525050565b61300381613490565b82525050565b600060208201905061301e6000830184612d3a565b92915050565b6000604082019050818103600083015261303f818587612d49565b905061304e6020830184612e04565b949350505050565b600060208201905061306b6000830184612e04565b92915050565b60006020820190506130866000830184612e13565b92915050565b600060208201905081810360008301526130a68184612e31565b905092915050565b600060208201905081810360008301526130c781612e6a565b9050919050565b600060208201905081810360008301526130e781612e8d565b9050919050565b6000602082019050818103600083015261310781612eb0565b9050919050565b6000602082019050818103600083015261312781612ed3565b9050919050565b6000602082019050818103600083015261314781612ef6565b9050919050565b6000602082019050818103600083015261316781612f19565b9050919050565b6000602082019050818103600083015261318781612f3c565b9050919050565b600060208201905081810360008301526131a781612f5f565b9050919050565b600060208201905081810360008301526131c781612f82565b9050919050565b600060208201905081810360008301526131e781612fa5565b9050919050565b6000602082019050818103600083015261320781612fc8565b9050919050565b60006020820190506132236000830184612feb565b92915050565b600060a08201905061323e6000830188612feb565b61324b6020830187612e22565b818103604083015261325d8186612da6565b905061326c6060830185612d3a565b6132796080830184612feb565b9695505050505050565b60006020820190506132986000830184612ffa565b92915050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006133196020840184612a4c565b905092915050565b600061332c82613486565b915061333783613486565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561336c5761336b61354f565b5b828201905092915050565b600061338282613486565b915061338d83613486565b92508261339d5761339c61357e565b5b828204905092915050565b60006133b382613486565b91506133be83613486565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133f7576133f661354f565b5b828202905092915050565b600061340d82613486565b915061341883613486565b92508282101561342b5761342a61354f565b5b828203905092915050565b600061344182613466565b9050919050565b600061345382613466565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134a8826134af565b9050919050565b60006134ba82613466565b9050919050565b60006134cc82613486565b9050919050565b60005b838110156134f15780820151818401526020810190506134d6565b83811115613500576000848401525b50505050565b600061351182613486565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135445761354361354f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6138ba81613436565b81146138c557600080fd5b50565b6138d181613448565b81146138dc57600080fd5b50565b6138e88161345a565b81146138f357600080fd5b50565b6138ff81613486565b811461390a57600080fd5b50565b61391681613490565b811461392157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220556d2e655e47be997821c0546ffc577a27d02089460e16f9d30126ad82bc0fe764736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80636a1961c4116100ec578063a9bbd1141161008a578063c492f04611610064578063c492f04614610631578063dd62ed3e1461065a578063f2fde38b14610697578063fca419ae146106c0576101c2565b8063a9bbd114146105b6578063a9f61518146105df578063c024666814610608576101c2565b8063768dc710116100c6578063768dc710146104e65780638da5cb5b1461052357806395d89b411461054e578063a9059cbb14610579576101c2565b80636a1961c41461046757806370a0823114610492578063715018a6146104cf576101c2565b80631cdd3be3116101595780632be29fa8116101335780632be29fa8146103bd578063313ce567146103e8578063455a43961461041357806349bd5a5e1461043c576101c2565b80631cdd3be3146103185780631eb147d51461035557806323b872dd14610380576101c2565b80630cfc15f9116101955780630cfc15f91461025a5780631694505e1461029757806318128129146102c257806318160ddd146102ed576101c2565b8063032bba6a146101c757806306fdde03146101f2578063095ea7b31461021d576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106e9565b6040516101e99190613009565b60405180910390f35b3480156101fe57600080fd5b5061020761070f565b604051610214919061308c565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190612c56565b61074c565b6040516102519190613056565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190612b14565b61076a565b60405161028e919061320e565b60405180910390f35b3480156102a357600080fd5b506102ac610782565b6040516102b99190613071565b60405180910390f35b3480156102ce57600080fd5b506102d76107a8565b6040516102e49190613056565b60405180910390f35b3480156102f957600080fd5b506103026107bb565b60405161030f919061320e565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190612b14565b6107cd565b60405161034c9190613056565b60405180910390f35b34801561036157600080fd5b5061036a6107ed565b6040516103779190613056565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190612bcb565b610800565b6040516103b49190613056565b60405180910390f35b3480156103c957600080fd5b506103d26108d9565b6040516103df9190613283565b60405180910390f35b3480156103f457600080fd5b506103fd6108ec565b60405161040a9190613283565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612c1a565b6108f5565b005b34801561044857600080fd5b50610451610a33565b60405161045e9190613009565b60405180910390f35b34801561047357600080fd5b5061047c610a59565b604051610489919061320e565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190612b14565b610a5f565b6040516104c6919061320e565b60405180910390f35b3480156104db57600080fd5b506104e4610ab0565b005b3480156104f257600080fd5b5061050d60048036038101906105089190612b14565b610c03565b60405161051a9190613056565b60405180910390f35b34801561052f57600080fd5b50610538610c23565b6040516105459190613009565b60405180910390f35b34801561055a57600080fd5b50610563610c4c565b604051610570919061308c565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190612c56565b610c89565b6040516105ad9190613056565b60405180910390f35b3480156105c257600080fd5b506105dd60048036038101906105d89190612b66565b610ca7565b005b3480156105eb57600080fd5b5061060660048036038101906106019190612cea565b610dad565b005b34801561061457600080fd5b5061062f600480360381019061062a9190612c1a565b610e7a565b005b34801561063d57600080fd5b5061065860048036038101906106539190612c92565b610fb8565b005b34801561066657600080fd5b50610681600480360381019061067c9190612b8f565b611153565b60405161068e919061320e565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b99190612b14565b6111da565b005b3480156106cc57600080fd5b506106e760048036038101906106e29190612c92565b61139c565b005b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f4641464100000000000000000000000000000000000000000000000000000000815250905090565b6000610760610759611537565b848461153f565b6001905092915050565b60016020528060005260406000206000915090505481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560159054906101000a900460ff1681565b6000695915a68d88da6a080000905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600560149054906101000a900460ff1681565b600061080d84848461170a565b6108ce84610819611537565b6108c98560405180606001604052806028815260200161392560289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061087f611537565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f629092919063ffffffff16565b61153f565b600190509392505050565b600760009054906101000a900460ff1681565b60006009905090565b6108fd611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109819061318e565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f09fb98d4f02479ce251faed0f992a3c326d006e19ffa4f7269239763a644f72582604051610a279190613056565b60405180910390a25050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6000610aa9600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fc6565b9050919050565b610ab8611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c9061318e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4641464100000000000000000000000000000000000000000000000000000000815250905090565b6000610c9d610c96611537565b848461170a565b6001905092915050565b610caf611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d339061318e565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610daa600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610e7a565b50565b610db5611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e399061318e565b60405180910390fd5b600560149054906101000a900460ff1615610e5c57600080fd5b80600760006101000a81548160ff021916908360ff16021790555050565b610e82611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f069061318e565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fac9190613056565b60405180910390a25050565b610fc0611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110449061318e565b60405180910390fd5b60005b83839050811015611112578160036000868685818110611099577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906110ae9190612b14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061110a90613506565b915050611050565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161114693929190613024565b60405180910390a1505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111e2611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112669061318e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d6906130ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113a4611537565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114289061318e565b60405180910390fd5b60005b838390508110156114f657816004600086868581811061147d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906114929190612b14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114ee90613506565b915050611434565b507fd09d39390fc688d281adc0e04befeb10838d7a58109b6eb8c29db9b251ebccf683838360405161152a93929190613024565b60405180910390a1505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a6906131ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561161f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116169061310e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116fd919061320e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561177a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611771906131ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e1906130ae565b60405180910390fd5b6000811161182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906131ae565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b19061314e565b60405180910390fd5b6000600d819055506000600e81905550600560149054906101000a900460ff1661197557601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611974576001600560146101000a81548160ff021916908315150217905550600760009054906101000a900460ff1660ff164361196d9190613321565b6006819055505b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ad757600560149054906101000a900460ff1680156119e857506006544311155b8015611a015750600560159054906101000a900460ff16155b15611ad657600954600d81905550600a54600e81905550611a23838383612034565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ad1576001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b611f5d565b5b600560149054906101000a900460ff168015611aff5750600560159054906101000a900460ff165b15611b20576000600560156101000a81548160ff0219169083151502179055505b611b28610c23565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b965750611b66610c23565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f51576000611ba630610a5f565b9050601260149054906101000a900460ff16158015611c135750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2b5750601260159054906101000a900460ff165b8015611c375750600081115b15611c5f57611c4581612044565b60004790506000811115611c5d57611c5c4761233e565b5b505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d0a5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2257600954600d81905550600a54600e819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dcd5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611de557600b54600d81905550600c54600e819055505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e865750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f395750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f385750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f4f576000600d819055506000600e819055505b505b611f5c838383612034565b5b505050565b6000838311158290611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa1919061308c565b60405180910390fd5b5060008385611fb99190613402565b9050809150509392505050565b600060085482111561200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906130ce565b60405180910390fd5b6000612017612457565b905061202c818461248290919063ffffffff16565b915050919050565b61203f8383836124cc565b505050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156120d05781602001602082028036833780820191505090505b509050308160008151811061210e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121b057600080fd5b505afa1580156121c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e89190612b3d565b81600181518110612222577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061228930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461153f565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ed959493929190613229565b600060405180830381600087803b15801561230757600080fd5b505af115801561231b573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b6000612367600261235960018561284390919063ffffffff16565b61248290919063ffffffff16565b9050600061237e82846128be90919063ffffffff16565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156123e8573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612451573d6000803e3d6000fd5b50505050565b6000806000612464612908565b9150915061247b818361248290919063ffffffff16565b9250505090565b60006124c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061296d565b905092915050565b60006124d6612457565b9050600061254d61250560646124f7600e548761284390919063ffffffff16565b61248290919063ffffffff16565b61253f6125306064612522600d548961284390919063ffffffff16565b61248290919063ffffffff16565b866128be90919063ffffffff16565b6128be90919063ffffffff16565b90506000612564838561284390919063ffffffff16565b905060006125a2846125946064612586600d548a61284390919063ffffffff16565b61248290919063ffffffff16565b61284390919063ffffffff16565b905060006125e0856125d260646125c4600e548b61284390919063ffffffff16565b61248290919063ffffffff16565b61284390919063ffffffff16565b90506000612609826125fb85876128be90919063ffffffff16565b6128be90919063ffffffff16565b905061265d84600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128be90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126f281600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278782600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127d383612a2e565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612830919061320e565b60405180910390a3505050505050505050565b60008083141561285657600090506128b8565b6000828461286491906133a8565b90508284826128739190613377565b146128b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128aa9061316e565b60405180910390fd5b809150505b92915050565b600061290083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f62565b905092915050565b600080600060085490506000695915a68d88da6a0800009050612940695915a68d88da6a08000060085461248290919063ffffffff16565b82101561296057600854695915a68d88da6a080000935093505050612969565b81819350935050505b9091565b600080831182906129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ab919061308c565b60405180910390fd5b50600083856129c39190613377565b9050809150509392505050565b60008082846129df9190613321565b905083811015612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b9061312e565b60405180910390fd5b8091505092915050565b612a43816008546128be90919063ffffffff16565b60088190555050565b600081359050612a5b816138b1565b92915050565b600081519050612a70816138b1565b92915050565b600081359050612a85816138c8565b92915050565b60008083601f840112612a9d57600080fd5b8235905067ffffffffffffffff811115612ab657600080fd5b602083019150836020820283011115612ace57600080fd5b9250929050565b600081359050612ae4816138df565b92915050565b600081359050612af9816138f6565b92915050565b600081359050612b0e8161390d565b92915050565b600060208284031215612b2657600080fd5b6000612b3484828501612a4c565b91505092915050565b600060208284031215612b4f57600080fd5b6000612b5d84828501612a61565b91505092915050565b600060208284031215612b7857600080fd5b6000612b8684828501612a76565b91505092915050565b60008060408385031215612ba257600080fd5b6000612bb085828601612a4c565b9250506020612bc185828601612a4c565b9150509250929050565b600080600060608486031215612be057600080fd5b6000612bee86828701612a4c565b9350506020612bff86828701612a4c565b9250506040612c1086828701612aea565b9150509250925092565b60008060408385031215612c2d57600080fd5b6000612c3b85828601612a4c565b9250506020612c4c85828601612ad5565b9150509250929050565b60008060408385031215612c6957600080fd5b6000612c7785828601612a4c565b9250506020612c8885828601612aea565b9150509250929050565b600080600060408486031215612ca757600080fd5b600084013567ffffffffffffffff811115612cc157600080fd5b612ccd86828701612a8b565b93509350506020612ce086828701612ad5565b9150509250925092565b600060208284031215612cfc57600080fd5b6000612d0a84828501612aff565b91505092915050565b6000612d1f8383612d2b565b60208301905092915050565b612d3481613436565b82525050565b612d4381613436565b82525050565b6000612d5583856132e8565b9350612d608261329e565b8060005b85811015612d9957612d76828461330a565b612d808882612d13565b9750612d8b836132ce565b925050600181019050612d64565b5085925050509392505050565b6000612db1826132b8565b612dbb81856132e8565b9350612dc6836132a8565b8060005b83811015612df7578151612dde8882612d13565b9750612de9836132db565b925050600181019050612dca565b5085935050505092915050565b612e0d8161345a565b82525050565b612e1c8161349d565b82525050565b612e2b816134c1565b82525050565b6000612e3c826132c3565b612e4681856132f9565b9350612e568185602086016134d3565b612e5f816135ad565b840191505092915050565b6000612e776023836132f9565b9150612e82826135be565b604082019050919050565b6000612e9a602a836132f9565b9150612ea58261360d565b604082019050919050565b6000612ebd6026836132f9565b9150612ec88261365c565b604082019050919050565b6000612ee06022836132f9565b9150612eeb826136ab565b604082019050919050565b6000612f03601b836132f9565b9150612f0e826136fa565b602082019050919050565b6000612f266013836132f9565b9150612f3182613723565b602082019050919050565b6000612f496021836132f9565b9150612f548261374c565b604082019050919050565b6000612f6c6020836132f9565b9150612f778261379b565b602082019050919050565b6000612f8f6029836132f9565b9150612f9a826137c4565b604082019050919050565b6000612fb26025836132f9565b9150612fbd82613813565b604082019050919050565b6000612fd56024836132f9565b9150612fe082613862565b604082019050919050565b612ff481613486565b82525050565b61300381613490565b82525050565b600060208201905061301e6000830184612d3a565b92915050565b6000604082019050818103600083015261303f818587612d49565b905061304e6020830184612e04565b949350505050565b600060208201905061306b6000830184612e04565b92915050565b60006020820190506130866000830184612e13565b92915050565b600060208201905081810360008301526130a68184612e31565b905092915050565b600060208201905081810360008301526130c781612e6a565b9050919050565b600060208201905081810360008301526130e781612e8d565b9050919050565b6000602082019050818103600083015261310781612eb0565b9050919050565b6000602082019050818103600083015261312781612ed3565b9050919050565b6000602082019050818103600083015261314781612ef6565b9050919050565b6000602082019050818103600083015261316781612f19565b9050919050565b6000602082019050818103600083015261318781612f3c565b9050919050565b600060208201905081810360008301526131a781612f5f565b9050919050565b600060208201905081810360008301526131c781612f82565b9050919050565b600060208201905081810360008301526131e781612fa5565b9050919050565b6000602082019050818103600083015261320781612fc8565b9050919050565b60006020820190506132236000830184612feb565b92915050565b600060a08201905061323e6000830188612feb565b61324b6020830187612e22565b818103604083015261325d8186612da6565b905061326c6060830185612d3a565b6132796080830184612feb565b9695505050505050565b60006020820190506132986000830184612ffa565b92915050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006133196020840184612a4c565b905092915050565b600061332c82613486565b915061333783613486565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561336c5761336b61354f565b5b828201905092915050565b600061338282613486565b915061338d83613486565b92508261339d5761339c61357e565b5b828204905092915050565b60006133b382613486565b91506133be83613486565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133f7576133f661354f565b5b828202905092915050565b600061340d82613486565b915061341883613486565b92508282101561342b5761342a61354f565b5b828203905092915050565b600061344182613466565b9050919050565b600061345382613466565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134a8826134af565b9050919050565b60006134ba82613466565b9050919050565b60006134cc82613486565b9050919050565b60005b838110156134f15780820151818401526020810190506134d6565b83811115613500576000848401525b50505050565b600061351182613486565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135445761354361354f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6138ba81613436565b81146138c557600080fd5b50565b6138d181613448565b81146138dc57600080fd5b50565b6138e88161345a565b81146138f357600080fd5b50565b6138ff81613486565b811461390a57600080fd5b50565b61391681613490565b811461392157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220556d2e655e47be997821c0546ffc577a27d02089460e16f9d30126ad82bc0fe764736f6c63430008040033

Deployed Bytecode Sourcemap

16377:10613:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16706:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18982:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19834:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16465:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17719:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16832:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19259:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16651:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16788:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20003:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16910:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19168:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26469:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17767:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16871:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19362:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15796:148;;;;;;;;;;;;;:::i;:::-;;16593:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15154:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19073:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19508:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18812:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18668:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26214:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25835:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19683:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26714:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16706:75;;;;;;;;;;;;;:::o;18982:83::-;19019:13;19052:5;;;;;;;;;;;;;;;;;19045:12;;18982:83;:::o;19834:161::-;19909:4;19926:39;19935:12;:10;:12::i;:::-;19949:7;19958:6;19926:8;:39::i;:::-;19983:4;19976:11;;19834:161;;;;:::o;16465:43::-;;;;;;;;;;;;;;;;;:::o;17719:41::-;;;;;;;;;;;;;:::o;16832:32::-;;;;;;;;;;;;;:::o;19259:95::-;19312:7;17035:26;19332:14;;19259:95;:::o;16651:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;16788:37::-;;;;;;;;;;;;;:::o;20003:313::-;20101:4;20118:36;20128:6;20136:9;20147:6;20118:9;:36::i;:::-;20165:121;20174:6;20182:12;:10;:12::i;:::-;20196:89;20234:6;20196:89;;;;;;;;;;;;;;;;;:11;:19;20208:6;20196:19;;;;;;;;;;;;;;;:33;20216:12;:10;:12::i;:::-;20196:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20165:8;:121::i;:::-;20304:4;20297:11;;20003:313;;;;;:::o;16910:28::-;;;;;;;;;;;;;:::o;19168:83::-;19209:5;17499:1;19227:16;;19168:83;:::o;26469:169::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26577:5:::1;26551:14;:23;26566:7;26551:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;26615:7;26598:32;;;26624:5;26598:32;;;;;;:::i;:::-;;;;;;;;26469:169:::0;;:::o;17767:28::-;;;;;;;;;;;;;:::o;16871:32::-;;;;:::o;19362:138::-;19428:7;19455:37;19475:7;:16;19483:7;19475:16;;;;;;;;;;;;;;;;19455:19;:37::i;:::-;19448:44;;19362:138;;;:::o;15796:148::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15903:1:::1;15866:40;;15887:6;::::0;::::1;;;;;;;;15866:40;;;;;;;;;;;;15934:1;15917:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15796:148::o:0;16593:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;15154:79::-;15192:7;15219:6;;;;;;;;;;;15212:13;;15154:79;:::o;19073:87::-;19112:13;19145:7;;;;;;;;;;;;;;;;;19138:14;;19073:87;:::o;19508:167::-;19586:4;19603:42;19613:12;:10;:12::i;:::-;19627:9;19638:6;19603:9;:42::i;:::-;19663:4;19656:11;;19508:167;;;;:::o;18812:162::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18911:6:::1;18893:15;;:24;;;;;;;;;;;;;;;;;;18928:38;18944:15;;;;;;;;;;;18961:4;18928:15;:38::i;:::-;18812:162:::0;:::o;18668:136::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18746:17:::1;;;;;;;;;;;18745:18;18737:27;;;::::0;::::1;;18789:7;18775:11;;:21;;;;;;;;;;;;;;;;;;18668:136:::0;:::o;26214:181::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26329:8:::1;26299:18;:27;26318:7;26299:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;26369:7;26353:34;;;26378:8;26353:34;;;;;;:::i;:::-;;;;;;;;26214:181:::0;;:::o;25835:301::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25952:9:::1;25948:114;25971:8;;:15;;25967:1;:19;25948:114;;;26042:8;26008:18;:31;26027:8;;26036:1;26027:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26008:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;25988:3;;;;;:::i;:::-;;;;25948:114;;;;26077:51;26109:8;;26119;26077:51;;;;;;;;:::i;:::-;;;;;;;;25835:301:::0;;;:::o;19683:143::-;19764:7;19791:11;:18;19803:5;19791:18;;;;;;;;;;;;;;;:27;19810:7;19791:27;;;;;;;;;;;;;;;;19784:34;;19683:143;;;;:::o;16099:244::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16208:1:::1;16188:22;;:8;:22;;;;16180:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16298:8;16269:38;;16290:6;::::0;::::1;;;;;;;;16269:38;;;;;;;;;;;;16327:8;16318:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16099:244:::0;:::o;26714:271::-;15376:12;:10;:12::i;:::-;15366:22;;:6;;;;;;;;;;:22;;;15358:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26819:9:::1;26815:107;26838:8;;:15;;26834:1;:19;26815:107;;;26905:5;26875:14;:27;26890:8;;26899:1;26890:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26875:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;26855:3;;;;;:::i;:::-;;;;26815:107;;;;26937:40;26961:8;;26971:5;26937:40;;;;;;;;:::i;:::-;;;;;;;;26714:271:::0;;;:::o;3372:98::-;3425:7;3452:10;3445:17;;3372:98;:::o;20586:335::-;20696:1;20679:19;;:5;:19;;;;20671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20777:1;20758:21;;:7;:21;;;;20750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20859:6;20829:11;:18;20841:5;20829:18;;;;;;;;;;;;;;;:27;20848:7;20829:27;;;;;;;;;;;;;;;:36;;;;20897:7;20881:32;;20890:5;20881:32;;;20906:6;20881:32;;;;;;:::i;:::-;;;;;;;;20586:335;;;:::o;20929:2453::-;21033:1;21017:18;;:4;:18;;;;21009:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21110:1;21096:16;;:2;:16;;;;21088:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21180:1;21171:6;:10;21163:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21247:14;:20;21262:4;21247:20;;;;;;;;;;;;;;;;;;;;;;;;;21246:21;21238:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;21316:1;21304:9;:13;;;;21338:1;21328:7;:11;;;;21405:17;;;;;;;;;;;21400:245;;21449:13;;;;;;;;;;;21443:19;;:2;:19;;;21439:195;;;21503:4;21483:17;;:24;;;;;;;;;;;;;;;;;;21607:11;;;;;;;;;;;21592:26;;:12;:26;;;;:::i;:::-;21572:17;:46;;;;21439:195;21400:245;21702:15;;;;;;;;;;;21686:32;;:4;:32;;;21682:434;;21738:17;;;;;;;;;;;:54;;;;;21775:17;;21759:12;:33;;21738:54;:72;;;;;21797:13;;;;;;;;;;;21796:14;21738:72;21735:370;;;21842:14;;21830:9;:26;;;;21885:12;;21875:7;:22;;;;21916:30;21931:4;21936:2;21939:6;21916:14;:30::i;:::-;21983:13;;;;;;;;;;;21969:28;;:2;:28;;;21965:100;;22041:4;22022:14;:18;22037:2;22022:18;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;21965:100;22083:7;;21735:370;21682:434;22132:17;;;;;;;;;;;:34;;;;;22153:13;;;;;;;;;;;22132:34;22128:87;;;22198:5;22182:13;;:21;;;;;;;;;;;;;;;;;;22128:87;22247:7;:5;:7::i;:::-;22239:15;;:4;:15;;;;:32;;;;;22264:7;:5;:7::i;:::-;22258:13;;:2;:13;;;;22239:32;22235:1097;;;22302:28;22333:24;22351:4;22333:9;:24::i;:::-;22302:55;;22377:6;;;;;;;;;;;22376:7;:32;;;;;22395:13;;;;;;;;;;;22387:21;;:4;:21;;;;22376:32;:47;;;;;22412:11;;;;;;;;;;;22376:47;:75;;;;;22450:1;22427:20;:24;22376:75;22372:346;;;22472:38;22489:20;22472:16;:38::i;:::-;22529:26;22558:21;22529:50;;22622:1;22601:18;:22;22598:105;;;22648:35;22661:21;22648:12;:35::i;:::-;22598:105;22372:346;;22757:13;;;;;;;;;;;22749:21;;:4;:21;;;:55;;;;;22788:15;;;;;;;;;;;22774:30;;:2;:30;;;;22749:55;22746:162;;;22837:14;;22825:9;:26;;;;22880:12;;22870:7;:22;;;;22746:162;22938:13;;;;;;;;;;;22932:19;;:2;:19;;;:55;;;;;22971:15;;;;;;;;;;;22955:32;;:4;:32;;;;22932:55;22928:165;;;23020:15;;23008:9;:27;;;;23064:13;;23054:7;:23;;;;22928:165;23126:18;:24;23145:4;23126:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23154:18;:22;23173:2;23154:22;;;;;;;;;;;;;;;;;;;;;;;;;23126:50;23125:102;;;;23190:13;;;;;;;;;;;23182:21;;:4;:21;;;;:44;;;;;23213:13;;;;;;;;;;;23207:19;;:2;:19;;;;23182:44;23125:102;23121:186;;;23260:1;23248:9;:13;;;;23290:1;23280:7;:11;;;;23121:186;22235:1097;;23344:30;23359:4;23364:2;23367:6;23344:14;:30::i;:::-;20929:2453;;;;:::o;5484:192::-;5570:7;5603:1;5598;:6;;5606:12;5590:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5630:9;5646:1;5642;:5;;;;:::i;:::-;5630:17;;5667:1;5660:8;;;5484:192;;;;;:::o;20324:254::-;20391:7;20430;;20419;:18;;20411:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20495:19;20518:10;:8;:10::i;:::-;20495:33;;20546:24;20558:11;20546:7;:11;;:24;;;;:::i;:::-;20539:31;;;20324:254;;;:::o;24160:146::-;24254:44;24272:6;24280:9;24291:6;24254:17;:44::i;:::-;24160:146;;;:::o;23390:483::-;17927:4;17918:6;;:13;;;;;;;;;;;;;;;;;;23468:21:::1;23506:1;23492:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23468:40;;23537:4;23519;23524:1;23519:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;23563:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23553:4;23558:1;23553:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;23596:62;23613:4;23628:15;;;;;;;;;;;23646:11;23596:8;:62::i;:::-;23669:15;;;;;;;;;;;:66;;;23750:11;23776:1;23792:4;23819;23839:15;23669:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17942:1;17963:5:::0;17954:6;;:14;;;;;;;;;;;;;;;;;;23390:483;:::o;23889:259::-;23946:17;23966:20;23984:1;23966:13;23977:1;23966:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;23946:40;;23997:21;24021;24032:9;24021:6;:10;;:21;;;;:::i;:::-;23997:45;;24053:17;;;;;;;;;;;:26;;:37;24080:9;24053:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24101:15;;;;;;;;;;;:24;;:39;24126:13;24101:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23889:259;;;:::o;25313:163::-;25354:7;25375:15;25392;25411:19;:17;:19::i;:::-;25374:56;;;;25448:20;25460:7;25448;:11;;:20;;;;:::i;:::-;25441:27;;;;25313:163;:::o;6882:132::-;6940:7;6967:39;6971:1;6974;6967:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6960:46;;6882:132;;;;:::o;24314:805::-;24412:19;24435:10;:8;:10::i;:::-;24412:33;;24456:23;24482:79;24531:29;24556:3;24531:20;24543:7;;24531;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;24482:44;24494:31;24521:3;24494:22;24506:9;;24494:7;:11;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;24482:7;:11;;:44;;;;:::i;:::-;:48;;:79;;;;:::i;:::-;24456:105;;24572:15;24590:24;24602:11;24590:7;:11;;:24;;;;:::i;:::-;24572:42;;24625:12;24640:48;24676:11;24640:31;24667:3;24640:22;24652:9;;24640:7;:11;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;24625:63;;24699:13;24715:46;24749:11;24715:29;24740:3;24715:20;24727:7;;24715;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;24699:62;;24772:23;24798:28;24820:5;24798:17;24810:4;24798:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;24772:54;;24855:28;24875:7;24855;:15;24863:6;24855:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;24837:7;:15;24845:6;24837:15;;;;;;;;;;;;;;;:46;;;;24915:39;24938:15;24915:7;:18;24923:9;24915:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24894:7;:18;24902:9;24894:18;;;;;;;;;;;;;;;:60;;;;24990:33;25017:5;24990:7;:22;25006:4;24990:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;24965:7;:22;24981:4;24965:22;;;;;;;;;;;;;;;:58;;;;25034:17;25046:4;25034:11;:17::i;:::-;25084:9;25067:44;;25076:6;25067:44;;;25095:15;25067:44;;;;;;:::i;:::-;;;;;;;;24314:805;;;;;;;;;:::o;5935:471::-;5993:7;6243:1;6238;:6;6234:47;;;6268:1;6261:8;;;;6234:47;6293:9;6309:1;6305;:5;;;;:::i;:::-;6293:17;;6338:1;6333;6329;:5;;;;:::i;:::-;:10;6321:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6397:1;6390:8;;;5935:471;;;;;:::o;5045:136::-;5103:7;5130:43;5134:1;5137;5130:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5123:50;;5045:136;;;;:::o;25484:262::-;25534:7;25543;25563:15;25581:7;;25563:25;;25599:15;17035:26;25599:25;;25655:20;17035:26;25655:7;;:11;;:20;;;;:::i;:::-;25645:7;:30;25641:61;;;25685:7;;17035:26;25677:25;;;;;;;;25641:61;25721:7;25730;25713:25;;;;;;25484:262;;;:::o;7510:278::-;7596:7;7628:1;7624;:5;7631:12;7616:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7655:9;7671:1;7667;:5;;;;:::i;:::-;7655:17;;7779:1;7772:8;;;7510:278;;;;;:::o;4581:181::-;4639:7;4659:9;4675:1;4671;:5;;;;:::i;:::-;4659:17;;4700:1;4695;:6;;4687:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4753:1;4746:8;;;4581:181;;;;:::o;25182:89::-;25246:17;25258:4;25246:7;;:11;;:17;;;;:::i;:::-;25236:7;:27;;;;25182:89;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;479:367::-;552:8;562:6;612:3;605:4;597:6;593:17;589:27;579:2;;630:1;627;620:12;579:2;666:6;653:20;643:30;;696:18;688:6;685:30;682:2;;;728:1;725;718:12;682:2;765:4;757:6;753:17;741:29;;819:3;811:4;803:6;799:17;789:8;785:32;782:41;779:2;;;836:1;833;826:12;779:2;569:277;;;;;:::o;852:133::-;895:5;933:6;920:20;911:29;;949:30;973:5;949:30;:::i;:::-;901:84;;;;:::o;991:139::-;1037:5;1075:6;1062:20;1053:29;;1091:33;1118:5;1091:33;:::i;:::-;1043:87;;;;:::o;1136:135::-;1180:5;1218:6;1205:20;1196:29;;1234:31;1259:5;1234:31;:::i;:::-;1186:85;;;;:::o;1277:262::-;1336:6;1385:2;1373:9;1364:7;1360:23;1356:32;1353:2;;;1401:1;1398;1391:12;1353:2;1444:1;1469:53;1514:7;1505:6;1494:9;1490:22;1469:53;:::i;:::-;1459:63;;1415:117;1343:196;;;;:::o;1545:284::-;1615:6;1664:2;1652:9;1643:7;1639:23;1635:32;1632:2;;;1680:1;1677;1670:12;1632:2;1723:1;1748:64;1804:7;1795:6;1784:9;1780:22;1748:64;:::i;:::-;1738:74;;1694:128;1622:207;;;;:::o;1835:278::-;1902:6;1951:2;1939:9;1930:7;1926:23;1922:32;1919:2;;;1967:1;1964;1957:12;1919:2;2010:1;2035:61;2088:7;2079:6;2068:9;2064:22;2035:61;:::i;:::-;2025:71;;1981:125;1909:204;;;;:::o;2119:407::-;2187:6;2195;2244:2;2232:9;2223:7;2219:23;2215:32;2212:2;;;2260:1;2257;2250:12;2212:2;2303:1;2328:53;2373:7;2364:6;2353:9;2349:22;2328:53;:::i;:::-;2318:63;;2274:117;2430:2;2456:53;2501:7;2492:6;2481:9;2477:22;2456:53;:::i;:::-;2446:63;;2401:118;2202:324;;;;;:::o;2532:552::-;2609:6;2617;2625;2674:2;2662:9;2653:7;2649:23;2645:32;2642:2;;;2690:1;2687;2680:12;2642:2;2733:1;2758:53;2803:7;2794:6;2783:9;2779:22;2758:53;:::i;:::-;2748:63;;2704:117;2860:2;2886:53;2931:7;2922:6;2911:9;2907:22;2886:53;:::i;:::-;2876:63;;2831:118;2988:2;3014:53;3059:7;3050:6;3039:9;3035:22;3014:53;:::i;:::-;3004:63;;2959:118;2632:452;;;;;:::o;3090:401::-;3155:6;3163;3212:2;3200:9;3191:7;3187:23;3183:32;3180:2;;;3228:1;3225;3218:12;3180:2;3271:1;3296:53;3341:7;3332:6;3321:9;3317:22;3296:53;:::i;:::-;3286:63;;3242:117;3398:2;3424:50;3466:7;3457:6;3446:9;3442:22;3424:50;:::i;:::-;3414:60;;3369:115;3170:321;;;;;:::o;3497:407::-;3565:6;3573;3622:2;3610:9;3601:7;3597:23;3593:32;3590:2;;;3638:1;3635;3628:12;3590:2;3681:1;3706:53;3751:7;3742:6;3731:9;3727:22;3706:53;:::i;:::-;3696:63;;3652:117;3808:2;3834:53;3879:7;3870:6;3859:9;3855:22;3834:53;:::i;:::-;3824:63;;3779:118;3580:324;;;;;:::o;3910:564::-;4002:6;4010;4018;4067:2;4055:9;4046:7;4042:23;4038:32;4035:2;;;4083:1;4080;4073:12;4035:2;4154:1;4143:9;4139:17;4126:31;4184:18;4176:6;4173:30;4170:2;;;4216:1;4213;4206:12;4170:2;4252:80;4324:7;4315:6;4304:9;4300:22;4252:80;:::i;:::-;4234:98;;;;4097:245;4381:2;4407:50;4449:7;4440:6;4429:9;4425:22;4407:50;:::i;:::-;4397:60;;4352:115;4025:449;;;;;:::o;4480:258::-;4537:6;4586:2;4574:9;4565:7;4561:23;4557:32;4554:2;;;4602:1;4599;4592:12;4554:2;4645:1;4670:51;4713:7;4704:6;4693:9;4689:22;4670:51;:::i;:::-;4660:61;;4616:115;4544:194;;;;:::o;4744:179::-;4813:10;4834:46;4876:3;4868:6;4834:46;:::i;:::-;4912:4;4907:3;4903:14;4889:28;;4824:99;;;;:::o;4929:108::-;5006:24;5024:5;5006:24;:::i;:::-;5001:3;4994:37;4984:53;;:::o;5043:118::-;5130:24;5148:5;5130:24;:::i;:::-;5125:3;5118:37;5108:53;;:::o;5197:699::-;5326:3;5349:86;5428:6;5423:3;5349:86;:::i;:::-;5342:93;;5459:58;5511:5;5459:58;:::i;:::-;5540:7;5571:1;5556:315;5581:6;5578:1;5575:13;5556:315;;;5651:42;5686:6;5677:7;5651:42;:::i;:::-;5713:63;5772:3;5757:13;5713:63;:::i;:::-;5706:70;;5799:62;5854:6;5799:62;:::i;:::-;5789:72;;5616:255;5603:1;5600;5596:9;5591:14;;5556:315;;;5560:14;5887:3;5880:10;;5331:565;;;;;;;:::o;5932:732::-;6051:3;6080:54;6128:5;6080:54;:::i;:::-;6150:86;6229:6;6224:3;6150:86;:::i;:::-;6143:93;;6260:56;6310:5;6260:56;:::i;:::-;6339:7;6370:1;6355:284;6380:6;6377:1;6374:13;6355:284;;;6456:6;6450:13;6483:63;6542:3;6527:13;6483:63;:::i;:::-;6476:70;;6569:60;6622:6;6569:60;:::i;:::-;6559:70;;6415:224;6402:1;6399;6395:9;6390:14;;6355:284;;;6359:14;6655:3;6648:10;;6056:608;;;;;;;:::o;6670:109::-;6751:21;6766:5;6751:21;:::i;:::-;6746:3;6739:34;6729:50;;:::o;6785:183::-;6898:63;6955:5;6898:63;:::i;:::-;6893:3;6886:76;6876:92;;:::o;6974:147::-;7069:45;7108:5;7069:45;:::i;:::-;7064:3;7057:58;7047:74;;:::o;7127:364::-;7215:3;7243:39;7276:5;7243:39;:::i;:::-;7298:71;7362:6;7357:3;7298:71;:::i;:::-;7291:78;;7378:52;7423:6;7418:3;7411:4;7404:5;7400:16;7378:52;:::i;:::-;7455:29;7477:6;7455:29;:::i;:::-;7450:3;7446:39;7439:46;;7219:272;;;;;:::o;7497:366::-;7639:3;7660:67;7724:2;7719:3;7660:67;:::i;:::-;7653:74;;7736:93;7825:3;7736:93;:::i;:::-;7854:2;7849:3;7845:12;7838:19;;7643:220;;;:::o;7869:366::-;8011:3;8032:67;8096:2;8091:3;8032:67;:::i;:::-;8025:74;;8108:93;8197:3;8108:93;:::i;:::-;8226:2;8221:3;8217:12;8210:19;;8015:220;;;:::o;8241:366::-;8383:3;8404:67;8468:2;8463:3;8404:67;:::i;:::-;8397:74;;8480:93;8569:3;8480:93;:::i;:::-;8598:2;8593:3;8589:12;8582:19;;8387:220;;;:::o;8613:366::-;8755:3;8776:67;8840:2;8835:3;8776:67;:::i;:::-;8769:74;;8852:93;8941:3;8852:93;:::i;:::-;8970:2;8965:3;8961:12;8954:19;;8759:220;;;:::o;8985:366::-;9127:3;9148:67;9212:2;9207:3;9148:67;:::i;:::-;9141:74;;9224:93;9313:3;9224:93;:::i;:::-;9342:2;9337:3;9333:12;9326:19;;9131:220;;;:::o;9357:366::-;9499:3;9520:67;9584:2;9579:3;9520:67;:::i;:::-;9513:74;;9596:93;9685:3;9596:93;:::i;:::-;9714:2;9709:3;9705:12;9698:19;;9503:220;;;:::o;9729:366::-;9871:3;9892:67;9956:2;9951:3;9892:67;:::i;:::-;9885:74;;9968:93;10057:3;9968:93;:::i;:::-;10086:2;10081:3;10077:12;10070:19;;9875:220;;;:::o;10101:366::-;10243:3;10264:67;10328:2;10323:3;10264:67;:::i;:::-;10257:74;;10340:93;10429:3;10340:93;:::i;:::-;10458:2;10453:3;10449:12;10442:19;;10247:220;;;:::o;10473:366::-;10615:3;10636:67;10700:2;10695:3;10636:67;:::i;:::-;10629:74;;10712:93;10801:3;10712:93;:::i;:::-;10830:2;10825:3;10821:12;10814:19;;10619:220;;;:::o;10845:366::-;10987:3;11008:67;11072:2;11067:3;11008:67;:::i;:::-;11001:74;;11084:93;11173:3;11084:93;:::i;:::-;11202:2;11197:3;11193:12;11186:19;;10991:220;;;:::o;11217:366::-;11359:3;11380:67;11444:2;11439:3;11380:67;:::i;:::-;11373:74;;11456:93;11545:3;11456:93;:::i;:::-;11574:2;11569:3;11565:12;11558:19;;11363:220;;;:::o;11589:118::-;11676:24;11694:5;11676:24;:::i;:::-;11671:3;11664:37;11654:53;;:::o;11713:112::-;11796:22;11812:5;11796:22;:::i;:::-;11791:3;11784:35;11774:51;;:::o;11831:222::-;11924:4;11962:2;11951:9;11947:18;11939:26;;11975:71;12043:1;12032:9;12028:17;12019:6;11975:71;:::i;:::-;11929:124;;;;:::o;12059:491::-;12234:4;12272:2;12261:9;12257:18;12249:26;;12321:9;12315:4;12311:20;12307:1;12296:9;12292:17;12285:47;12349:118;12462:4;12453:6;12445;12349:118;:::i;:::-;12341:126;;12477:66;12539:2;12528:9;12524:18;12515:6;12477:66;:::i;:::-;12239:311;;;;;;:::o;12556:210::-;12643:4;12681:2;12670:9;12666:18;12658:26;;12694:65;12756:1;12745:9;12741:17;12732:6;12694:65;:::i;:::-;12648:118;;;;:::o;12772:274::-;12891:4;12929:2;12918:9;12914:18;12906:26;;12942:97;13036:1;13025:9;13021:17;13012:6;12942:97;:::i;:::-;12896:150;;;;:::o;13052:313::-;13165:4;13203:2;13192:9;13188:18;13180:26;;13252:9;13246:4;13242:20;13238:1;13227:9;13223:17;13216:47;13280:78;13353:4;13344:6;13280:78;:::i;:::-;13272:86;;13170:195;;;;:::o;13371:419::-;13537:4;13575:2;13564:9;13560:18;13552:26;;13624:9;13618:4;13614:20;13610:1;13599:9;13595:17;13588:47;13652:131;13778:4;13652:131;:::i;:::-;13644:139;;13542:248;;;:::o;13796:419::-;13962:4;14000:2;13989:9;13985:18;13977:26;;14049:9;14043:4;14039:20;14035:1;14024:9;14020:17;14013:47;14077:131;14203:4;14077:131;:::i;:::-;14069:139;;13967:248;;;:::o;14221:419::-;14387:4;14425:2;14414:9;14410:18;14402:26;;14474:9;14468:4;14464:20;14460:1;14449:9;14445:17;14438:47;14502:131;14628:4;14502:131;:::i;:::-;14494:139;;14392:248;;;:::o;14646:419::-;14812:4;14850:2;14839:9;14835:18;14827:26;;14899:9;14893:4;14889:20;14885:1;14874:9;14870:17;14863:47;14927:131;15053:4;14927:131;:::i;:::-;14919:139;;14817:248;;;:::o;15071:419::-;15237:4;15275:2;15264:9;15260:18;15252:26;;15324:9;15318:4;15314:20;15310:1;15299:9;15295:17;15288:47;15352:131;15478:4;15352:131;:::i;:::-;15344:139;;15242:248;;;:::o;15496:419::-;15662:4;15700:2;15689:9;15685:18;15677:26;;15749:9;15743:4;15739:20;15735:1;15724:9;15720:17;15713:47;15777:131;15903:4;15777:131;:::i;:::-;15769:139;;15667:248;;;:::o;15921:419::-;16087:4;16125:2;16114:9;16110:18;16102:26;;16174:9;16168:4;16164:20;16160:1;16149:9;16145:17;16138:47;16202:131;16328:4;16202:131;:::i;:::-;16194:139;;16092:248;;;:::o;16346:419::-;16512:4;16550:2;16539:9;16535:18;16527:26;;16599:9;16593:4;16589:20;16585:1;16574:9;16570:17;16563:47;16627:131;16753:4;16627:131;:::i;:::-;16619:139;;16517:248;;;:::o;16771:419::-;16937:4;16975:2;16964:9;16960:18;16952:26;;17024:9;17018:4;17014:20;17010:1;16999:9;16995:17;16988:47;17052:131;17178:4;17052:131;:::i;:::-;17044:139;;16942:248;;;:::o;17196:419::-;17362:4;17400:2;17389:9;17385:18;17377:26;;17449:9;17443:4;17439:20;17435:1;17424:9;17420:17;17413:47;17477:131;17603:4;17477:131;:::i;:::-;17469:139;;17367:248;;;:::o;17621:419::-;17787:4;17825:2;17814:9;17810:18;17802:26;;17874:9;17868:4;17864:20;17860:1;17849:9;17845:17;17838:47;17902:131;18028:4;17902:131;:::i;:::-;17894:139;;17792:248;;;:::o;18046:222::-;18139:4;18177:2;18166:9;18162:18;18154:26;;18190:71;18258:1;18247:9;18243:17;18234:6;18190:71;:::i;:::-;18144:124;;;;:::o;18274:831::-;18537:4;18575:3;18564:9;18560:19;18552:27;;18589:71;18657:1;18646:9;18642:17;18633:6;18589:71;:::i;:::-;18670:80;18746:2;18735:9;18731:18;18722:6;18670:80;:::i;:::-;18797:9;18791:4;18787:20;18782:2;18771:9;18767:18;18760:48;18825:108;18928:4;18919:6;18825:108;:::i;:::-;18817:116;;18943:72;19011:2;19000:9;18996:18;18987:6;18943:72;:::i;:::-;19025:73;19093:3;19082:9;19078:19;19069:6;19025:73;:::i;:::-;18542:563;;;;;;;;:::o;19111:214::-;19200:4;19238:2;19227:9;19223:18;19215:26;;19251:67;19315:1;19304:9;19300:17;19291:6;19251:67;:::i;:::-;19205:120;;;;:::o;19331:102::-;19400:4;19423:3;19415:11;;19405:28;;;:::o;19439:132::-;19506:4;19529:3;19521:11;;19559:4;19554:3;19550:14;19542:22;;19511:60;;;:::o;19577:114::-;19644:6;19678:5;19672:12;19662:22;;19651:40;;;:::o;19697:99::-;19749:6;19783:5;19777:12;19767:22;;19756:40;;;:::o;19802:115::-;19874:4;19906;19901:3;19897:14;19889:22;;19879:38;;;:::o;19923:113::-;19993:4;20025;20020:3;20016:14;20008:22;;19998:38;;;:::o;20042:184::-;20141:11;20175:6;20170:3;20163:19;20215:4;20210:3;20206:14;20191:29;;20153:73;;;;:::o;20232:169::-;20316:11;20350:6;20345:3;20338:19;20390:4;20385:3;20381:14;20366:29;;20328:73;;;;:::o;20407:122::-;20459:5;20484:39;20519:2;20514:3;20510:12;20505:3;20484:39;:::i;:::-;20475:48;;20465:64;;;;:::o;20535:305::-;20575:3;20594:20;20612:1;20594:20;:::i;:::-;20589:25;;20628:20;20646:1;20628:20;:::i;:::-;20623:25;;20782:1;20714:66;20710:74;20707:1;20704:81;20701:2;;;20788:18;;:::i;:::-;20701:2;20832:1;20829;20825:9;20818:16;;20579:261;;;;:::o;20846:185::-;20886:1;20903:20;20921:1;20903:20;:::i;:::-;20898:25;;20937:20;20955:1;20937:20;:::i;:::-;20932:25;;20976:1;20966:2;;20981:18;;:::i;:::-;20966:2;21023:1;21020;21016:9;21011:14;;20888:143;;;;:::o;21037:348::-;21077:7;21100:20;21118:1;21100:20;:::i;:::-;21095:25;;21134:20;21152:1;21134:20;:::i;:::-;21129:25;;21322:1;21254:66;21250:74;21247:1;21244:81;21239:1;21232:9;21225:17;21221:105;21218:2;;;21329:18;;:::i;:::-;21218:2;21377:1;21374;21370:9;21359:20;;21085:300;;;;:::o;21391:191::-;21431:4;21451:20;21469:1;21451:20;:::i;:::-;21446:25;;21485:20;21503:1;21485:20;:::i;:::-;21480:25;;21524:1;21521;21518:8;21515:2;;;21529:18;;:::i;:::-;21515:2;21574:1;21571;21567:9;21559:17;;21436:146;;;;:::o;21588:96::-;21625:7;21654:24;21672:5;21654:24;:::i;:::-;21643:35;;21633:51;;;:::o;21690:104::-;21735:7;21764:24;21782:5;21764:24;:::i;:::-;21753:35;;21743:51;;;:::o;21800:90::-;21834:7;21877:5;21870:13;21863:21;21852:32;;21842:48;;;:::o;21896:126::-;21933:7;21973:42;21966:5;21962:54;21951:65;;21941:81;;;:::o;22028:77::-;22065:7;22094:5;22083:16;;22073:32;;;:::o;22111:86::-;22146:7;22186:4;22179:5;22175:16;22164:27;;22154:43;;;:::o;22203:178::-;22279:9;22312:63;22369:5;22312:63;:::i;:::-;22299:76;;22289:92;;;:::o;22387:139::-;22463:9;22496:24;22514:5;22496:24;:::i;:::-;22483:37;;22473:53;;;:::o;22532:121::-;22590:9;22623:24;22641:5;22623:24;:::i;:::-;22610:37;;22600:53;;;:::o;22659:307::-;22727:1;22737:113;22751:6;22748:1;22745:13;22737:113;;;22836:1;22831:3;22827:11;22821:18;22817:1;22812:3;22808:11;22801:39;22773:2;22770:1;22766:10;22761:15;;22737:113;;;22868:6;22865:1;22862:13;22859:2;;;22948:1;22939:6;22934:3;22930:16;22923:27;22859:2;22708:258;;;;:::o;22972:233::-;23011:3;23034:24;23052:5;23034:24;:::i;:::-;23025:33;;23080:66;23073:5;23070:77;23067:2;;;23150:18;;:::i;:::-;23067:2;23197:1;23190:5;23186:13;23179:20;;23015:190;;;:::o;23211:180::-;23259:77;23256:1;23249:88;23356:4;23353:1;23346:15;23380:4;23377:1;23370:15;23397:180;23445:77;23442:1;23435:88;23542:4;23539:1;23532:15;23566:4;23563:1;23556:15;23583:102;23624:6;23675:2;23671:7;23666:2;23659:5;23655:14;23651:28;23641:38;;23631:54;;;:::o;23691:222::-;23831:34;23827:1;23819:6;23815:14;23808:58;23900:5;23895:2;23887:6;23883:15;23876:30;23797:116;:::o;23919:229::-;24059:34;24055:1;24047:6;24043:14;24036:58;24128:12;24123:2;24115:6;24111:15;24104:37;24025:123;:::o;24154:225::-;24294:34;24290:1;24282:6;24278:14;24271:58;24363:8;24358:2;24350:6;24346:15;24339:33;24260:119;:::o;24385:221::-;24525:34;24521:1;24513:6;24509:14;24502:58;24594:4;24589:2;24581:6;24577:15;24570:29;24491:115;:::o;24612:177::-;24752:29;24748:1;24740:6;24736:14;24729:53;24718:71;:::o;24795:169::-;24935:21;24931:1;24923:6;24919:14;24912:45;24901:63;:::o;24970:220::-;25110:34;25106:1;25098:6;25094:14;25087:58;25179:3;25174:2;25166:6;25162:15;25155:28;25076:114;:::o;25196:182::-;25336:34;25332:1;25324:6;25320:14;25313:58;25302:76;:::o;25384:228::-;25524:34;25520:1;25512:6;25508:14;25501:58;25593:11;25588:2;25580:6;25576:15;25569:36;25490:122;:::o;25618:224::-;25758:34;25754:1;25746:6;25742:14;25735:58;25827:7;25822:2;25814:6;25810:15;25803:32;25724:118;:::o;25848:223::-;25988:34;25984:1;25976:6;25972:14;25965:58;26057:6;26052:2;26044:6;26040:15;26033:31;25954:117;:::o;26077:122::-;26150:24;26168:5;26150:24;:::i;:::-;26143:5;26140:35;26130:2;;26189:1;26186;26179:12;26130:2;26120:79;:::o;26205:138::-;26286:32;26312:5;26286:32;:::i;:::-;26279:5;26276:43;26266:2;;26333:1;26330;26323:12;26266:2;26256:87;:::o;26349:116::-;26419:21;26434:5;26419:21;:::i;:::-;26412:5;26409:32;26399:2;;26455:1;26452;26445:12;26399:2;26389:76;:::o;26471:122::-;26544:24;26562:5;26544:24;:::i;:::-;26537:5;26534:35;26524:2;;26583:1;26580;26573:12;26524:2;26514:79;:::o;26599:118::-;26670:22;26686:5;26670:22;:::i;:::-;26663:5;26660:33;26650:2;;26707:1;26704;26697:12;26650:2;26640:77;:::o

Swarm Source

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