ETH Price: $2,943.34 (-9.18%)
Gas: 60 Gwei

Token

Floki Dokey (KIDO)
 

Overview

Max Total Supply

1,000,000,000,000,000 KIDO

Holders

54

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,837,890,185.176963364337716849 KIDO

Value
$0.00
0x2978903810bfb20f8528a2239e2bad3aad2a5f45
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:
FlokiDokey

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 3 of 10: FlokiDokey.sol
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

import './IERC20.sol';
import './SafeMath.sol';
import './Ownable.sol';
import './Context.sol';
import './Address.sol';
import './IUniswapV2Factory.sol';
import './IUniswapV2Pair.sol';
import './IUniswapV2Router02.sol';


contract FlokiDokey is Context, IERC20, Ownable
{
    using SafeMath for uint256;
    using Address for address;

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

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX 	= ~uint256(0);
    uint256 private _tTotal 		= 1000000000000000 * (10**18);
    uint256 private _rTotal 		= (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name 	= 'Floki Dokey';
    string private _symbol 	= 'KIDO';
    uint8 private _decimals = 18;

    uint256 private _taxFee 		= 2;
    uint256 private _teamFee 		= 8;
    uint256 private _previousTaxFee 	= _taxFee;
    uint256 private _previousTeamFee 	= _teamFee;

    address payable public _opsTeamWalletAddress;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwap = false;
    bool public swapEnabled = true;

    bool public buySellLimitEnabled = false;
    bool public cooldownEnabled 	= false;

    //Min buy/sell amount - > 4T and it can't be changed
    uint256 private constant MIN_BUY_SELL_TXN_AMOUNT 	= 4000000000000;

    // buy/sell Max transaction limit - >  4T
    uint256 private _maxTxAmount 	= 4000000000000 * (10**18);



    // minimum amount of tokens to be swaped => 50M
    uint256 private _numOfTokensToExchangeForTeam = 50000000000 * (10**18);

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapEnabledUpdated(bool enabled);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (address payable opsTeamWalletAddress) 
	{
        _opsTeamWalletAddress = opsTeamWalletAddress;
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        // Create a uniswap pair for this new token

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

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }

    function enableDisableBuySellLimit(bool _buySellLimitEnabled) external onlyOwner()
    {
        buySellLimitEnabled = _buySellLimitEnabled;
    }


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

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

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
        require(!_isExcluded[account], "Account is already excluded");
        require(_excluded.length < 1000, "Excluded list is too long");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

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

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousTeamFee = _teamFee;

        _taxFee = 0;
        _teamFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousTeamFee;
    }

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

    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 sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!cooldownEnabled || (cooldown[sender] < block.timestamp && cooldown[recipient] < block.timestamp), "Cooldown is enabled. Try again in a few minutes.");

        if(sender != owner() && recipient != owner() && buySellLimitEnabled )
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap?
        // also, don't get caught in a circular charity event.
        // also, don't swap if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));

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

        bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
        if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
            // swap the current tokens to ETH and send to the team
            swapTokensForEth(contractTokenBalance);

            uint256 contractETHBalance = address(this).balance;
            if(contractETHBalance > 0) {
                sendETHToTeam(address(this).balance);
            }
        }

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

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }

        //transfer amount, it will take tax and team fee
        _tokenTransfer(sender,recipient,amount,takeFee);

        if (!_isExcludedFromFee[sender]) {
            cooldown[sender] = block.timestamp + (60 seconds);
        }
        if (!_isExcludedFromFee[recipient]) {
            cooldown[recipient] = block.timestamp + (60 seconds);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToTeam(uint256 amount) private {
        _opsTeamWalletAddress.transfer(amount);
    }

    // We are exposing these functions to be able to manual swap and send
    // in case the token is highly valued and 5M becomes too much
    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToTeam(contractETHBalance);
    }

    function setSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function setCooldownEnabled(bool enabled) external onlyOwner() {
        cooldownEnabled = enabled;
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        uint256 tTeamFee = amount.mul(_teamFee).div(100);
        uint256 rTeamFee = tTeamFee.mul(_getRate());
        _takeTeam(tTeamFee, rTeamFee);

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeamFee, uint256 rTeamFee) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeamFee);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tTeamFee);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeamFee) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate, tTeamFee);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeamFee = tAmount.mul(teamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeamFee);
        return (tTransferAmount, tFee, tTeamFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate, uint256 tTeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeamFee = tTeamFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeamFee);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }

    function _getMaxTxAmount() private view returns(uint256) {
        return _maxTxAmount;
    }

    function getMaxTxAmount() public view returns(uint256) {
        return _maxTxAmount;
    }

    function getNumOfTokensToExchangeForTeam() public view returns(uint256) {
        return _numOfTokensToExchangeForTeam;
    }

    function _getETHBalance() public view returns(uint256 balance) {
        return address(this).balance;
    }

    function _setTaxFee(uint256 taxFee) external onlyOwner() {
        require(taxFee >= 1 && taxFee <= 3, 'taxFee should be between 1 and 3');
        _taxFee = taxFee;
    }

    function _setTeamFee(uint256 teamFee) external onlyOwner() {
        require(teamFee >= 1 && teamFee <= 10, 'teamFee should be between 1 and 10');
        _teamFee = teamFee;
    }

    function _setOpsTeamWallet(address payable opsTeamWalletAddress) external onlyOwner() {
        _opsTeamWalletAddress = opsTeamWalletAddress;
    }

    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner()
    {
        require(maxTxAmount >= MIN_BUY_SELL_TXN_AMOUNT  , 'maxTxAmount should be greater than MIN_BUY_SELL_TXN_AMOUNT');
        uint256 _tempMaxTxAmount 	= maxTxAmount * (10**18);
        _maxTxAmount = _tempMaxTxAmount;
    }
}

File 1 of 10: Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

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

File 2 of 10: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @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) {
        return msg.data;
    }
}

File 4 of 10: IERC20.sol
// SPDX-License-Identifier: MIT
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
pragma solidity ^0.8.4;

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

File 5 of 10: IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

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

File 6 of 10: IUniswapV2Pair.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

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

    function initialize(address, address) external;
}

File 7 of 10: IUniswapV2Router01.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2;

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

File 8 of 10: IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

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

File 9 of 10: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract 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() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 10 of 10: SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"opsTeamWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_opsTeamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"opsTeamWalletAddress","type":"address"}],"name":"_setOpsTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buySellLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_buySellLimitEnabled","type":"bool"}],"name":"enableDisableBuySellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumOfTokensToExchangeForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","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"}]

60c06040526d314dc6448d9338c15b0a00000000600855600854600019620000289190620007b1565b60001962000037919062000818565b6009556040518060400160405280600b81526020017f466c6f6b6920446f6b6579000000000000000000000000000000000000000000815250600b908051906020019062000087929190620006c8565b506040518060400160405280600481526020017f4b49444f00000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000d5929190620006c8565b506012600d60006101000a81548160ff021916908360ff1602179055506002600e556008600f55600e54601055600f546011556000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff0219169083151502179055506c327cb2734119d3b7a9000000006013556ba18f07d736b90be550000000601455348015620001a257600080fd5b5060405162005f3c38038062005f3c8339818101604052810190620001c89190620008bd565b620001e8620001dc620005d360201b60201c565b620005db60201b60201c565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009546001600062000240620005d360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002de57600080fd5b505afa158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000319919062000934565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037c57600080fd5b505afa15801562000391573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b7919062000934565b6040518363ffffffff1660e01b8152600401620003d692919062000977565b602060405180830381600087803b158015620003f157600080fd5b505af115801562000406573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042c919062000934565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160056000620004a96200069f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000562620005d360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620005c39190620009b5565b60405180910390a3505062000a37565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006d69062000a01565b90600052602060002090601f016020900481019282620006fa576000855562000746565b82601f106200071557805160ff191683800117855562000746565b8280016001018555821562000746579182015b828111156200074557825182559160200191906001019062000728565b5b50905062000755919062000759565b5090565b5b80821115620007745760008160009055506001016200075a565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007be8262000778565b9150620007cb8362000778565b925082620007de57620007dd62000782565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008258262000778565b9150620008328362000778565b925082821015620008485762000847620007e9565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008858262000858565b9050919050565b620008978162000878565b8114620008a357600080fd5b50565b600081519050620008b7816200088c565b92915050565b600060208284031215620008d657620008d562000853565b5b6000620008e684828501620008a6565b91505092915050565b6000620008fc8262000858565b9050919050565b6200090e81620008ef565b81146200091a57600080fd5b50565b6000815190506200092e8162000903565b92915050565b6000602082840312156200094d576200094c62000853565b5b60006200095d848285016200091d565b91505092915050565b6200097181620008ef565b82525050565b60006040820190506200098e600083018562000966565b6200099d602083018462000966565b9392505050565b620009af8162000778565b82525050565b6000602082019050620009cc6000830184620009a4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a1a57607f821691505b6020821081141562000a315762000a30620009d2565b5b50919050565b60805160a0516154c362000a7960003960008181611121015261274d015260008181610a6701528181612bac01528181612c9c0152612cc301526154c36000f3fe60806040526004361061024a5760003560e01c80636d8b052711610139578063a985ceef116100b6578063eb9d283e1161007a578063eb9d283e146108c3578063f2cc0c18146108ee578063f2fde38b14610917578063f429389014610940578063f815a84214610957578063f84354f11461098257610251565b8063a985ceef146107cc578063af9549e0146107f7578063cba0e99614610820578063dd62ed3e1461085d578063e01af92c1461089a57610251565b80637ef1f70c116100fd5780637ef1f70c146106d15780638da5cb5b146106fc57806395d89b4114610727578063a457c2d714610752578063a9059cbb1461078f57610251565b80636d8b0527146105fc5780636ddd17131461062757806370a0823114610652578063715018a61461068f5780637c39fcdb146106a657610251565b8063313ce567116101c757806351bc3c851161018b57806351bc3c851461052d5780635342acb4146105445780635880b873146105815780635932ead1146105aa5780635c9213f1146105d357610251565b8063313ce56714610434578063395093511461045f5780633bd5d1731461049c5780634549b039146104c557806349bd5a5e1461050257610251565b80631bbae6e01161020e5780631bbae6e01461033f57806323b872dd1461036857806328667162146103a5578063299b8887146103ce5780632d838119146103f757610251565b806306fdde0314610256578063095ea7b31461028157806313114a9d146102be5780631694505e146102e957806318160ddd1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109ab565b60405161027891906141ea565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906142a5565b610a3d565b6040516102b59190614300565b60405180910390f35b3480156102ca57600080fd5b506102d3610a5b565b6040516102e0919061432a565b60405180910390f35b3480156102f557600080fd5b506102fe610a65565b60405161030b91906143a4565b60405180910390f35b34801561032057600080fd5b50610329610a89565b604051610336919061432a565b60405180910390f35b34801561034b57600080fd5b50610366600480360381019061036191906143bf565b610a93565b005b34801561037457600080fd5b5061038f600480360381019061038a91906143ec565b610b7b565b60405161039c9190614300565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c791906143bf565b610c54565b005b3480156103da57600080fd5b506103f560048036038101906103f0919061447d565b610d2b565b005b34801561040357600080fd5b5061041e600480360381019061041991906143bf565b610deb565b60405161042b919061432a565b60405180910390f35b34801561044057600080fd5b50610449610e59565b60405161045691906144c6565b60405180910390f35b34801561046b57600080fd5b50610486600480360381019061048191906142a5565b610e70565b6040516104939190614300565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143bf565b610f23565b005b3480156104d157600080fd5b506104ec60048036038101906104e7919061450d565b61109d565b6040516104f9919061432a565b60405180910390f35b34801561050e57600080fd5b5061051761111f565b604051610524919061455c565b60405180910390f35b34801561053957600080fd5b50610542611143565b005b34801561055057600080fd5b5061056b60048036038101906105669190614577565b6111d8565b6040516105789190614300565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a391906143bf565b61122e565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906145a4565b611305565b005b3480156105df57600080fd5b506105fa60048036038101906105f591906145a4565b61139e565b005b34801561060857600080fd5b50610611611437565b60405161061e919061432a565b60405180910390f35b34801561063357600080fd5b5061063c611441565b6040516106499190614300565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190614577565b611454565b604051610686919061432a565b60405180910390f35b34801561069b57600080fd5b506106a461153f565b005b3480156106b257600080fd5b506106bb6115c7565b6040516106c891906145e0565b60405180910390f35b3480156106dd57600080fd5b506106e66115ed565b6040516106f39190614300565b60405180910390f35b34801561070857600080fd5b50610711611600565b60405161071e919061455c565b60405180910390f35b34801561073357600080fd5b5061073c611629565b60405161074991906141ea565b60405180910390f35b34801561075e57600080fd5b50610779600480360381019061077491906142a5565b6116bb565b6040516107869190614300565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b191906142a5565b611788565b6040516107c39190614300565b60405180910390f35b3480156107d857600080fd5b506107e16117a6565b6040516107ee9190614300565b60405180910390f35b34801561080357600080fd5b5061081e600480360381019061081991906145fb565b6117b9565b005b34801561082c57600080fd5b5061084760048036038101906108429190614577565b611890565b6040516108549190614300565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f919061463b565b6118e6565b604051610891919061432a565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc91906145a4565b61196d565b005b3480156108cf57600080fd5b506108d8611a06565b6040516108e5919061432a565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614577565b611a10565b005b34801561092357600080fd5b5061093e60048036038101906109399190614577565b611d77565b005b34801561094c57600080fd5b50610955611e6f565b005b34801561096357600080fd5b5061096c611efc565b604051610979919061432a565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190614577565b611f04565b005b6060600b80546109ba906146aa565b80601f01602080910402602001604051908101604052809291908181526020018280546109e6906146aa565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a51610a4a61223a565b8484612242565b6001905092915050565b6000600a54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b610a9b61223a565b73ffffffffffffffffffffffffffffffffffffffff16610ab9611600565b73ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690614728565b60405180910390fd5b6503a352944000811015610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f906147ba565b60405180910390fd5b6000670de0b6b3a764000082610b6e9190614809565b9050806013819055505050565b6000610b8884848461240d565b610c4984610b9461223a565b610c448560405180606001604052806028815260200161544160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bfa61223a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129cd9092919063ffffffff16565b612242565b600190509392505050565b610c5c61223a565b73ffffffffffffffffffffffffffffffffffffffff16610c7a611600565b73ffffffffffffffffffffffffffffffffffffffff1614610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790614728565b60405180910390fd5b60018110158015610ce25750600a8111155b610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d18906148d5565b60405180910390fd5b80600f8190555050565b610d3361223a565b73ffffffffffffffffffffffffffffffffffffffff16610d51611600565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90614728565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600954821115610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614967565b60405180910390fd5b6000610e3c612a22565b9050610e518184612a4d90919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b6000610f19610e7d61223a565b84610f148560036000610e8e61223a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b612242565b6001905092915050565b6000610f2d61223a565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906149f9565b60405180910390fd5b6000610fc783612a79565b50505050905061101f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061107781600954612adc90919063ffffffff16565b60098190555061109283600a54612a6390919063ffffffff16565b600a81905550505050565b60006008548311156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90614a65565b60405180910390fd5b816111035760006110f484612a79565b50505050905080915050611119565b600061110e84612a79565b505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61114b61223a565b73ffffffffffffffffffffffffffffffffffffffff16611169611600565b73ffffffffffffffffffffffffffffffffffffffff16146111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690614728565b60405180910390fd5b60006111ca30611454565b90506111d581612af2565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61123661223a565b73ffffffffffffffffffffffffffffffffffffffff16611254611600565b73ffffffffffffffffffffffffffffffffffffffff16146112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a190614728565b60405180910390fd5b600181101580156112bc575060038111155b6112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290614ad1565b60405180910390fd5b80600e8190555050565b61130d61223a565b73ffffffffffffffffffffffffffffffffffffffff1661132b611600565b73ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890614728565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b6113a661223a565b73ffffffffffffffffffffffffffffffffffffffff166113c4611600565b73ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190614728565b60405180910390fd5b80601260166101000a81548160ff02191690831515021790555050565b6000601354905090565b601260159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114ef57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061153a565b611537600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610deb565b90505b919050565b61154761223a565b73ffffffffffffffffffffffffffffffffffffffff16611565611600565b73ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290614728565b60405180910390fd5b6115c56000612d74565b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260169054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611638906146aa565b80601f0160208091040260200160405190810160405280929190818152602001828054611664906146aa565b80156116b15780601f10611686576101008083540402835291602001916116b1565b820191906000526020600020905b81548152906001019060200180831161169457829003601f168201915b5050505050905090565b600061177e6116c861223a565b846117798560405180606001604052806025815260200161546960259139600360006116f261223a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129cd9092919063ffffffff16565b612242565b6001905092915050565b600061179c61179561223a565b848461240d565b6001905092915050565b601260179054906101000a900460ff1681565b6117c161223a565b73ffffffffffffffffffffffffffffffffffffffff166117df611600565b73ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c90614728565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61197561223a565b73ffffffffffffffffffffffffffffffffffffffff16611993611600565b73ffffffffffffffffffffffffffffffffffffffff16146119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090614728565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6000601454905090565b611a1861223a565b73ffffffffffffffffffffffffffffffffffffffff16611a36611600565b73ffffffffffffffffffffffffffffffffffffffff1614611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614728565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614b63565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390614bcf565b60405180910390fd5b6103e860078054905010611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc90614c3b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611cb957611c75600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610deb565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7f61223a565b73ffffffffffffffffffffffffffffffffffffffff16611d9d611600565b73ffffffffffffffffffffffffffffffffffffffff1614611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614728565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90614ccd565b60405180910390fd5b611e6c81612d74565b50565b611e7761223a565b73ffffffffffffffffffffffffffffffffffffffff16611e95611600565b73ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290614728565b60405180910390fd5b6000479050611ef981612e38565b50565b600047905090565b611f0c61223a565b73ffffffffffffffffffffffffffffffffffffffff16611f2a611600565b73ffffffffffffffffffffffffffffffffffffffff1614611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790614728565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661200c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200390614bcf565b60405180910390fd5b60005b600780549050811015612236578173ffffffffffffffffffffffffffffffffffffffff166007828154811061204757612046614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561222357600760016007805490506120a29190614d1c565b815481106120b3576120b2614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600782815481106120f2576120f1614ced565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806121e9576121e8614d50565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612236565b808061222e90614d7f565b91505061200f565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990614e3a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990614ecc565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612400919061432a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561247d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247490614f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e490614ff0565b60405180910390fd5b60008111612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252790615082565b60405180910390fd5b601260179054906101000a900460ff1615806125d4575042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541080156125d3575042600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b5b612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a90615114565b60405180910390fd5b61261b611600565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126895750612659611600565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126a15750601260169054906101000a900460ff165b156126ec576013548111156126eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e2906151a6565b60405180910390fd5b5b60006126f730611454565b905060135481106127085760135490505b60006014548210159050601260149054906101000a900460ff1615801561273b5750601260159054906101000a900460ff165b80156127445750805b801561279c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156127c4576127aa82612af2565b600047905060008111156127c2576127c147612e38565b5b505b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061286b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561287557600090505b61288186868684612ea4565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661292357603c426128df91906151c6565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129c557603c4261298191906151c6565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050505050565b6000838311158290612a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0c91906141ea565b60405180910390fd5b5082840390509392505050565b6000806000612a2f61320b565b91509150612a468183612a4d90919063ffffffff16565b9250505090565b60008183612a5b919061524b565b905092915050565b60008183612a7191906151c6565b905092915050565b600080600080600080600080612a9489600e54600f546134be565b9250925092506000612aa4612a22565b90506000806000612ab78d878688613554565b92509250925082828289899b509b509b509b509b505050505050505091939590929450565b60008183612aea9190614d1c565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612b2a57612b2961527c565b5b604051908082528060200260200182016040528015612b585781602001602082028036833780820191505090505b5090503081600081518110612b7057612b6f614ced565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1057600080fd5b505afa158015612c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4891906152c0565b81600181518110612c5c57612c5b614ced565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612cc1307f000000000000000000000000000000000000000000000000000000000000000084612242565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d239594939291906153e6565b600060405180830381600087803b158015612d3d57600080fd5b505af1158015612d51573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ea0573d6000803e3d6000fd5b5050565b80612eb257612eb16135dd565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f555750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f6a57612f65848484613620565b6131a1565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561300d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130225761301d848484613873565b6131a0565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130c65750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130db576130d6848484613ac6565b61319f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561317d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131925761318d848484613c84565b61319e565b61319d848484613ac6565b5b5b5b5b60006131cb60646131bd600f5486613f6c90919063ffffffff16565b612a4d90919063ffffffff16565b905060006131e96131da612a22565b83613f6c90919063ffffffff16565b90506131f58282613f82565b8261320357613202614103565b5b505050505050565b600080600060095490506000600854905060005b6007805490508110156134815782600160006007848154811061324557613244614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061333357508160026000600784815481106132cb576132ca614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561334a57600954600854945094505050506134ba565b6133da600160006007848154811061336557613364614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612adc90919063ffffffff16565b925061346c60026000600784815481106133f7576133f6614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612adc90919063ffffffff16565b9150808061347990614d7f565b91505061321f565b50613499600854600954612a4d90919063ffffffff16565b8210156134b1576009546008549350935050506134ba565b81819350935050505b9091565b6000806000806134ea60646134dc888a613f6c90919063ffffffff16565b612a4d90919063ffffffff16565b905060006135146064613506888b613f6c90919063ffffffff16565b612a4d90919063ffffffff16565b9050600061353d8261352f858c612adc90919063ffffffff16565b612adc90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061356d8689613f6c90919063ffffffff16565b905060006135848789613f6c90919063ffffffff16565b9050600061359b8888613f6c90919063ffffffff16565b905060006135c4826135b68587612adc90919063ffffffff16565b612adc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600e541480156135f157506000600f54145b156135fb5761361e565b600e54601081905550600f546011819055506000600e819055506000600f819055505b565b600080600080600061363186612a79565b9450945094509450945061368d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137b784600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138048382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613861919061432a565b60405180910390a35050505050505050565b600080600080600061388486612a79565b945094509450945094506138e085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397582600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0a84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a578382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ab4919061432a565b60405180910390a35050505050505050565b6000806000806000613ad786612a79565b94509450945094509450613b3385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bc884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c158382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c72919061432a565b60405180910390a35050505050505050565b6000806000806000613c9586612a79565b94509450945094509450613cf186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d8685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1b82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613eb084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613efd8382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f5a919061432a565b60405180910390a35050505050505050565b60008183613f7a9190614809565b905092915050565b613fd481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ff576140bb82600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b601054600e81905550601154600f81905550565b61412c82600954612adc90919063ffffffff16565b60098190555061414781600a54612a6390919063ffffffff16565b600a819055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561418b578082015181840152602081019050614170565b8381111561419a576000848401525b50505050565b6000601f19601f8301169050919050565b60006141bc82614151565b6141c6818561415c565b93506141d681856020860161416d565b6141df816141a0565b840191505092915050565b6000602082019050818103600083015261420481846141b1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061423c82614211565b9050919050565b61424c81614231565b811461425757600080fd5b50565b60008135905061426981614243565b92915050565b6000819050919050565b6142828161426f565b811461428d57600080fd5b50565b60008135905061429f81614279565b92915050565b600080604083850312156142bc576142bb61420c565b5b60006142ca8582860161425a565b92505060206142db85828601614290565b9150509250929050565b60008115159050919050565b6142fa816142e5565b82525050565b600060208201905061431560008301846142f1565b92915050565b6143248161426f565b82525050565b600060208201905061433f600083018461431b565b92915050565b6000819050919050565b600061436a61436561436084614211565b614345565b614211565b9050919050565b600061437c8261434f565b9050919050565b600061438e82614371565b9050919050565b61439e81614383565b82525050565b60006020820190506143b96000830184614395565b92915050565b6000602082840312156143d5576143d461420c565b5b60006143e384828501614290565b91505092915050565b6000806000606084860312156144055761440461420c565b5b60006144138682870161425a565b93505060206144248682870161425a565b925050604061443586828701614290565b9150509250925092565b600061444a82614211565b9050919050565b61445a8161443f565b811461446557600080fd5b50565b60008135905061447781614451565b92915050565b6000602082840312156144935761449261420c565b5b60006144a184828501614468565b91505092915050565b600060ff82169050919050565b6144c0816144aa565b82525050565b60006020820190506144db60008301846144b7565b92915050565b6144ea816142e5565b81146144f557600080fd5b50565b600081359050614507816144e1565b92915050565b600080604083850312156145245761452361420c565b5b600061453285828601614290565b9250506020614543858286016144f8565b9150509250929050565b61455681614231565b82525050565b6000602082019050614571600083018461454d565b92915050565b60006020828403121561458d5761458c61420c565b5b600061459b8482850161425a565b91505092915050565b6000602082840312156145ba576145b961420c565b5b60006145c8848285016144f8565b91505092915050565b6145da8161443f565b82525050565b60006020820190506145f560008301846145d1565b92915050565b600080604083850312156146125761461161420c565b5b60006146208582860161425a565b9250506020614631858286016144f8565b9150509250929050565b600080604083850312156146525761465161420c565b5b60006146608582860161425a565b92505060206146718582860161425a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146c257607f821691505b602082108114156146d6576146d561467b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061471260208361415c565b915061471d826146dc565b602082019050919050565b6000602082019050818103600083015261474181614705565b9050919050565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e204d494e5f4255595f53454c4c5f54584e5f414d4f554e54000000000000602082015250565b60006147a4603a8361415c565b91506147af82614748565b604082019050919050565b600060208201905081810360008301526147d381614797565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148148261426f565b915061481f8361426f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614858576148576147da565b5b828202905092915050565b7f7465616d4665652073686f756c64206265206265747765656e203120616e642060008201527f3130000000000000000000000000000000000000000000000000000000000000602082015250565b60006148bf60228361415c565b91506148ca82614863565b604082019050919050565b600060208201905081810360008301526148ee816148b2565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614951602a8361415c565b915061495c826148f5565b604082019050919050565b6000602082019050818103600083015261498081614944565b9050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b60006149e3602c8361415c565b91506149ee82614987565b604082019050919050565b60006020820190508181036000830152614a12816149d6565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614a4f601f8361415c565b9150614a5a82614a19565b602082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b7f7461784665652073686f756c64206265206265747765656e203120616e642033600082015250565b6000614abb60208361415c565b9150614ac682614a85565b602082019050919050565b60006020820190508181036000830152614aea81614aae565b9050919050565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b4d60228361415c565b9150614b5882614af1565b604082019050919050565b60006020820190508181036000830152614b7c81614b40565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614bb9601b8361415c565b9150614bc482614b83565b602082019050919050565b60006020820190508181036000830152614be881614bac565b9050919050565b7f4578636c75646564206c69737420697320746f6f206c6f6e6700000000000000600082015250565b6000614c2560198361415c565b9150614c3082614bef565b602082019050919050565b60006020820190508181036000830152614c5481614c18565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cb760268361415c565b9150614cc282614c5b565b604082019050919050565b60006020820190508181036000830152614ce681614caa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614d278261426f565b9150614d328361426f565b925082821015614d4557614d446147da565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000614d8a8261426f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614dbd57614dbc6147da565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e2460248361415c565b9150614e2f82614dc8565b604082019050919050565b60006020820190508181036000830152614e5381614e17565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614eb660228361415c565b9150614ec182614e5a565b604082019050919050565b60006020820190508181036000830152614ee581614ea9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f4860258361415c565b9150614f5382614eec565b604082019050919050565b60006020820190508181036000830152614f7781614f3b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fda60238361415c565b9150614fe582614f7e565b604082019050919050565b6000602082019050818103600083015261500981614fcd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061506c60298361415c565b915061507782615010565b604082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f436f6f6c646f776e20697320656e61626c65642e2054727920616761696e206960008201527f6e206120666577206d696e757465732e00000000000000000000000000000000602082015250565b60006150fe60308361415c565b9150615109826150a2565b604082019050919050565b6000602082019050818103600083015261512d816150f1565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061519060288361415c565b915061519b82615134565b604082019050919050565b600060208201905081810360008301526151bf81615183565b9050919050565b60006151d18261426f565b91506151dc8361426f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615211576152106147da565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006152568261426f565b91506152618361426f565b9250826152715761527061521c565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506152ba81614243565b92915050565b6000602082840312156152d6576152d561420c565b5b60006152e4848285016152ab565b91505092915050565b6000819050919050565b600061531261530d615308846152ed565b614345565b61426f565b9050919050565b615322816152f7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61535d81614231565b82525050565b600061536f8383615354565b60208301905092915050565b6000602082019050919050565b600061539382615328565b61539d8185615333565b93506153a883615344565b8060005b838110156153d95781516153c08882615363565b97506153cb8361537b565b9250506001810190506153ac565b5085935050505092915050565b600060a0820190506153fb600083018861431b565b6154086020830187615319565b818103604083015261541a8186615388565b9050615429606083018561454d565b615436608083018461431b565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bdf410015f102950e5140ffaf51a3d712dfbe1196bbb5c8c7a42e5e868fcfccd64736f6c6343000809003300000000000000000000000077254b41297f081d585c5bc88224aad3c167e943

Deployed Bytecode

0x60806040526004361061024a5760003560e01c80636d8b052711610139578063a985ceef116100b6578063eb9d283e1161007a578063eb9d283e146108c3578063f2cc0c18146108ee578063f2fde38b14610917578063f429389014610940578063f815a84214610957578063f84354f11461098257610251565b8063a985ceef146107cc578063af9549e0146107f7578063cba0e99614610820578063dd62ed3e1461085d578063e01af92c1461089a57610251565b80637ef1f70c116100fd5780637ef1f70c146106d15780638da5cb5b146106fc57806395d89b4114610727578063a457c2d714610752578063a9059cbb1461078f57610251565b80636d8b0527146105fc5780636ddd17131461062757806370a0823114610652578063715018a61461068f5780637c39fcdb146106a657610251565b8063313ce567116101c757806351bc3c851161018b57806351bc3c851461052d5780635342acb4146105445780635880b873146105815780635932ead1146105aa5780635c9213f1146105d357610251565b8063313ce56714610434578063395093511461045f5780633bd5d1731461049c5780634549b039146104c557806349bd5a5e1461050257610251565b80631bbae6e01161020e5780631bbae6e01461033f57806323b872dd1461036857806328667162146103a5578063299b8887146103ce5780632d838119146103f757610251565b806306fdde0314610256578063095ea7b31461028157806313114a9d146102be5780631694505e146102e957806318160ddd1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109ab565b60405161027891906141ea565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906142a5565b610a3d565b6040516102b59190614300565b60405180910390f35b3480156102ca57600080fd5b506102d3610a5b565b6040516102e0919061432a565b60405180910390f35b3480156102f557600080fd5b506102fe610a65565b60405161030b91906143a4565b60405180910390f35b34801561032057600080fd5b50610329610a89565b604051610336919061432a565b60405180910390f35b34801561034b57600080fd5b50610366600480360381019061036191906143bf565b610a93565b005b34801561037457600080fd5b5061038f600480360381019061038a91906143ec565b610b7b565b60405161039c9190614300565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c791906143bf565b610c54565b005b3480156103da57600080fd5b506103f560048036038101906103f0919061447d565b610d2b565b005b34801561040357600080fd5b5061041e600480360381019061041991906143bf565b610deb565b60405161042b919061432a565b60405180910390f35b34801561044057600080fd5b50610449610e59565b60405161045691906144c6565b60405180910390f35b34801561046b57600080fd5b50610486600480360381019061048191906142a5565b610e70565b6040516104939190614300565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143bf565b610f23565b005b3480156104d157600080fd5b506104ec60048036038101906104e7919061450d565b61109d565b6040516104f9919061432a565b60405180910390f35b34801561050e57600080fd5b5061051761111f565b604051610524919061455c565b60405180910390f35b34801561053957600080fd5b50610542611143565b005b34801561055057600080fd5b5061056b60048036038101906105669190614577565b6111d8565b6040516105789190614300565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a391906143bf565b61122e565b005b3480156105b657600080fd5b506105d160048036038101906105cc91906145a4565b611305565b005b3480156105df57600080fd5b506105fa60048036038101906105f591906145a4565b61139e565b005b34801561060857600080fd5b50610611611437565b60405161061e919061432a565b60405180910390f35b34801561063357600080fd5b5061063c611441565b6040516106499190614300565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190614577565b611454565b604051610686919061432a565b60405180910390f35b34801561069b57600080fd5b506106a461153f565b005b3480156106b257600080fd5b506106bb6115c7565b6040516106c891906145e0565b60405180910390f35b3480156106dd57600080fd5b506106e66115ed565b6040516106f39190614300565b60405180910390f35b34801561070857600080fd5b50610711611600565b60405161071e919061455c565b60405180910390f35b34801561073357600080fd5b5061073c611629565b60405161074991906141ea565b60405180910390f35b34801561075e57600080fd5b50610779600480360381019061077491906142a5565b6116bb565b6040516107869190614300565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b191906142a5565b611788565b6040516107c39190614300565b60405180910390f35b3480156107d857600080fd5b506107e16117a6565b6040516107ee9190614300565b60405180910390f35b34801561080357600080fd5b5061081e600480360381019061081991906145fb565b6117b9565b005b34801561082c57600080fd5b5061084760048036038101906108429190614577565b611890565b6040516108549190614300565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f919061463b565b6118e6565b604051610891919061432a565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc91906145a4565b61196d565b005b3480156108cf57600080fd5b506108d8611a06565b6040516108e5919061432a565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614577565b611a10565b005b34801561092357600080fd5b5061093e60048036038101906109399190614577565b611d77565b005b34801561094c57600080fd5b50610955611e6f565b005b34801561096357600080fd5b5061096c611efc565b604051610979919061432a565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190614577565b611f04565b005b6060600b80546109ba906146aa565b80601f01602080910402602001604051908101604052809291908181526020018280546109e6906146aa565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a51610a4a61223a565b8484612242565b6001905092915050565b6000600a54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b610a9b61223a565b73ffffffffffffffffffffffffffffffffffffffff16610ab9611600565b73ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690614728565b60405180910390fd5b6503a352944000811015610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f906147ba565b60405180910390fd5b6000670de0b6b3a764000082610b6e9190614809565b9050806013819055505050565b6000610b8884848461240d565b610c4984610b9461223a565b610c448560405180606001604052806028815260200161544160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bfa61223a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129cd9092919063ffffffff16565b612242565b600190509392505050565b610c5c61223a565b73ffffffffffffffffffffffffffffffffffffffff16610c7a611600565b73ffffffffffffffffffffffffffffffffffffffff1614610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790614728565b60405180910390fd5b60018110158015610ce25750600a8111155b610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d18906148d5565b60405180910390fd5b80600f8190555050565b610d3361223a565b73ffffffffffffffffffffffffffffffffffffffff16610d51611600565b73ffffffffffffffffffffffffffffffffffffffff1614610da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9e90614728565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600954821115610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614967565b60405180910390fd5b6000610e3c612a22565b9050610e518184612a4d90919063ffffffff16565b915050919050565b6000600d60009054906101000a900460ff16905090565b6000610f19610e7d61223a565b84610f148560036000610e8e61223a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b612242565b6001905092915050565b6000610f2d61223a565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb3906149f9565b60405180910390fd5b6000610fc783612a79565b50505050905061101f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061107781600954612adc90919063ffffffff16565b60098190555061109283600a54612a6390919063ffffffff16565b600a81905550505050565b60006008548311156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90614a65565b60405180910390fd5b816111035760006110f484612a79565b50505050905080915050611119565b600061110e84612a79565b505050915050809150505b92915050565b7f0000000000000000000000004043363c6b2d1973ae30a47e9c1065c4deaa6ffc81565b61114b61223a565b73ffffffffffffffffffffffffffffffffffffffff16611169611600565b73ffffffffffffffffffffffffffffffffffffffff16146111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690614728565b60405180910390fd5b60006111ca30611454565b90506111d581612af2565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61123661223a565b73ffffffffffffffffffffffffffffffffffffffff16611254611600565b73ffffffffffffffffffffffffffffffffffffffff16146112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a190614728565b60405180910390fd5b600181101580156112bc575060038111155b6112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f290614ad1565b60405180910390fd5b80600e8190555050565b61130d61223a565b73ffffffffffffffffffffffffffffffffffffffff1661132b611600565b73ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890614728565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b6113a661223a565b73ffffffffffffffffffffffffffffffffffffffff166113c4611600565b73ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190614728565b60405180910390fd5b80601260166101000a81548160ff02191690831515021790555050565b6000601354905090565b601260159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114ef57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061153a565b611537600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610deb565b90505b919050565b61154761223a565b73ffffffffffffffffffffffffffffffffffffffff16611565611600565b73ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290614728565b60405180910390fd5b6115c56000612d74565b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260169054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611638906146aa565b80601f0160208091040260200160405190810160405280929190818152602001828054611664906146aa565b80156116b15780601f10611686576101008083540402835291602001916116b1565b820191906000526020600020905b81548152906001019060200180831161169457829003601f168201915b5050505050905090565b600061177e6116c861223a565b846117798560405180606001604052806025815260200161546960259139600360006116f261223a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129cd9092919063ffffffff16565b612242565b6001905092915050565b600061179c61179561223a565b848461240d565b6001905092915050565b601260179054906101000a900460ff1681565b6117c161223a565b73ffffffffffffffffffffffffffffffffffffffff166117df611600565b73ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c90614728565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61197561223a565b73ffffffffffffffffffffffffffffffffffffffff16611993611600565b73ffffffffffffffffffffffffffffffffffffffff16146119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090614728565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6000601454905090565b611a1861223a565b73ffffffffffffffffffffffffffffffffffffffff16611a36611600565b73ffffffffffffffffffffffffffffffffffffffff1614611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614728565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690614b63565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390614bcf565b60405180910390fd5b6103e860078054905010611be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdc90614c3b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611cb957611c75600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610deb565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7f61223a565b73ffffffffffffffffffffffffffffffffffffffff16611d9d611600565b73ffffffffffffffffffffffffffffffffffffffff1614611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614728565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90614ccd565b60405180910390fd5b611e6c81612d74565b50565b611e7761223a565b73ffffffffffffffffffffffffffffffffffffffff16611e95611600565b73ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290614728565b60405180910390fd5b6000479050611ef981612e38565b50565b600047905090565b611f0c61223a565b73ffffffffffffffffffffffffffffffffffffffff16611f2a611600565b73ffffffffffffffffffffffffffffffffffffffff1614611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790614728565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661200c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200390614bcf565b60405180910390fd5b60005b600780549050811015612236578173ffffffffffffffffffffffffffffffffffffffff166007828154811061204757612046614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561222357600760016007805490506120a29190614d1c565b815481106120b3576120b2614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600782815481106120f2576120f1614ced565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060078054806121e9576121e8614d50565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612236565b808061222e90614d7f565b91505061200f565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990614e3a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990614ecc565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612400919061432a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561247d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247490614f5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e490614ff0565b60405180910390fd5b60008111612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252790615082565b60405180910390fd5b601260179054906101000a900460ff1615806125d4575042600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541080156125d3575042600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b5b612613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260a90615114565b60405180910390fd5b61261b611600565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126895750612659611600565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126a15750601260169054906101000a900460ff165b156126ec576013548111156126eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e2906151a6565b60405180910390fd5b5b60006126f730611454565b905060135481106127085760135490505b60006014548210159050601260149054906101000a900460ff1615801561273b5750601260159054906101000a900460ff165b80156127445750805b801561279c57507f0000000000000000000000004043363c6b2d1973ae30a47e9c1065c4deaa6ffc73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156127c4576127aa82612af2565b600047905060008111156127c2576127c147612e38565b5b505b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061286b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561287557600090505b61288186868684612ea4565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661292357603c426128df91906151c6565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129c557603c4261298191906151c6565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050505050565b6000838311158290612a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0c91906141ea565b60405180910390fd5b5082840390509392505050565b6000806000612a2f61320b565b91509150612a468183612a4d90919063ffffffff16565b9250505090565b60008183612a5b919061524b565b905092915050565b60008183612a7191906151c6565b905092915050565b600080600080600080600080612a9489600e54600f546134be565b9250925092506000612aa4612a22565b90506000806000612ab78d878688613554565b92509250925082828289899b509b509b509b509b505050505050505091939590929450565b60008183612aea9190614d1c565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612b2a57612b2961527c565b5b604051908082528060200260200182016040528015612b585781602001602082028036833780820191505090505b5090503081600081518110612b7057612b6f614ced565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1057600080fd5b505afa158015612c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4891906152c0565b81600181518110612c5c57612c5b614ced565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612cc1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612242565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d239594939291906153e6565b600060405180830381600087803b158015612d3d57600080fd5b505af1158015612d51573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ea0573d6000803e3d6000fd5b5050565b80612eb257612eb16135dd565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f555750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f6a57612f65848484613620565b6131a1565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561300d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130225761301d848484613873565b6131a0565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130c65750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130db576130d6848484613ac6565b61319f565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561317d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131925761318d848484613c84565b61319e565b61319d848484613ac6565b5b5b5b5b60006131cb60646131bd600f5486613f6c90919063ffffffff16565b612a4d90919063ffffffff16565b905060006131e96131da612a22565b83613f6c90919063ffffffff16565b90506131f58282613f82565b8261320357613202614103565b5b505050505050565b600080600060095490506000600854905060005b6007805490508110156134815782600160006007848154811061324557613244614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061333357508160026000600784815481106132cb576132ca614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561334a57600954600854945094505050506134ba565b6133da600160006007848154811061336557613364614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612adc90919063ffffffff16565b925061346c60026000600784815481106133f7576133f6614ced565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612adc90919063ffffffff16565b9150808061347990614d7f565b91505061321f565b50613499600854600954612a4d90919063ffffffff16565b8210156134b1576009546008549350935050506134ba565b81819350935050505b9091565b6000806000806134ea60646134dc888a613f6c90919063ffffffff16565b612a4d90919063ffffffff16565b905060006135146064613506888b613f6c90919063ffffffff16565b612a4d90919063ffffffff16565b9050600061353d8261352f858c612adc90919063ffffffff16565b612adc90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061356d8689613f6c90919063ffffffff16565b905060006135848789613f6c90919063ffffffff16565b9050600061359b8888613f6c90919063ffffffff16565b905060006135c4826135b68587612adc90919063ffffffff16565b612adc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600e541480156135f157506000600f54145b156135fb5761361e565b600e54601081905550600f546011819055506000600e819055506000600f819055505b565b600080600080600061363186612a79565b9450945094509450945061368d86600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137b784600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138048382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613861919061432a565b60405180910390a35050505050505050565b600080600080600061388486612a79565b945094509450945094506138e085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397582600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0a84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a578382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ab4919061432a565b60405180910390a35050505050505050565b6000806000806000613ad786612a79565b94509450945094509450613b3385600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bc884600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c158382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c72919061432a565b60405180910390a35050505050505050565b6000806000806000613c9586612a79565b94509450945094509450613cf186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d8685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1b82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613eb084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613efd8382614117565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f5a919061432a565b60405180910390a35050505050505050565b60008183613f7a9190614809565b905092915050565b613fd481600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156140ff576140bb82600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a6390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b601054600e81905550601154600f81905550565b61412c82600954612adc90919063ffffffff16565b60098190555061414781600a54612a6390919063ffffffff16565b600a819055505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561418b578082015181840152602081019050614170565b8381111561419a576000848401525b50505050565b6000601f19601f8301169050919050565b60006141bc82614151565b6141c6818561415c565b93506141d681856020860161416d565b6141df816141a0565b840191505092915050565b6000602082019050818103600083015261420481846141b1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061423c82614211565b9050919050565b61424c81614231565b811461425757600080fd5b50565b60008135905061426981614243565b92915050565b6000819050919050565b6142828161426f565b811461428d57600080fd5b50565b60008135905061429f81614279565b92915050565b600080604083850312156142bc576142bb61420c565b5b60006142ca8582860161425a565b92505060206142db85828601614290565b9150509250929050565b60008115159050919050565b6142fa816142e5565b82525050565b600060208201905061431560008301846142f1565b92915050565b6143248161426f565b82525050565b600060208201905061433f600083018461431b565b92915050565b6000819050919050565b600061436a61436561436084614211565b614345565b614211565b9050919050565b600061437c8261434f565b9050919050565b600061438e82614371565b9050919050565b61439e81614383565b82525050565b60006020820190506143b96000830184614395565b92915050565b6000602082840312156143d5576143d461420c565b5b60006143e384828501614290565b91505092915050565b6000806000606084860312156144055761440461420c565b5b60006144138682870161425a565b93505060206144248682870161425a565b925050604061443586828701614290565b9150509250925092565b600061444a82614211565b9050919050565b61445a8161443f565b811461446557600080fd5b50565b60008135905061447781614451565b92915050565b6000602082840312156144935761449261420c565b5b60006144a184828501614468565b91505092915050565b600060ff82169050919050565b6144c0816144aa565b82525050565b60006020820190506144db60008301846144b7565b92915050565b6144ea816142e5565b81146144f557600080fd5b50565b600081359050614507816144e1565b92915050565b600080604083850312156145245761452361420c565b5b600061453285828601614290565b9250506020614543858286016144f8565b9150509250929050565b61455681614231565b82525050565b6000602082019050614571600083018461454d565b92915050565b60006020828403121561458d5761458c61420c565b5b600061459b8482850161425a565b91505092915050565b6000602082840312156145ba576145b961420c565b5b60006145c8848285016144f8565b91505092915050565b6145da8161443f565b82525050565b60006020820190506145f560008301846145d1565b92915050565b600080604083850312156146125761461161420c565b5b60006146208582860161425a565b9250506020614631858286016144f8565b9150509250929050565b600080604083850312156146525761465161420c565b5b60006146608582860161425a565b92505060206146718582860161425a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146c257607f821691505b602082108114156146d6576146d561467b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061471260208361415c565b915061471d826146dc565b602082019050919050565b6000602082019050818103600083015261474181614705565b9050919050565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e204d494e5f4255595f53454c4c5f54584e5f414d4f554e54000000000000602082015250565b60006147a4603a8361415c565b91506147af82614748565b604082019050919050565b600060208201905081810360008301526147d381614797565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148148261426f565b915061481f8361426f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614858576148576147da565b5b828202905092915050565b7f7465616d4665652073686f756c64206265206265747765656e203120616e642060008201527f3130000000000000000000000000000000000000000000000000000000000000602082015250565b60006148bf60228361415c565b91506148ca82614863565b604082019050919050565b600060208201905081810360008301526148ee816148b2565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614951602a8361415c565b915061495c826148f5565b604082019050919050565b6000602082019050818103600083015261498081614944565b9050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b60006149e3602c8361415c565b91506149ee82614987565b604082019050919050565b60006020820190508181036000830152614a12816149d6565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614a4f601f8361415c565b9150614a5a82614a19565b602082019050919050565b60006020820190508181036000830152614a7e81614a42565b9050919050565b7f7461784665652073686f756c64206265206265747765656e203120616e642033600082015250565b6000614abb60208361415c565b9150614ac682614a85565b602082019050919050565b60006020820190508181036000830152614aea81614aae565b9050919050565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b4d60228361415c565b9150614b5882614af1565b604082019050919050565b60006020820190508181036000830152614b7c81614b40565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000614bb9601b8361415c565b9150614bc482614b83565b602082019050919050565b60006020820190508181036000830152614be881614bac565b9050919050565b7f4578636c75646564206c69737420697320746f6f206c6f6e6700000000000000600082015250565b6000614c2560198361415c565b9150614c3082614bef565b602082019050919050565b60006020820190508181036000830152614c5481614c18565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cb760268361415c565b9150614cc282614c5b565b604082019050919050565b60006020820190508181036000830152614ce681614caa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614d278261426f565b9150614d328361426f565b925082821015614d4557614d446147da565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000614d8a8261426f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614dbd57614dbc6147da565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e2460248361415c565b9150614e2f82614dc8565b604082019050919050565b60006020820190508181036000830152614e5381614e17565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614eb660228361415c565b9150614ec182614e5a565b604082019050919050565b60006020820190508181036000830152614ee581614ea9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f4860258361415c565b9150614f5382614eec565b604082019050919050565b60006020820190508181036000830152614f7781614f3b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fda60238361415c565b9150614fe582614f7e565b604082019050919050565b6000602082019050818103600083015261500981614fcd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061506c60298361415c565b915061507782615010565b604082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f436f6f6c646f776e20697320656e61626c65642e2054727920616761696e206960008201527f6e206120666577206d696e757465732e00000000000000000000000000000000602082015250565b60006150fe60308361415c565b9150615109826150a2565b604082019050919050565b6000602082019050818103600083015261512d816150f1565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061519060288361415c565b915061519b82615134565b604082019050919050565b600060208201905081810360008301526151bf81615183565b9050919050565b60006151d18261426f565b91506151dc8361426f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615211576152106147da565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006152568261426f565b91506152618361426f565b9250826152715761527061521c565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506152ba81614243565b92915050565b6000602082840312156152d6576152d561420c565b5b60006152e4848285016152ab565b91505092915050565b6000819050919050565b600061531261530d615308846152ed565b614345565b61426f565b9050919050565b615322816152f7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61535d81614231565b82525050565b600061536f8383615354565b60208301905092915050565b6000602082019050919050565b600061539382615328565b61539d8185615333565b93506153a883615344565b8060005b838110156153d95781516153c08882615363565b97506153cb8361537b565b9250506001810190506153ac565b5085935050505092915050565b600060a0820190506153fb600083018861431b565b6154086020830187615319565b818103604083015261541a8186615388565b9050615429606083018561454d565b615436608083018461431b565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bdf410015f102950e5140ffaf51a3d712dfbe1196bbb5c8c7a42e5e868fcfccd64736f6c63430008090033

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

00000000000000000000000077254b41297f081d585c5bc88224aad3c167e943

-----Decoded View---------------
Arg [0] : opsTeamWalletAddress (address): 0x77254b41297f081d585C5bc88224aaD3C167e943

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000077254b41297f081d585c5bc88224aad3c167e943


Deployed Bytecode Sourcemap

287:18191:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2892:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3774:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5154:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1309:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3157:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18176:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3938:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17837:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18023:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6051:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3070:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4253:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5245:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5620:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1366:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11141:153;;;;;;;;;;;;;:::i;:::-;;7621:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17660:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11561:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5001:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17318:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1436:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3256:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1598:92:8;;;;;;;;;;;;;:::i;:::-;;1258:44:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1473:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;966:85:8;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2979::2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4474:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3457:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1518:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4860:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4746:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3627:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11459:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17415:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6306:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1839:189:8;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11300:153:2;;;;;;;;;;;;;:::i;:::-;;17546:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6818:467;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2892:81;2929:13;2961:5;2954:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2892:81;:::o;3774:158::-;3849:4;3865:39;3874:12;:10;:12::i;:::-;3888:7;3897:6;3865:8;:39::i;:::-;3921:4;3914:11;;3774:158;;;;:::o;5154:85::-;5196:7;5222:10;;5215:17;;5154:85;:::o;1309:51::-;;;:::o;3157:93::-;3210:7;3236;;3229:14;;3157:93;:::o;18176:300::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1670:13:2::1;18265:11;:38;;18257:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;18378:24;18421:6;18406:11;:22;;;;:::i;:::-;18378:50;;18453:16;18438:12;:31;;;;18247:229;18176:300:::0;:::o;3938:309::-;4036:4;4052:36;4062:6;4070:9;4081:6;4052:9;:36::i;:::-;4098:121;4107:6;4115:12;:10;:12::i;:::-;4129:89;4167:6;4129:89;;;;;;;;;;;;;;;;;:11;:19;4141:6;4129:19;;;;;;;;;;;;;;;:33;4149:12;:10;:12::i;:::-;4129:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4098:8;:121::i;:::-;4236:4;4229:11;;3938:309;;;;;:::o;17837:180::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17925:1:2::1;17914:7;:12;;:29;;;;;17941:2;17930:7;:13;;17914:29;17906:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;18003:7;17992:8;:18;;;;17837:180:::0;:::o;18023:147::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18143:20:2::1;18119:21;;:44;;;;;;;;;;;;;;;;;;18023:147:::0;:::o;6051:249::-;6117:7;6155;;6144;:18;;6136:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6219:19;6242:10;:8;:10::i;:::-;6219:33;;6269:24;6281:11;6269:7;:11;;:24;;;;:::i;:::-;6262:31;;;6051:249;;;:::o;3070:81::-;3111:5;3135:9;;;;;;;;;;;3128:16;;3070:81;:::o;4253:215::-;4341:4;4357:83;4366:12;:10;:12::i;:::-;4380:7;4389:50;4428:10;4389:11;:25;4401:12;:10;:12::i;:::-;4389:25;;;;;;;;;;;;;;;:34;4415:7;4389:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4357:8;:83::i;:::-;4457:4;4450:11;;4253:215;;;;:::o;5245:369::-;5296:14;5313:12;:10;:12::i;:::-;5296:29;;5344:11;:19;5356:6;5344:19;;;;;;;;;;;;;;;;;;;;;;;;;5343:20;5335:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;5423:15;5446:19;5457:7;5446:10;:19::i;:::-;5422:43;;;;;;5493:28;5513:7;5493;:15;5501:6;5493:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;5475:7;:15;5483:6;5475:15;;;;;;;;;;;;;;;:46;;;;5541:20;5553:7;5541;;:11;;:20;;;;:::i;:::-;5531:7;:30;;;;5584:23;5599:7;5584:10;;:14;;:23;;;;:::i;:::-;5571:10;:36;;;;5286:328;;5245:369;:::o;5620:425::-;5710:7;5748;;5737;:18;;5729:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5806:17;5801:238;;5840:15;5863:19;5874:7;5863:10;:19::i;:::-;5839:43;;;;;;5903:7;5896:14;;;;;5801:238;5943:23;5973:19;5984:7;5973:10;:19::i;:::-;5941:51;;;;;;6013:15;6006:22;;;5620:425;;;;;:::o;1366:38::-;;;:::o;11141:153::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11194:23:2::1;11220:24;11238:4;11220:9;:24::i;:::-;11194:50;;11254:33;11271:15;11254:16;:33::i;:::-;11184:110;11141:153::o:0;7621:121::-;7685:4;7708:18;:27;7727:7;7708:27;;;;;;;;;;;;;;;;;;;;;;;;;7701:34;;7621:121;;;:::o;17660:171::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17745:1:2::1;17735:6;:11;;:26;;;;;17760:1;17750:6;:11;;17735:26;17727:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17818:6;17808:7;:16;;;;17660:171:::0;:::o;11561:105::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11652:7:2::1;11634:15;;:25;;;;;;;;;;;;;;;;;;11561:105:::0;:::o;5001:146::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5120:20:2::1;5098:19;;:42;;;;;;;;;;;;;;;;;;5001:146:::0;:::o;17318:91::-;17364:7;17390:12;;17383:19;;17318:91;:::o;1436:30::-;;;;;;;;;;;;;:::o;3256:195::-;3322:7;3345:11;:20;3357:7;3345:20;;;;;;;;;;;;;;;;;;;;;;;;;3341:49;;;3374:7;:16;3382:7;3374:16;;;;;;;;;;;;;;;;3367:23;;;;3341:49;3407:37;3427:7;:16;3435:7;3427:16;;;;;;;;;;;;;;;;3407:19;:37::i;:::-;3400:44;;3256:195;;;;:::o;1598:92:8:-;1189:12;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:21:::1;1680:1;1662:9;:21::i;:::-;1598:92::o:0;1258:44:2:-;;;;;;;;;;;;;:::o;1473:39::-;;;;;;;;;;;;;:::o;966:85:8:-;1012:7;1038:6;;;;;;;;;;;1031:13;;966:85;:::o;2979::2:-;3018:13;3050:7;3043:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2979:85;:::o;4474:266::-;4567:4;4583:129;4592:12;:10;:12::i;:::-;4606:7;4615:96;4654:15;4615:96;;;;;;;;;;;;;;;;;:11;:25;4627:12;:10;:12::i;:::-;4615:25;;;;;;;;;;;;;;;:34;4641:7;4615:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4583:8;:129::i;:::-;4729:4;4722:11;;4474:266;;;;:::o;3457:164::-;3535:4;3551:42;3561:12;:10;:12::i;:::-;3575:9;3586:6;3551:9;:42::i;:::-;3610:4;3603:11;;3457:164;;;;:::o;1518:36::-;;;;;;;;;;;;;:::o;4860:135::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4980:8:2::1;4950:18;:27;4969:7;4950:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;4860:135:::0;;:::o;4746:108::-;4804:4;4827:11;:20;4839:7;4827:20;;;;;;;;;;;;;;;;;;;;;;;;;4820:27;;4746:108;;;:::o;3627:141::-;3708:7;3734:11;:18;3746:5;3734:18;;;;;;;;;;;;;;;:27;3753:7;3734:27;;;;;;;;;;;;;;;;3727:34;;3627:141;;;;:::o;11459:96::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11541:7:2::1;11527:11;;:21;;;;;;;;;;;;;;;;;;11459:96:::0;:::o;17415:125::-;17478:7;17504:29;;17497:36;;17415:125;:::o;6306:506::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6397:42:2::1;6386:53;;:7;:53;;;;6378:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6497:11;:20;6509:7;6497:20;;;;;;;;;;;;;;;;;;;;;;;;;6496:21;6488:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6586:4;6567:9;:16;;;;:23;6559:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6652:1;6633:7;:16;6641:7;6633:16;;;;;;;;;;;;;;;;:20;6630:106;;;6688:37;6708:7;:16;6716:7;6708:16;;;;;;;;;;;;;;;;6688:19;:37::i;:::-;6669:7;:16;6677:7;6669:16;;;;;;;;;;;;;;;:56;;;;6630:106;6768:4;6745:11;:20;6757:7;6745:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;6782:9;6797:7;6782:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6306:506:::0;:::o;1839:189:8:-;1189:12;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1947:1:::1;1927:22;;:8;:22;;;;1919:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2002:19;2012:8;2002:9;:19::i;:::-;1839:189:::0;:::o;11300:153:2:-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11353:26:2::1;11382:21;11353:50;;11413:33;11427:18;11413:13;:33::i;:::-;11343:110;11300:153::o:0;17546:108::-;17592:15;17626:21;17619:28;;17546:108;:::o;6818:467::-;1189:12:8;:10;:12::i;:::-;1178:23;;:7;:5;:7::i;:::-;:23;;;1170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6898:11:2::1;:20;6910:7;6898:20;;;;;;;;;;;;;;;;;;;;;;;;;6890:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6965:9;6960:319;6984:9;:16;;;;6980:1;:20;6960:319;;;7041:7;7025:23;;:9;7035:1;7025:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;7021:248;;;7083:9;7112:1;7093:9;:16;;;;:20;;;;:::i;:::-;7083:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7068:9;7078:1;7068:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;7151:1;7132:7;:16;7140:7;7132:16;;;;;;;;;;;;;;;:20;;;;7193:5;7170:11;:20;7182:7;7170:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;7216:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;7249:5;;7021:248;7002:3;;;;;:::i;:::-;;;;6960:319;;;;6818:467:::0;:::o;586:96:1:-;639:7;665:10;658:17;;586:96;:::o;7748:331:2:-;7857:1;7840:19;;:5;:19;;;;7832:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7937:1;7918:21;;:7;:21;;;;7910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8019:6;7989:11;:18;8001:5;7989:18;;;;;;;;;;;;;;;:27;8008:7;7989:27;;;;;;;;;;;;;;;:36;;;;8056:7;8040:32;;8049:5;8040:32;;;8065:6;8040:32;;;;;;:::i;:::-;;;;;;;;7748:331;;;:::o;8085:2212::-;8199:1;8181:20;;:6;:20;;;;8173:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8282:1;8261:23;;:9;:23;;;;8253:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8351:1;8342:6;:10;8334:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8417:15;;;;;;;;;;;8416:16;:97;;;;8456:15;8437:8;:16;8446:6;8437:16;;;;;;;;;;;;;;;;:34;:75;;;;;8497:15;8475:8;:19;8484:9;8475:19;;;;;;;;;;;;;;;;:37;8437:75;8416:97;8408:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;8590:7;:5;:7::i;:::-;8580:17;;:6;:17;;;;:41;;;;;8614:7;:5;:7::i;:::-;8601:20;;:9;:20;;;;8580:41;:64;;;;;8625:19;;;;;;;;;;;8580:64;8577:157;;;8677:12;;8667:6;:22;;8659:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8577:157;8994:28;9025:24;9043:4;9025:9;:24::i;:::-;8994:55;;9087:12;;9063:20;:36;9060:109;;9146:12;;9123:35;;9060:109;9179:24;9230:29;;9206:20;:53;;9179:80;;9274:6;;;;;;;;;;;9273:7;:22;;;;;9284:11;;;;;;;;;;;9273:22;:45;;;;;9299:19;9273:45;:72;;;;;9332:13;9322:23;;:6;:23;;;;9273:72;9269:382;;;9428:38;9445:20;9428:16;:38::i;:::-;9481:26;9510:21;9481:50;;9569:1;9548:18;:22;9545:96;;;9590:36;9604:21;9590:13;:36::i;:::-;9545:96;9347:304;9269:382;9721:12;9736:4;9721:19;;9837:18;:26;9856:6;9837:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;9867:18;:29;9886:9;9867:29;;;;;;;;;;;;;;;;;;;;;;;;;9837:59;9834:103;;;9921:5;9911:15;;9834:103;10004:47;10019:6;10026:9;10036:6;10043:7;10004:14;:47::i;:::-;10067:18;:26;10086:6;10067:26;;;;;;;;;;;;;;;;;;;;;;;;;10062:107;;10147:10;10128:15;:30;;;;:::i;:::-;10109:8;:16;10118:6;10109:16;;;;;;;;;;;;;;;:49;;;;10062:107;10183:18;:29;10202:9;10183:29;;;;;;;;;;;;;;;;;;;;;;;;;10178:113;;10269:10;10250:15;:30;;;;:::i;:::-;10228:8;:19;10237:9;10228:19;;;;;;;;;;;;;;;:52;;;;10178:113;8163:2134;;;8085:2212;;;:::o;4876:231:9:-;4992:7;5048:1;5043;:6;;5051:12;5035:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5089:1;5085;:5;5078:12;;4876:231;;;;;:::o;16413:160:2:-;16454:7;16474:15;16491;16510:19;:17;:19::i;:::-;16473:56;;;;16546:20;16558:7;16546;:11;;:20;;;;:::i;:::-;16539:27;;;;16413:160;:::o;3767:96:9:-;3825:7;3855:1;3851;:5;;;;:::i;:::-;3844:12;;3767:96;;;;:::o;2672:::-;2730:7;2760:1;2756;:5;;;;:::i;:::-;2749:12;;2672:96;;;;:::o;15172:453:2:-;15231:7;15240;15249;15258;15267;15287:23;15312:12;15326:16;15346:39;15358:7;15367;;15376:8;;15346:11;:39::i;:::-;15286:99;;;;;;15395:19;15418:10;:8;:10::i;:::-;15395:33;;15439:15;15456:23;15481:12;15497:49;15509:7;15518:4;15524:11;15537:8;15497:11;:49::i;:::-;15438:108;;;;;;15564:7;15573:15;15590:4;15596:15;15613:4;15556:62;;;;;;;;;;;;;;;;;15172:453;;;;;;;:::o;3039:96:9:-;3097:7;3127:1;3123;:5;;;;:::i;:::-;3116:12;;3039:96;;;;:::o;10303:584:2:-;2082:4;2073:6;;:13;;;;;;;;;;;;;;;;;;10438:21:::1;10476:1;10462:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10438:40;;10506:4;10488;10493:1;10488:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10531:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10521:4;10526:1;10521:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10564:62;10581:4;10596:15;10614:11;10564:8;:62::i;:::-;10662:15;:66;;;10742:11;10767:1;10810:4;10836;10855:15;10662:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10369:518;2116:5:::0;2107:6;;:14;;;;;;;;;;;;;;;;;;10303:584;:::o;2034:169:8:-;2089:16;2108:6;;;;;;;;;;;2089:25;;2133:8;2124:6;;:17;;;;;;;;;;;;;;;;;;2187:8;2156:40;;2177:8;2156:40;;;;;;;;;;;;2079:124;2034:169;:::o;10893:102:2:-;10950:21;;;;;;;;;;;:30;;:38;10981:6;10950:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10893:102;:::o;11672:951::-;11783:7;11779:39;;11804:14;:12;:14::i;:::-;11779:39;11833:11;:19;11845:6;11833:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;11857:11;:22;11869:9;11857:22;;;;;;;;;;;;;;;;;;;;;;;;;11856:23;11833:46;11829:587;;;11895:48;11917:6;11925:9;11936:6;11895:21;:48::i;:::-;11829:587;;;11965:11;:19;11977:6;11965:19;;;;;;;;;;;;;;;;;;;;;;;;;11964:20;:46;;;;;11988:11;:22;12000:9;11988:22;;;;;;;;;;;;;;;;;;;;;;;;;11964:46;11960:456;;;12026:46;12046:6;12054:9;12065:6;12026:19;:46::i;:::-;11960:456;;;12094:11;:19;12106:6;12094:19;;;;;;;;;;;;;;;;;;;;;;;;;12093:20;:47;;;;;12118:11;:22;12130:9;12118:22;;;;;;;;;;;;;;;;;;;;;;;;;12117:23;12093:47;12089:327;;;12156:44;12174:6;12182:9;12193:6;12156:17;:44::i;:::-;12089:327;;;12221:11;:19;12233:6;12221:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;12244:11;:22;12256:9;12244:22;;;;;;;;;;;;;;;;;;;;;;;;;12221:45;12217:199;;;12282:48;12304:6;12312:9;12323:6;12282:21;:48::i;:::-;12217:199;;;12361:44;12379:6;12387:9;12398:6;12361:17;:44::i;:::-;12217:199;12089:327;11960:456;11829:587;12425:16;12444:29;12469:3;12444:20;12455:8;;12444:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;12425:48;;12483:16;12502:24;12515:10;:8;:10::i;:::-;12502:8;:12;;:24;;;;:::i;:::-;12483:43;;12536:29;12546:8;12556;12536:9;:29::i;:::-;12580:7;12576:40;;12601:15;:13;:15::i;:::-;12576:40;11769:854;;11672:951;;;;:::o;16579:545::-;16629:7;16638;16657:15;16675:7;;16657:25;;16692:15;16710:7;;16692:25;;16732:9;16727:285;16751:9;:16;;;;16747:1;:20;16727:285;;;16816:7;16792;:21;16800:9;16810:1;16800:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16792:21;;;;;;;;;;;;;;;;:31;:66;;;;16851:7;16827;:21;16835:9;16845:1;16835:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16827:21;;;;;;;;;;;;;;;;:31;16792:66;16788:97;;;16868:7;;16877;;16860:25;;;;;;;;;16788:97;16909:34;16921:7;:21;16929:9;16939:1;16929:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16921:21;;;;;;;;;;;;;;;;16909:7;:11;;:34;;;;:::i;:::-;16899:44;;16967:34;16979:7;:21;16987:9;16997:1;16987:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16979:21;;;;;;;;;;;;;;;;16967:7;:11;;:34;;;;:::i;:::-;16957:44;;16769:3;;;;;:::i;:::-;;;;16727:285;;;;17035:20;17047:7;;17035;;:11;;:20;;;;:::i;:::-;17025:7;:30;17021:61;;;17065:7;;17074;;17057:25;;;;;;;;17021:61;17100:7;17109;17092:25;;;;;;16579:545;;;:::o;15631:355::-;15724:7;15733;15742;15761:12;15776:28;15800:3;15776:19;15788:6;15776:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15761:43;;15814:16;15833:29;15858:3;15833:20;15845:7;15833;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15814:48;;15872:23;15898:31;15920:8;15898:17;15910:4;15898:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;15872:57;;15947:15;15964:4;15970:8;15939:40;;;;;;;;;15631:355;;;;;;;:::o;15992:415::-;16105:7;16114;16123;16142:15;16160:24;16172:11;16160:7;:11;;:24;;;;:::i;:::-;16142:42;;16194:12;16209:21;16218:11;16209:4;:8;;:21;;;;:::i;:::-;16194:36;;16240:16;16259:25;16272:11;16259:8;:12;;:25;;;;:::i;:::-;16240:44;;16294:23;16320:31;16342:8;16320:17;16332:4;16320:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;16294:57;;16369:7;16378:15;16395:4;16361:39;;;;;;;;;;15992:415;;;;;;;;:::o;7291:206::-;7347:1;7336:7;;:12;:29;;;;;7364:1;7352:8;;:13;7336:29;7333:41;;;7367:7;;7333:41;7402:7;;7384:15;:25;;;;7438:8;;7419:16;:27;;;;7467:1;7457:7;:11;;;;7489:1;7478:8;:12;;;;7291:206;:::o;13591:499::-;13693:15;13710:23;13735:12;13749:23;13774:12;13790:19;13801:7;13790:10;:19::i;:::-;13692:117;;;;;;;;;;13837:28;13857:7;13837;:15;13845:6;13837:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13819:7;:15;13827:6;13819:15;;;;;;;;;;;;;;;:46;;;;13893:28;13913:7;13893;:15;13901:6;13893:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13875:7;:15;13883:6;13875:15;;;;;;;;;;;;;;;:46;;;;13952:39;13975:15;13952:7;:18;13960:9;13952:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13931:7;:18;13939:9;13931:18;;;;;;;;;;;;;;;:60;;;;14001:23;14013:4;14019;14001:11;:23::i;:::-;14056:9;14039:44;;14048:6;14039:44;;;14067:15;14039:44;;;;;;:::i;:::-;;;;;;;;13682:408;;;;;13591:499;;;:::o;13074:511::-;13174:15;13191:23;13216:12;13230:23;13255:12;13271:19;13282:7;13271:10;:19::i;:::-;13173:117;;;;;;;;;;13318:28;13338:7;13318;:15;13326:6;13318:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13300:7;:15;13308:6;13300:15;;;;;;;;;;;;;;;:46;;;;13377:39;13400:15;13377:7;:18;13385:9;13377:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13356:7;:18;13364:9;13356:18;;;;;;;;;;;;;;;:60;;;;13447:39;13470:15;13447:7;:18;13455:9;13447:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13426:7;:18;13434:9;13426:18;;;;;;;;;;;;;;;:60;;;;13496:23;13508:4;13514;13496:11;:23::i;:::-;13551:9;13534:44;;13543:6;13534:44;;;13562:15;13534:44;;;;;;:::i;:::-;;;;;;;;13163:422;;;;;13074:511;;;:::o;12629:439::-;12727:15;12744:23;12769:12;12783:23;12808:12;12824:19;12835:7;12824:10;:19::i;:::-;12726:117;;;;;;;;;;12871:28;12891:7;12871;:15;12879:6;12871:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12853:7;:15;12861:6;12853:15;;;;;;;;;;;;;;;:46;;;;12930:39;12953:15;12930:7;:18;12938:9;12930:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12909:7;:18;12917:9;12909:18;;;;;;;;;;;;;;;:60;;;;12979:23;12991:4;12997;12979:11;:23::i;:::-;13034:9;13017:44;;13026:6;13017:44;;;13045:15;13017:44;;;;;;:::i;:::-;;;;;;;;12716:352;;;;;12629:439;;;:::o;14096:569::-;14198:15;14215:23;14240:12;14254:23;14279:12;14295:19;14306:7;14295:10;:19::i;:::-;14197:117;;;;;;;;;;14342:28;14362:7;14342;:15;14350:6;14342:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14324:7;:15;14332:6;14324:15;;;;;;;;;;;;;;;:46;;;;14398:28;14418:7;14398;:15;14406:6;14398:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14380:7;:15;14388:6;14380:15;;;;;;;;;;;;;;;:46;;;;14457:39;14480:15;14457:7;:18;14465:9;14457:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14436:7;:18;14444:9;14436:18;;;;;;;;;;;;;;;:60;;;;14527:39;14550:15;14527:7;:18;14535:9;14527:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14506:7;:18;14514:9;14506:18;;;;;;;;;;;;;;;:60;;;;14576:23;14588:4;14594;14576:11;:23::i;:::-;14631:9;14614:44;;14623:6;14614:44;;;14642:15;14614:44;;;;;;:::i;:::-;;;;;;;;14187:478;;;;;14096:569;;;:::o;3382:96:9:-;3440:7;3470:1;3466;:5;;;;:::i;:::-;3459:12;;3382:96;;;;:::o;14671:255:2:-;14769:36;14796:8;14769:7;:22;14785:4;14769:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;14744:7;:22;14760:4;14744:22;;;;;;;;;;;;;;;:61;;;;14818:11;:26;14838:4;14818:26;;;;;;;;;;;;;;;;;;;;;;;;;14815:104;;;14883:36;14910:8;14883:7;:22;14899:4;14883:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;14858:7;:22;14874:4;14858:22;;;;;;;;;;;;;;;:61;;;;14815:104;14671:255;;:::o;7503:112::-;7556:15;;7546:7;:25;;;;7592:16;;7581:8;:27;;;;7503:112::o;14932:144::-;15009:17;15021:4;15009:7;;:11;;:17;;;;:::i;:::-;14999:7;:27;;;;15049:20;15064:4;15049:10;;:14;;:20;;;;:::i;:::-;15036:10;:33;;;;14932:144;;:::o;7:99:10:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:153::-;4269:9;4302:37;4333:5;4302:37;:::i;:::-;4289:50;;4192:153;;;:::o;4351:185::-;4465:64;4523:5;4465:64;:::i;:::-;4460:3;4453:77;4351:185;;:::o;4542:276::-;4662:4;4700:2;4689:9;4685:18;4677:26;;4713:98;4808:1;4797:9;4793:17;4784:6;4713:98;:::i;:::-;4542:276;;;;:::o;4824:329::-;4883:6;4932:2;4920:9;4911:7;4907:23;4903:32;4900:119;;;4938:79;;:::i;:::-;4900:119;5058:1;5083:53;5128:7;5119:6;5108:9;5104:22;5083:53;:::i;:::-;5073:63;;5029:117;4824:329;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:104::-;5829:7;5858:24;5876:5;5858:24;:::i;:::-;5847:35;;5784:104;;;:::o;5894:138::-;5975:32;6001:5;5975:32;:::i;:::-;5968:5;5965:43;5955:71;;6022:1;6019;6012:12;5955:71;5894:138;:::o;6038:155::-;6092:5;6130:6;6117:20;6108:29;;6146:41;6181:5;6146:41;:::i;:::-;6038:155;;;;:::o;6199:345::-;6266:6;6315:2;6303:9;6294:7;6290:23;6286:32;6283:119;;;6321:79;;:::i;:::-;6283:119;6441:1;6466:61;6519:7;6510:6;6499:9;6495:22;6466:61;:::i;:::-;6456:71;;6412:125;6199:345;;;;:::o;6550:86::-;6585:7;6625:4;6618:5;6614:16;6603:27;;6550:86;;;:::o;6642:112::-;6725:22;6741:5;6725:22;:::i;:::-;6720:3;6713:35;6642:112;;:::o;6760:214::-;6849:4;6887:2;6876:9;6872:18;6864:26;;6900:67;6964:1;6953:9;6949:17;6940:6;6900:67;:::i;:::-;6760:214;;;;:::o;6980:116::-;7050:21;7065:5;7050:21;:::i;:::-;7043:5;7040:32;7030:60;;7086:1;7083;7076:12;7030:60;6980:116;:::o;7102:133::-;7145:5;7183:6;7170:20;7161:29;;7199:30;7223:5;7199:30;:::i;:::-;7102:133;;;;:::o;7241:468::-;7306:6;7314;7363:2;7351:9;7342:7;7338:23;7334:32;7331:119;;;7369:79;;:::i;:::-;7331:119;7489:1;7514:53;7559:7;7550:6;7539:9;7535:22;7514:53;:::i;:::-;7504:63;;7460:117;7616:2;7642:50;7684:7;7675:6;7664:9;7660:22;7642:50;:::i;:::-;7632:60;;7587:115;7241:468;;;;;:::o;7715:118::-;7802:24;7820:5;7802:24;:::i;:::-;7797:3;7790:37;7715:118;;:::o;7839:222::-;7932:4;7970:2;7959:9;7955:18;7947:26;;7983:71;8051:1;8040:9;8036:17;8027:6;7983:71;:::i;:::-;7839:222;;;;:::o;8067:329::-;8126:6;8175:2;8163:9;8154:7;8150:23;8146:32;8143:119;;;8181:79;;:::i;:::-;8143:119;8301:1;8326:53;8371:7;8362:6;8351:9;8347:22;8326:53;:::i;:::-;8316:63;;8272:117;8067:329;;;;:::o;8402:323::-;8458:6;8507:2;8495:9;8486:7;8482:23;8478:32;8475:119;;;8513:79;;:::i;:::-;8475:119;8633:1;8658:50;8700:7;8691:6;8680:9;8676:22;8658:50;:::i;:::-;8648:60;;8604:114;8402:323;;;;:::o;8731:142::-;8834:32;8860:5;8834:32;:::i;:::-;8829:3;8822:45;8731:142;;:::o;8879:254::-;8988:4;9026:2;9015:9;9011:18;9003:26;;9039:87;9123:1;9112:9;9108:17;9099:6;9039:87;:::i;:::-;8879:254;;;;:::o;9139:468::-;9204:6;9212;9261:2;9249:9;9240:7;9236:23;9232:32;9229:119;;;9267:79;;:::i;:::-;9229:119;9387:1;9412:53;9457:7;9448:6;9437:9;9433:22;9412:53;:::i;:::-;9402:63;;9358:117;9514:2;9540:50;9582:7;9573:6;9562:9;9558:22;9540:50;:::i;:::-;9530:60;;9485:115;9139:468;;;;;:::o;9613:474::-;9681:6;9689;9738:2;9726:9;9717:7;9713:23;9709:32;9706:119;;;9744:79;;:::i;:::-;9706:119;9864:1;9889:53;9934:7;9925:6;9914:9;9910:22;9889:53;:::i;:::-;9879:63;;9835:117;9991:2;10017:53;10062:7;10053:6;10042:9;10038:22;10017:53;:::i;:::-;10007:63;;9962:118;9613:474;;;;;:::o;10093:180::-;10141:77;10138:1;10131:88;10238:4;10235:1;10228:15;10262:4;10259:1;10252:15;10279:320;10323:6;10360:1;10354:4;10350:12;10340:22;;10407:1;10401:4;10397:12;10428:18;10418:81;;10484:4;10476:6;10472:17;10462:27;;10418:81;10546:2;10538:6;10535:14;10515:18;10512:38;10509:84;;;10565:18;;:::i;:::-;10509:84;10330:269;10279:320;;;:::o;10605:182::-;10745:34;10741:1;10733:6;10729:14;10722:58;10605:182;:::o;10793:366::-;10935:3;10956:67;11020:2;11015:3;10956:67;:::i;:::-;10949:74;;11032:93;11121:3;11032:93;:::i;:::-;11150:2;11145:3;11141:12;11134:19;;10793:366;;;:::o;11165:419::-;11331:4;11369:2;11358:9;11354:18;11346:26;;11418:9;11412:4;11408:20;11404:1;11393:9;11389:17;11382:47;11446:131;11572:4;11446:131;:::i;:::-;11438:139;;11165:419;;;:::o;11590:245::-;11730:34;11726:1;11718:6;11714:14;11707:58;11799:28;11794:2;11786:6;11782:15;11775:53;11590:245;:::o;11841:366::-;11983:3;12004:67;12068:2;12063:3;12004:67;:::i;:::-;11997:74;;12080:93;12169:3;12080:93;:::i;:::-;12198:2;12193:3;12189:12;12182:19;;11841:366;;;:::o;12213:419::-;12379:4;12417:2;12406:9;12402:18;12394:26;;12466:9;12460:4;12456:20;12452:1;12441:9;12437:17;12430:47;12494:131;12620:4;12494:131;:::i;:::-;12486:139;;12213:419;;;:::o;12638:180::-;12686:77;12683:1;12676:88;12783:4;12780:1;12773:15;12807:4;12804:1;12797:15;12824:348;12864:7;12887:20;12905:1;12887:20;:::i;:::-;12882:25;;12921:20;12939:1;12921:20;:::i;:::-;12916:25;;13109:1;13041:66;13037:74;13034:1;13031:81;13026:1;13019:9;13012:17;13008:105;13005:131;;;13116:18;;:::i;:::-;13005:131;13164:1;13161;13157:9;13146:20;;12824:348;;;;:::o;13178:221::-;13318:34;13314:1;13306:6;13302:14;13295:58;13387:4;13382:2;13374:6;13370:15;13363:29;13178:221;:::o;13405:366::-;13547:3;13568:67;13632:2;13627:3;13568:67;:::i;:::-;13561:74;;13644:93;13733:3;13644:93;:::i;:::-;13762:2;13757:3;13753:12;13746:19;;13405:366;;;:::o;13777:419::-;13943:4;13981:2;13970:9;13966:18;13958:26;;14030:9;14024:4;14020:20;14016:1;14005:9;14001:17;13994:47;14058:131;14184:4;14058:131;:::i;:::-;14050:139;;13777:419;;;:::o;14202:229::-;14342:34;14338:1;14330:6;14326:14;14319:58;14411:12;14406:2;14398:6;14394:15;14387:37;14202:229;:::o;14437:366::-;14579:3;14600:67;14664:2;14659:3;14600:67;:::i;:::-;14593:74;;14676:93;14765:3;14676:93;:::i;:::-;14794:2;14789:3;14785:12;14778:19;;14437:366;;;:::o;14809:419::-;14975:4;15013:2;15002:9;14998:18;14990:26;;15062:9;15056:4;15052:20;15048:1;15037:9;15033:17;15026:47;15090:131;15216:4;15090:131;:::i;:::-;15082:139;;14809:419;;;:::o;15234:231::-;15374:34;15370:1;15362:6;15358:14;15351:58;15443:14;15438:2;15430:6;15426:15;15419:39;15234:231;:::o;15471:366::-;15613:3;15634:67;15698:2;15693:3;15634:67;:::i;:::-;15627:74;;15710:93;15799:3;15710:93;:::i;:::-;15828:2;15823:3;15819:12;15812:19;;15471:366;;;:::o;15843:419::-;16009:4;16047:2;16036:9;16032:18;16024:26;;16096:9;16090:4;16086:20;16082:1;16071:9;16067:17;16060:47;16124:131;16250:4;16124:131;:::i;:::-;16116:139;;15843:419;;;:::o;16268:181::-;16408:33;16404:1;16396:6;16392:14;16385:57;16268:181;:::o;16455:366::-;16597:3;16618:67;16682:2;16677:3;16618:67;:::i;:::-;16611:74;;16694:93;16783:3;16694:93;:::i;:::-;16812:2;16807:3;16803:12;16796:19;;16455:366;;;:::o;16827:419::-;16993:4;17031:2;17020:9;17016:18;17008:26;;17080:9;17074:4;17070:20;17066:1;17055:9;17051:17;17044:47;17108:131;17234:4;17108:131;:::i;:::-;17100:139;;16827:419;;;:::o;17252:182::-;17392:34;17388:1;17380:6;17376:14;17369:58;17252:182;:::o;17440:366::-;17582:3;17603:67;17667:2;17662:3;17603:67;:::i;:::-;17596:74;;17679:93;17768:3;17679:93;:::i;:::-;17797:2;17792:3;17788:12;17781:19;;17440:366;;;:::o;17812:419::-;17978:4;18016:2;18005:9;18001:18;17993:26;;18065:9;18059:4;18055:20;18051:1;18040:9;18036:17;18029:47;18093:131;18219:4;18093:131;:::i;:::-;18085:139;;17812:419;;;:::o;18237:221::-;18377:34;18373:1;18365:6;18361:14;18354:58;18446:4;18441:2;18433:6;18429:15;18422:29;18237:221;:::o;18464:366::-;18606:3;18627:67;18691:2;18686:3;18627:67;:::i;:::-;18620:74;;18703:93;18792:3;18703:93;:::i;:::-;18821:2;18816:3;18812:12;18805:19;;18464:366;;;:::o;18836:419::-;19002:4;19040:2;19029:9;19025:18;19017:26;;19089:9;19083:4;19079:20;19075:1;19064:9;19060:17;19053:47;19117:131;19243:4;19117:131;:::i;:::-;19109:139;;18836:419;;;:::o;19261:177::-;19401:29;19397:1;19389:6;19385:14;19378:53;19261:177;:::o;19444:366::-;19586:3;19607:67;19671:2;19666:3;19607:67;:::i;:::-;19600:74;;19683:93;19772:3;19683:93;:::i;:::-;19801:2;19796:3;19792:12;19785:19;;19444:366;;;:::o;19816:419::-;19982:4;20020:2;20009:9;20005:18;19997:26;;20069:9;20063:4;20059:20;20055:1;20044:9;20040:17;20033:47;20097:131;20223:4;20097:131;:::i;:::-;20089:139;;19816:419;;;:::o;20241:175::-;20381:27;20377:1;20369:6;20365:14;20358:51;20241:175;:::o;20422:366::-;20564:3;20585:67;20649:2;20644:3;20585:67;:::i;:::-;20578:74;;20661:93;20750:3;20661:93;:::i;:::-;20779:2;20774:3;20770:12;20763:19;;20422:366;;;:::o;20794:419::-;20960:4;20998:2;20987:9;20983:18;20975:26;;21047:9;21041:4;21037:20;21033:1;21022:9;21018:17;21011:47;21075:131;21201:4;21075:131;:::i;:::-;21067:139;;20794:419;;;:::o;21219:225::-;21359:34;21355:1;21347:6;21343:14;21336:58;21428:8;21423:2;21415:6;21411:15;21404:33;21219:225;:::o;21450:366::-;21592:3;21613:67;21677:2;21672:3;21613:67;:::i;:::-;21606:74;;21689:93;21778:3;21689:93;:::i;:::-;21807:2;21802:3;21798:12;21791:19;;21450:366;;;:::o;21822:419::-;21988:4;22026:2;22015:9;22011:18;22003:26;;22075:9;22069:4;22065:20;22061:1;22050:9;22046:17;22039:47;22103:131;22229:4;22103:131;:::i;:::-;22095:139;;21822:419;;;:::o;22247:180::-;22295:77;22292:1;22285:88;22392:4;22389:1;22382:15;22416:4;22413:1;22406:15;22433:191;22473:4;22493:20;22511:1;22493:20;:::i;:::-;22488:25;;22527:20;22545:1;22527:20;:::i;:::-;22522:25;;22566:1;22563;22560:8;22557:34;;;22571:18;;:::i;:::-;22557:34;22616:1;22613;22609:9;22601:17;;22433:191;;;;:::o;22630:180::-;22678:77;22675:1;22668:88;22775:4;22772:1;22765:15;22799:4;22796:1;22789:15;22816:233;22855:3;22878:24;22896:5;22878:24;:::i;:::-;22869:33;;22924:66;22917:5;22914:77;22911:103;;;22994:18;;:::i;:::-;22911:103;23041:1;23034:5;23030:13;23023:20;;22816:233;;;:::o;23055:223::-;23195:34;23191:1;23183:6;23179:14;23172:58;23264:6;23259:2;23251:6;23247:15;23240:31;23055:223;:::o;23284:366::-;23426:3;23447:67;23511:2;23506:3;23447:67;:::i;:::-;23440:74;;23523:93;23612:3;23523:93;:::i;:::-;23641:2;23636:3;23632:12;23625:19;;23284:366;;;:::o;23656:419::-;23822:4;23860:2;23849:9;23845:18;23837:26;;23909:9;23903:4;23899:20;23895:1;23884:9;23880:17;23873:47;23937:131;24063:4;23937:131;:::i;:::-;23929:139;;23656:419;;;:::o;24081:221::-;24221:34;24217:1;24209:6;24205:14;24198:58;24290:4;24285:2;24277:6;24273:15;24266:29;24081:221;:::o;24308:366::-;24450:3;24471:67;24535:2;24530:3;24471:67;:::i;:::-;24464:74;;24547:93;24636:3;24547:93;:::i;:::-;24665:2;24660:3;24656:12;24649:19;;24308:366;;;:::o;24680:419::-;24846:4;24884:2;24873:9;24869:18;24861:26;;24933:9;24927:4;24923:20;24919:1;24908:9;24904:17;24897:47;24961:131;25087:4;24961:131;:::i;:::-;24953:139;;24680:419;;;:::o;25105:224::-;25245:34;25241:1;25233:6;25229:14;25222:58;25314:7;25309:2;25301:6;25297:15;25290:32;25105:224;:::o;25335:366::-;25477:3;25498:67;25562:2;25557:3;25498:67;:::i;:::-;25491:74;;25574:93;25663:3;25574:93;:::i;:::-;25692:2;25687:3;25683:12;25676:19;;25335:366;;;:::o;25707:419::-;25873:4;25911:2;25900:9;25896:18;25888:26;;25960:9;25954:4;25950:20;25946:1;25935:9;25931:17;25924:47;25988:131;26114:4;25988:131;:::i;:::-;25980:139;;25707:419;;;:::o;26132:222::-;26272:34;26268:1;26260:6;26256:14;26249:58;26341:5;26336:2;26328:6;26324:15;26317:30;26132:222;:::o;26360:366::-;26502:3;26523:67;26587:2;26582:3;26523:67;:::i;:::-;26516:74;;26599:93;26688:3;26599:93;:::i;:::-;26717:2;26712:3;26708:12;26701:19;;26360:366;;;:::o;26732:419::-;26898:4;26936:2;26925:9;26921:18;26913:26;;26985:9;26979:4;26975:20;26971:1;26960:9;26956:17;26949:47;27013:131;27139:4;27013:131;:::i;:::-;27005:139;;26732:419;;;:::o;27157:228::-;27297:34;27293:1;27285:6;27281:14;27274:58;27366:11;27361:2;27353:6;27349:15;27342:36;27157:228;:::o;27391:366::-;27533:3;27554:67;27618:2;27613:3;27554:67;:::i;:::-;27547:74;;27630:93;27719:3;27630:93;:::i;:::-;27748:2;27743:3;27739:12;27732:19;;27391:366;;;:::o;27763:419::-;27929:4;27967:2;27956:9;27952:18;27944:26;;28016:9;28010:4;28006:20;28002:1;27991:9;27987:17;27980:47;28044:131;28170:4;28044:131;:::i;:::-;28036:139;;27763:419;;;:::o;28188:235::-;28328:34;28324:1;28316:6;28312:14;28305:58;28397:18;28392:2;28384:6;28380:15;28373:43;28188:235;:::o;28429:366::-;28571:3;28592:67;28656:2;28651:3;28592:67;:::i;:::-;28585:74;;28668:93;28757:3;28668:93;:::i;:::-;28786:2;28781:3;28777:12;28770:19;;28429:366;;;:::o;28801:419::-;28967:4;29005:2;28994:9;28990:18;28982:26;;29054:9;29048:4;29044:20;29040:1;29029:9;29025:17;29018:47;29082:131;29208:4;29082:131;:::i;:::-;29074:139;;28801:419;;;:::o;29226:227::-;29366:34;29362:1;29354:6;29350:14;29343:58;29435:10;29430:2;29422:6;29418:15;29411:35;29226:227;:::o;29459:366::-;29601:3;29622:67;29686:2;29681:3;29622:67;:::i;:::-;29615:74;;29698:93;29787:3;29698:93;:::i;:::-;29816:2;29811:3;29807:12;29800:19;;29459:366;;;:::o;29831:419::-;29997:4;30035:2;30024:9;30020:18;30012:26;;30084:9;30078:4;30074:20;30070:1;30059:9;30055:17;30048:47;30112:131;30238:4;30112:131;:::i;:::-;30104:139;;29831:419;;;:::o;30256:305::-;30296:3;30315:20;30333:1;30315:20;:::i;:::-;30310:25;;30349:20;30367:1;30349:20;:::i;:::-;30344:25;;30503:1;30435:66;30431:74;30428:1;30425:81;30422:107;;;30509:18;;:::i;:::-;30422:107;30553:1;30550;30546:9;30539:16;;30256:305;;;;:::o;30567:180::-;30615:77;30612:1;30605:88;30712:4;30709:1;30702:15;30736:4;30733:1;30726:15;30753:185;30793:1;30810:20;30828:1;30810:20;:::i;:::-;30805:25;;30844:20;30862:1;30844:20;:::i;:::-;30839:25;;30883:1;30873:35;;30888:18;;:::i;:::-;30873:35;30930:1;30927;30923:9;30918:14;;30753:185;;;;:::o;30944:180::-;30992:77;30989:1;30982:88;31089:4;31086:1;31079:15;31113:4;31110:1;31103:15;31130:143;31187:5;31218:6;31212:13;31203:22;;31234:33;31261:5;31234:33;:::i;:::-;31130:143;;;;:::o;31279:351::-;31349:6;31398:2;31386:9;31377:7;31373:23;31369:32;31366:119;;;31404:79;;:::i;:::-;31366:119;31524:1;31549:64;31605:7;31596:6;31585:9;31581:22;31549:64;:::i;:::-;31539:74;;31495:128;31279:351;;;;:::o;31636:85::-;31681:7;31710:5;31699:16;;31636:85;;;:::o;31727:158::-;31785:9;31818:61;31836:42;31845:32;31871:5;31845:32;:::i;:::-;31836:42;:::i;:::-;31818:61;:::i;:::-;31805:74;;31727:158;;;:::o;31891:147::-;31986:45;32025:5;31986:45;:::i;:::-;31981:3;31974:58;31891:147;;:::o;32044:114::-;32111:6;32145:5;32139:12;32129:22;;32044:114;;;:::o;32164:184::-;32263:11;32297:6;32292:3;32285:19;32337:4;32332:3;32328:14;32313:29;;32164:184;;;;:::o;32354:132::-;32421:4;32444:3;32436:11;;32474:4;32469:3;32465:14;32457:22;;32354:132;;;:::o;32492:108::-;32569:24;32587:5;32569:24;:::i;:::-;32564:3;32557:37;32492:108;;:::o;32606:179::-;32675:10;32696:46;32738:3;32730:6;32696:46;:::i;:::-;32774:4;32769:3;32765:14;32751:28;;32606:179;;;;:::o;32791:113::-;32861:4;32893;32888:3;32884:14;32876:22;;32791:113;;;:::o;32940:732::-;33059:3;33088:54;33136:5;33088:54;:::i;:::-;33158:86;33237:6;33232:3;33158:86;:::i;:::-;33151:93;;33268:56;33318:5;33268:56;:::i;:::-;33347:7;33378:1;33363:284;33388:6;33385:1;33382:13;33363:284;;;33464:6;33458:13;33491:63;33550:3;33535:13;33491:63;:::i;:::-;33484:70;;33577:60;33630:6;33577:60;:::i;:::-;33567:70;;33423:224;33410:1;33407;33403:9;33398:14;;33363:284;;;33367:14;33663:3;33656:10;;33064:608;;;32940:732;;;;:::o;33678:831::-;33941:4;33979:3;33968:9;33964:19;33956:27;;33993:71;34061:1;34050:9;34046:17;34037:6;33993:71;:::i;:::-;34074:80;34150:2;34139:9;34135:18;34126:6;34074:80;:::i;:::-;34201:9;34195:4;34191:20;34186:2;34175:9;34171:18;34164:48;34229:108;34332:4;34323:6;34229:108;:::i;:::-;34221:116;;34347:72;34415:2;34404:9;34400:18;34391:6;34347:72;:::i;:::-;34429:73;34497:3;34486:9;34482:19;34473:6;34429:73;:::i;:::-;33678:831;;;;;;;;:::o

Swarm Source

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