ETH Price: $3,168.33 (-8.13%)
Gas: 4 Gwei

Token

Halt (HALT)
 

Overview

Max Total Supply

1,000,000,000 HALT

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
0xdedcatbounce.eth
Balance
11,370,577.994920996 HALT

Value
$0.00
0x4de910a6ca7cec4fe0db9edc24c3a66d6558ea3f
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:
Halt

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-05-19
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

contract Halt {
    mapping (address => uint256) internal _rOwned;
    mapping (address => uint256) internal _tOwned;
    mapping (address => mapping (address => uint256)) public allowance;

    mapping(address => bool) public isTaxedAsSender;
	mapping(address => bool) public isTaxedAsRecipient;
    mapping (address => bool) public isExcluded;
    address[] internal _excluded;

    string public constant name = "Halt";
    string public constant symbol = "HALT";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 1_000_000_000 * (10 ** decimals);
    uint256 internal _rTotal = (type(uint256).max - (type(uint256).max % totalSupply));
    uint256 internal _tFeeTotal;
    uint256 constant internal _reflectBasisPoints = 7000;  // 0.01% = 1 basis point, 4.00% = 400 basis points
    uint256 internal reflectDisabledBlock;

    address public owner;
    address public pendingOwner;

    /**
     * @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 account, address indexed spender, uint256 value);
    
    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);

    constructor () {
        owner = msg.sender;
        _rOwned[msg.sender] = _rTotal;
        emit Transfer(address(0), msg.sender, totalSupply);
    }
    
    modifier isOwner() {
        require(msg.sender == owner, "NOT_OWNER");
        _;
    }

    function balanceOf(address account) external view returns (uint256) {
        return isExcluded[account] ? _tOwned[account] : tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, allowance[sender][msg.sender] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        _approve(msg.sender, spender, allowance[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        _approve(msg.sender, spender, allowance[msg.sender][spender] - subtractedValue);
        return true;
    }

    function totalFees() external view returns (uint256) {
        return _tFeeTotal;
    }
    
    function reflect(uint256 tAmount) external {
        require(!isExcluded[msg.sender], "IS_EXCLUDED");
        
        (uint256 rAmount,,,,) = _getValues(address(0), address(0), tAmount);
        
        _rOwned[msg.sender] -= rAmount;
        _rTotal -= rAmount;
        _tFeeTotal += tAmount;
    }

    function reflectionFromToken(address sender, address recipient, uint256 tAmount, bool deductTransferFee) external view returns (uint256) {
        require(tAmount <= totalSupply, "AMOUNT_>_SUPPLY");
        
        (uint256 rAmount,uint256 rTransferAmount,,,) = _getValues(sender, recipient, tAmount);
        
        return deductTransferFee ? rTransferAmount : rAmount;
    }

    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "AMOUNT_>_TOTAL_REFLECTIONS");
        return rAmount / _getRate();
    }

    function setSenderTaxed(address account, bool taxed) external isOwner {
        // by default, all senders are not taxed
        isTaxedAsSender[account] = taxed;
	}
	
	function setRecipientTaxed(address account, bool taxed) external isOwner {
	    // by default, all recipients are not taxed
        isTaxedAsRecipient[account] = taxed;
	}

    function excludeAccountFromRewards(address account) external isOwner {
        require(!isExcluded[account], "IS_EXCLUDED");
        
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        
        isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccountFromRewards(address account) external isOwner {
        require(isExcluded[account], "IS_INCLUDED");
        
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address account, address spender, uint256 amount) internal {
        allowance[account][spender] = amount;
        emit Approval(account, spender, amount);
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(amount > 0, "INVALID_AMOUNT");
        
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(sender, recipient, amount);
        
        _rOwned[sender] -= rAmount;
        _rOwned[recipient] += rTransferAmount;
        
        if (isExcluded[sender] && !isExcluded[recipient]) {
            _tOwned[sender] -= amount;
        } else if (!isExcluded[sender] && isExcluded[recipient]) {
            _tOwned[recipient] += tTransferAmount;
        } else if (isExcluded[sender] && isExcluded[recipient]) {
            _tOwned[sender] -= amount;
            _tOwned[recipient] += tTransferAmount;
        }
        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _getValues(address sender, address recipient, uint256 tAmount) internal view returns (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) {
        (tTransferAmount, tFee) = _getTValues(sender, recipient, tAmount);
        (rAmount, rTransferAmount, rFee) = _getRValues(tAmount, tFee, _getRate());
    }

    function _getTValues(address sender, address recipient, uint256 tAmount) internal view returns (uint256 tTransferAmount, uint256 tFee) {
        tFee = (block.number != reflectDisabledBlock) && (isTaxedAsSender[sender] || isTaxedAsRecipient[recipient])
            ? (tAmount * _reflectBasisPoints) / 10_000
            : 0;
        
        tTransferAmount = tAmount - tFee;
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) internal pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) {
        rAmount = tAmount * currentRate;
        rFee = tFee * currentRate;
        rTransferAmount = rAmount - rFee;
    }

    function _getRate() internal view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() internal view returns (uint256 rSupply, uint256 tSupply) {
        rSupply = _rTotal;
        tSupply = totalSupply; 
        
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, totalSupply);
            
            rSupply -= _rOwned[_excluded[i]];
            tSupply -= _tOwned[_excluded[i]];
        }
        
        if (rSupply < (_rTotal / totalSupply)) {
            (rSupply, tSupply) = (_rTotal, totalSupply);
        }
    }
    
    function changeOwner(address newOwner) external isOwner {
        pendingOwner = newOwner;
	}
	
	function acceptOwnership() external {
        require(msg.sender == pendingOwner, "NOT_PENDING_OWNER");
        
        emit OwnershipTransferred(owner, msg.sender);
        
        owner = msg.sender;
        pendingOwner = address(0);
	}
	
	function disableReflectionForCurrentBlock() external isOwner {
	    reflectDisabledBlock = block.number;
	}
	
	function resetReflectDisabledBlock() external isOwner {
	    reflectDisabledBlock = 0;
	}
}

interface UniswapRouterV202 {
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    
    function factory() external pure returns (address);
}

interface UniswapPairV2 {
    function balanceOf(address owner) external view returns (uint);
    function transfer(address to, uint value) external returns (bool);
}

contract HaltOwnerV1 {
    Halt immutable public token;
    address public owner;
    address public pendingOwner;
    
    UniswapRouterV202 public router;
    UniswapPairV2 public pair;
    
    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);
    
    constructor (address tokenAddress, address routerAddress, address pairAddress) {
        owner = msg.sender;
        token = Halt(tokenAddress);
        router = UniswapRouterV202(routerAddress);
        pair = UniswapPairV2(pairAddress);
    }
    
    modifier isOwner() {
        require(msg.sender == owner, "NOT_OWNER");
        _;
    }
    
    function changeOwner(address newOwner) external isOwner {
        pendingOwner = newOwner;
	}
	
	function acceptOwner() external {
        require(msg.sender == pendingOwner, "NOT_PENDING_OWNER");
        
        emit OwnershipTransferred(owner, msg.sender);
        
        owner = msg.sender;
        pendingOwner = address(0);
	}
	
	function changeOwnerOfToken(address newOwner) external isOwner {
        token.changeOwner(newOwner);
	}
	
	function acceptOwnershipOfToken() external isOwner {
	    token.acceptOwnership();
	}
    
    function setSenderTaxed(address account, bool taxed) external isOwner {
        token.setSenderTaxed(account, taxed);
	}
	
	function setRecipientTaxed(address account, bool taxed) external isOwner {
	    token.setRecipientTaxed(account, taxed);
	}

    function setAccountGetsRewards(address account, bool getsRewards) external isOwner {
        getsRewards ? token.includeAccountFromRewards(account) : token.excludeAccountFromRewards(account);
    }
    
    function addLiquidityETH(
        address tokenAddress,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity) {
        require(tokenAddress == address(token), "NOT_TOKEN");
        
        // Turn off tax for this block
        token.disableReflectionForCurrentBlock();
        
        // Transfer token from caller to this
        token.transferFrom(msg.sender, address(this), amountTokenDesired);
        
        // Approve Router on the amount of token
        token.approve(address(router), amountTokenDesired);
        
        // Perform the liquidity add
        (amountToken, amountETH, liquidity) = router.addLiquidityETH{value: msg.value}(tokenAddress, amountTokenDesired, amountTokenMin, amountETHMin, to, deadline);
        
        uint256 leftOver = token.balanceOf(address(this));

        if (leftOver > 0) {
            // Transfer leftover ETH or tokens to the caller
            token.transfer(msg.sender, leftOver);
        }

        leftOver = address(this).balance;

        if (leftOver > 0) {
            payable(msg.sender).transfer(leftOver);
        }
        
        // Turn on tax for this block
        token.resetReflectDisabledBlock();
    }
    
    function setRouterAndPair(address routerAddress, address pairAddress) external isOwner {
        router = UniswapRouterV202(routerAddress);
        pair = UniswapPairV2(pairAddress);
    }
    
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","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":[],"name":"disableReflectionForCurrentBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccountFromRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccountFromRewards","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":"","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTaxedAsRecipient","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTaxedAsSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"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":"resetReflectDisabledBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"taxed","type":"bool"}],"name":"setRecipientTaxed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"taxed","type":"bool"}],"name":"setSenderTaxed","outputs":[],"stateMutability":"nonpayable","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"}]

6080604052620000126009600a6200011a565b6200002290633b9aca00620001e8565b620000309060001962000224565b6200003e906000196200020a565b6007553480156200004e57600080fd5b50600a80546001600160a01b03191633908117825560075460008281526020819052604081209190915590917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620000aa906009906200011a565b620000ba90633b9aca00620001e8565b60405190815260200160405180910390a36200025b565b600181815b8085111562000112578160001904821115620000f657620000f662000245565b808516156200010457918102915b93841c9390800290620000d6565b509250929050565b60006200012b60ff84168362000132565b9392505050565b6000826200014357506001620001e2565b816200015257506000620001e2565b81600181146200016b5760028114620001765762000196565b6001915050620001e2565b60ff8411156200018a576200018a62000245565b50506001821b620001e2565b5060208310610133831016604e8410600b8410161715620001bb575081810a620001e2565b620001c78383620000d1565b8060001904821115620001de57620001de62000245565b0290505b92915050565b600081600019048311821515161562000205576200020562000245565b500290565b6000828210156200021f576200021f62000245565b500390565b6000826200024057634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b611f1d806200026b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638220e8ce116100f9578063b2f3d11c11610097578063dd62ed3e11610071578063dd62ed3e14610447578063de233fee14610472578063e30c397814610485578063eeb396bf146104a557600080fd5b8063b2f3d11c146103fe578063cba0e99614610411578063d724bb4e1461043457600080fd5b806395d89b41116100d357806395d89b4114610389578063a457c2d7146103c5578063a6f9dae1146103d8578063a9059cbb146103eb57600080fd5b80638220e8ce14610329578063830bb90a1461033c5780638da5cb5b1461034457600080fd5b806329b2384211610166578063395093511161014057806339509351146102d85780633e3ac43e146102eb57806370a082311461030e57806379ba50971461032157600080fd5b806329b23842146102a35780632d838119146102ab578063313ce567146102be57600080fd5b806313114a9d116101a257806313114a9d1461025357806318160ddd1461026557806323b872dd1461026d57806325546d381461028057600080fd5b8063053ab182146101c957806306fdde03146101de578063095ea7b314610230575b600080fd5b6101dc6101d7366004611c27565b6104b8565b005b61021a6040518060400160405280600481526020017f48616c740000000000000000000000000000000000000000000000000000000081525081565b6040516102279190611c3f565b60405180910390f35b61024361023e366004611bfe565b6105a9565b6040519015158152602001610227565b6008545b604051908152602001610227565b6102576105c0565b61024361027b366004611b4e565b6105dd565b61024361028e366004611afb565b60036020526000908152604090205460ff1681565b6101dc61063c565b6102576102b9366004611c27565b6106c3565b6102c6600981565b60405160ff9091168152602001610227565b6102436102e6366004611bfe565b610743565b6102436102f9366004611afb565b60046020526000908152604090205460ff1681565b61025761031c366004611afb565b610787565b6101dc610811565b6101dc610337366004611afb565b61090f565b6101dc610c80565b600a546103649073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610227565b61021a6040518060400160405280600481526020017f48414c540000000000000000000000000000000000000000000000000000000081525081565b6102436103d3366004611bfe565b610d08565b6101dc6103e6366004611afb565b610d4c565b6102436103f9366004611bfe565b610e14565b6101dc61040c366004611afb565b610e21565b61024361041f366004611afb565b60056020526000908152604090205460ff1681565b6101dc610442366004611bd5565b61105c565b610257610455366004611b1c565b600260209081526000928352604080842090915290825290205481565b6101dc610480366004611bd5565b611133565b600b546103649073ffffffffffffffffffffffffffffffffffffffff1681565b6102576104b3366004611b89565b61120a565b3360009081526005602052604090205460ff1615610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f49535f4558434c5544454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610545600080846112bc565b50503360009081526020819052604081208054949550859490935090915061056e908490611e68565b9250508190555080600760008282546105879190611e68565b9250508190555081600860008282546105a09190611cb0565b90915550505050565b60006105b63384846112f8565b5060015b92915050565b6105cc6009600a611d62565b6105da90633b9aca00611e2b565b81565b60006105ea848484611366565b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203380855292529091205461063291869161062d908690611e68565b6112f8565b5060019392505050565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146106bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b43600955565b6000600754821115610731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f414d4f554e545f3e5f544f54414c5f5245464c454354494f4e53000000000000604482015260640161052e565b6107396116fe565b6105ba9083611cc8565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b691859061062d908690611cb0565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205460ff166107e85773ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546107e3906106c3565b6105ba565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b600b5473ffffffffffffffffffffffffffffffffffffffff163314610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e4552000000000000000000000000000000604482015260640161052e565b600a54604051339173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600b80549091169055565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff16610a1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f49535f494e434c55444544000000000000000000000000000000000000000000604482015260640161052e565b60005b600654811015610c7c578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610a7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610c6a5760068054610ab590600190611e68565b81548110610aec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546006805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610b4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055918416815260018252604080822082905560059092522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556006805480610c0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555050565b80610c7481611e7f565b915050610a22565b5050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610d01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b6000600955565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b691859061062d908690611e68565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006105b6338484611366565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610ea2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff1615610f32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f49535f4558434c55444544000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090205415610fb35773ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902054610f8c906106c3565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020555b73ffffffffffffffffffffffffffffffffffffffff16600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146110dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146111b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60006112186009600a611d62565b61122690633b9aca00611e2b565b83111561128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f414d4f554e545f3e5f535550504c590000000000000000000000000000000000604482015260640161052e565b60008061129d8787876112bc565b50505091509150836112af57816112b1565b805b979650505050505050565b60008060008060006112cf888888611721565b90925090506112e686826112e16116fe565b6117c4565b919a9099509097509195509350915050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f414d4f554e54000000000000000000000000000000000000604482015260640161052e565b60008060008060006113e38888886112bc565b94509450945094509450846000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143b9190611e68565b909155505073ffffffffffffffffffffffffffffffffffffffff871660009081526020819052604081208054869290611475908490611cb0565b909155505073ffffffffffffffffffffffffffffffffffffffff881660009081526005602052604090205460ff1680156114d5575073ffffffffffffffffffffffffffffffffffffffff871660009081526005602052604090205460ff16155b1561151a5773ffffffffffffffffffffffffffffffffffffffff88166000908152600160205260408120805488929061150f908490611e68565b909155506116839050565b73ffffffffffffffffffffffffffffffffffffffff881660009081526005602052604090205460ff16158015611575575073ffffffffffffffffffffffffffffffffffffffff871660009081526005602052604090205460ff165b156115af5773ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120805484929061150f908490611cb0565b73ffffffffffffffffffffffffffffffffffffffff881660009081526005602052604090205460ff168015611609575073ffffffffffffffffffffffffffffffffffffffff871660009081526005602052604090205460ff165b156116835773ffffffffffffffffffffffffffffffffffffffff881660009081526001602052604081208054889290611643908490611e68565b909155505073ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120805484929061167d908490611cb0565b90915550505b61168d83826117f5565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ec91815260200190565b60405180910390a35050505050505050565b600080600061170b611820565b909250905061171a8183611cc8565b9250505090565b600080600954431415801561178a575073ffffffffffffffffffffffffffffffffffffffff851660009081526003602052604090205460ff168061178a575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604090205460ff165b6117955760006117ae565b6127106117a4611b5885611e2b565b6117ae9190611cc8565b90506117ba8184611e68565b9150935093915050565b600080806117d28487611e2b565b92506117de8486611e2b565b90506117ea8184611e68565b915093509350939050565b81600760008282546118079190611e68565b9250508190555080600860008282546105a09190611cb0565b60075460006118316009600a611d62565b61183f90633b9aca00611e2b565b905060005b600654811015611a6c57826000806006848154811061188c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205411806119385750816001600060068481548110611904577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054115b156119635760075461194c6009600a611d62565b61195a90633b9aca00611e2b565b92509250509091565b600080600683815481106119a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020546119dc9084611e68565b92506001600060068381548110611a1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054611a589083611e68565b915080611a6481611e7f565b915050611844565b50611a796009600a611d62565b611a8790633b9aca00611e2b565b600754611a949190611cc8565b821015611abe57600754611aaa6009600a611d62565b611ab890633b9aca00611e2b565b90925090505b9091565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ae657600080fd5b919050565b80358015158114611ae657600080fd5b600060208284031215611b0c578081fd5b611b1582611ac2565b9392505050565b60008060408385031215611b2e578081fd5b611b3783611ac2565b9150611b4560208401611ac2565b90509250929050565b600080600060608486031215611b62578081fd5b611b6b84611ac2565b9250611b7960208501611ac2565b9150604084013590509250925092565b60008060008060808587031215611b9e578081fd5b611ba785611ac2565b9350611bb560208601611ac2565b925060408501359150611bca60608601611aeb565b905092959194509250565b60008060408385031215611be7578182fd5b611bf083611ac2565b9150611b4560208401611aeb565b60008060408385031215611c10578182fd5b611c1983611ac2565b946020939093013593505050565b600060208284031215611c38578081fd5b5035919050565b6000602080835283518082850152825b81811015611c6b57858101830151858201604001528201611c4f565b81811115611c7c5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115611cc357611cc3611eb8565b500190565b600082611cfc577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b600181815b80851115611d5a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611d4057611d40611eb8565b80851615611d4d57918102915b93841c9390800290611d06565b509250929050565b6000611b1560ff841683600082611d7b575060016105ba565b81611d88575060006105ba565b8160018114611d9e5760028114611da857611dc4565b60019150506105ba565b60ff841115611db957611db9611eb8565b50506001821b6105ba565b5060208310610133831016604e8410600b8410161715611de7575081810a6105ba565b611df18383611d01565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611e2357611e23611eb8565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e6357611e63611eb8565b500290565b600082821015611e7a57611e7a611eb8565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611eb157611eb1611eb8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212208e1266cefab3e496b917e4f1be7e24915453d9a5888ef72024a046e5f80a0ddf64736f6c63430008040033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638220e8ce116100f9578063b2f3d11c11610097578063dd62ed3e11610071578063dd62ed3e14610447578063de233fee14610472578063e30c397814610485578063eeb396bf146104a557600080fd5b8063b2f3d11c146103fe578063cba0e99614610411578063d724bb4e1461043457600080fd5b806395d89b41116100d357806395d89b4114610389578063a457c2d7146103c5578063a6f9dae1146103d8578063a9059cbb146103eb57600080fd5b80638220e8ce14610329578063830bb90a1461033c5780638da5cb5b1461034457600080fd5b806329b2384211610166578063395093511161014057806339509351146102d85780633e3ac43e146102eb57806370a082311461030e57806379ba50971461032157600080fd5b806329b23842146102a35780632d838119146102ab578063313ce567146102be57600080fd5b806313114a9d116101a257806313114a9d1461025357806318160ddd1461026557806323b872dd1461026d57806325546d381461028057600080fd5b8063053ab182146101c957806306fdde03146101de578063095ea7b314610230575b600080fd5b6101dc6101d7366004611c27565b6104b8565b005b61021a6040518060400160405280600481526020017f48616c740000000000000000000000000000000000000000000000000000000081525081565b6040516102279190611c3f565b60405180910390f35b61024361023e366004611bfe565b6105a9565b6040519015158152602001610227565b6008545b604051908152602001610227565b6102576105c0565b61024361027b366004611b4e565b6105dd565b61024361028e366004611afb565b60036020526000908152604090205460ff1681565b6101dc61063c565b6102576102b9366004611c27565b6106c3565b6102c6600981565b60405160ff9091168152602001610227565b6102436102e6366004611bfe565b610743565b6102436102f9366004611afb565b60046020526000908152604090205460ff1681565b61025761031c366004611afb565b610787565b6101dc610811565b6101dc610337366004611afb565b61090f565b6101dc610c80565b600a546103649073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610227565b61021a6040518060400160405280600481526020017f48414c540000000000000000000000000000000000000000000000000000000081525081565b6102436103d3366004611bfe565b610d08565b6101dc6103e6366004611afb565b610d4c565b6102436103f9366004611bfe565b610e14565b6101dc61040c366004611afb565b610e21565b61024361041f366004611afb565b60056020526000908152604090205460ff1681565b6101dc610442366004611bd5565b61105c565b610257610455366004611b1c565b600260209081526000928352604080842090915290825290205481565b6101dc610480366004611bd5565b611133565b600b546103649073ffffffffffffffffffffffffffffffffffffffff1681565b6102576104b3366004611b89565b61120a565b3360009081526005602052604090205460ff1615610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f49535f4558434c5544454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610545600080846112bc565b50503360009081526020819052604081208054949550859490935090915061056e908490611e68565b9250508190555080600760008282546105879190611e68565b9250508190555081600860008282546105a09190611cb0565b90915550505050565b60006105b63384846112f8565b5060015b92915050565b6105cc6009600a611d62565b6105da90633b9aca00611e2b565b81565b60006105ea848484611366565b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203380855292529091205461063291869161062d908690611e68565b6112f8565b5060019392505050565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146106bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b43600955565b6000600754821115610731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f414d4f554e545f3e5f544f54414c5f5245464c454354494f4e53000000000000604482015260640161052e565b6107396116fe565b6105ba9083611cc8565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b691859061062d908690611cb0565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205460ff166107e85773ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546107e3906106c3565b6105ba565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b600b5473ffffffffffffffffffffffffffffffffffffffff163314610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e4552000000000000000000000000000000604482015260640161052e565b600a54604051339173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600b80549091169055565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff16610a1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f49535f494e434c55444544000000000000000000000000000000000000000000604482015260640161052e565b60005b600654811015610c7c578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610a7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610c6a5760068054610ab590600190611e68565b81548110610aec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546006805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610b4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055918416815260018252604080822082905560059092522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556006805480610c0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555050565b80610c7481611e7f565b915050610a22565b5050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610d01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b6000600955565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b691859061062d908690611e68565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006105b6338484611366565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610ea2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460ff1615610f32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f49535f4558434c55444544000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090205415610fb35773ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902054610f8c906106c3565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020555b73ffffffffffffffffffffffffffffffffffffffff16600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146110dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600a5473ffffffffffffffffffffffffffffffffffffffff1633146111b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260046020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60006112186009600a611d62565b61122690633b9aca00611e2b565b83111561128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f414d4f554e545f3e5f535550504c590000000000000000000000000000000000604482015260640161052e565b60008061129d8787876112bc565b50505091509150836112af57816112b1565b805b979650505050505050565b60008060008060006112cf888888611721565b90925090506112e686826112e16116fe565b6117c4565b919a9099509097509195509350915050565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f414d4f554e54000000000000000000000000000000000000604482015260640161052e565b60008060008060006113e38888886112bc565b94509450945094509450846000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143b9190611e68565b909155505073ffffffffffffffffffffffffffffffffffffffff871660009081526020819052604081208054869290611475908490611cb0565b909155505073ffffffffffffffffffffffffffffffffffffffff881660009081526005602052604090205460ff1680156114d5575073ffffffffffffffffffffffffffffffffffffffff871660009081526005602052604090205460ff16155b1561151a5773ffffffffffffffffffffffffffffffffffffffff88166000908152600160205260408120805488929061150f908490611e68565b909155506116839050565b73ffffffffffffffffffffffffffffffffffffffff881660009081526005602052604090205460ff16158015611575575073ffffffffffffffffffffffffffffffffffffffff871660009081526005602052604090205460ff165b156115af5773ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120805484929061150f908490611cb0565b73ffffffffffffffffffffffffffffffffffffffff881660009081526005602052604090205460ff168015611609575073ffffffffffffffffffffffffffffffffffffffff871660009081526005602052604090205460ff165b156116835773ffffffffffffffffffffffffffffffffffffffff881660009081526001602052604081208054889290611643908490611e68565b909155505073ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120805484929061167d908490611cb0565b90915550505b61168d83826117f5565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ec91815260200190565b60405180910390a35050505050505050565b600080600061170b611820565b909250905061171a8183611cc8565b9250505090565b600080600954431415801561178a575073ffffffffffffffffffffffffffffffffffffffff851660009081526003602052604090205460ff168061178a575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604090205460ff165b6117955760006117ae565b6127106117a4611b5885611e2b565b6117ae9190611cc8565b90506117ba8184611e68565b9150935093915050565b600080806117d28487611e2b565b92506117de8486611e2b565b90506117ea8184611e68565b915093509350939050565b81600760008282546118079190611e68565b9250508190555080600860008282546105a09190611cb0565b60075460006118316009600a611d62565b61183f90633b9aca00611e2b565b905060005b600654811015611a6c57826000806006848154811061188c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205411806119385750816001600060068481548110611904577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054115b156119635760075461194c6009600a611d62565b61195a90633b9aca00611e2b565b92509250509091565b600080600683815481106119a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020546119dc9084611e68565b92506001600060068381548110611a1c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054611a589083611e68565b915080611a6481611e7f565b915050611844565b50611a796009600a611d62565b611a8790633b9aca00611e2b565b600754611a949190611cc8565b821015611abe57600754611aaa6009600a611d62565b611ab890633b9aca00611e2b565b90925090505b9091565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ae657600080fd5b919050565b80358015158114611ae657600080fd5b600060208284031215611b0c578081fd5b611b1582611ac2565b9392505050565b60008060408385031215611b2e578081fd5b611b3783611ac2565b9150611b4560208401611ac2565b90509250929050565b600080600060608486031215611b62578081fd5b611b6b84611ac2565b9250611b7960208501611ac2565b9150604084013590509250925092565b60008060008060808587031215611b9e578081fd5b611ba785611ac2565b9350611bb560208601611ac2565b925060408501359150611bca60608601611aeb565b905092959194509250565b60008060408385031215611be7578182fd5b611bf083611ac2565b9150611b4560208401611aeb565b60008060408385031215611c10578182fd5b611c1983611ac2565b946020939093013593505050565b600060208284031215611c38578081fd5b5035919050565b6000602080835283518082850152825b81811015611c6b57858101830151858201604001528201611c4f565b81811115611c7c5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115611cc357611cc3611eb8565b500190565b600082611cfc577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b600181815b80851115611d5a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611d4057611d40611eb8565b80851615611d4d57918102915b93841c9390800290611d06565b509250929050565b6000611b1560ff841683600082611d7b575060016105ba565b81611d88575060006105ba565b8160018114611d9e5760028114611da857611dc4565b60019150506105ba565b60ff841115611db957611db9611eb8565b50506001821b6105ba565b5060208310610133831016604e8410600b8410161715611de7575081810a6105ba565b611df18383611d01565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611e2357611e23611eb8565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e6357611e63611eb8565b500290565b600082821015611e7a57611e7a611eb8565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611eb157611eb1611eb8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212208e1266cefab3e496b917e4f1be7e24915453d9a5888ef72024a046e5f80a0ddf64736f6c63430008040033

Deployed Bytecode Sourcemap

69:8798:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3164:309;;;;;;:::i;:::-;;:::i;:::-;;464:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2210:152;;;;;;:::i;:::-;;:::i;:::-;;;2740:14:1;;2733:22;2715:41;;2703:2;2688:18;2210:152:0;2670:92:1;3063:89:0;3134:10;;3063:89;;;5985:25:1;;;5973:2;5958:18;3063:89:0;5940:76:1;595:70:0;;;:::i;2370:253::-;;;;;;:::i;:::-;;:::i;269:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8658:109;;;:::i;3874:190::-;;;;;;:::i;:::-;;:::i;552:34::-;;585:1;552:34;;;;;6193:4:1;6181:17;;;6163:36;;6151:2;6136:18;552:34:0;6118:87:1;2631:203:0;;;;;;:::i;:::-;;:::i;320:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1864:172;;;;;;:::i;:::-;;:::i;8404:248::-;;;:::i;4777:477::-;;;;;;:::i;:::-;;:::i;8773:91::-;;;:::i;952:20::-;;;;;;;;;;;;2520:42:1;2508:55;;;2490:74;;2478:2;2463:18;952:20:0;2445:125:1;507:38:0;;;;;;;;;;;;;;;;;;;;;2842:213;;;;;;:::i;:::-;;:::i;8303:95::-;;;;;;:::i;:::-;;:::i;2044:158::-;;;;;;:::i;:::-;;:::i;4428:341::-;;;;;;:::i;:::-;;:::i;377:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4072:168;;;;;;:::i;:::-;;:::i;194:66::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;4246:174;;;;;;:::i;:::-;;:::i;979:27::-;;;;;;;;;3481:385;;;;;;:::i;:::-;;:::i;3164:309::-;3238:10;3227:22;;;;:10;:22;;;;;;;;3226:23;3218:47;;;;;;;4675:2:1;3218:47:0;;;4657:21:1;4714:2;4694:18;;;4687:30;4753:13;4733:18;;;4726:41;4784:18;;3218:47:0;;;;;;;;;3287:15;3310:43;3329:1;3341;3345:7;3310:10;:43::i;:::-;-1:-1:-1;;3382:10:0;3374:7;:19;;;;;;;;;;:30;;3286:67;;-1:-1:-1;3286:67:0;;3374:19;;-1:-1:-1;3374:7:0;;-1:-1:-1;3374:30:0;;3286:67;;3374:30;:::i;:::-;;;;;;;;3426:7;3415;;:18;;;;;;;:::i;:::-;;;;;;;;3458:7;3444:10;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;3164:309:0:o;2210:152::-;2278:4;2295:37;2304:10;2316:7;2325:6;2295:8;:37::i;:::-;-1:-1:-1;2350:4:0;2210:152;;;;;:::o;595:70::-;650:14;585:1;650:2;:14;:::i;:::-;633:32;;:13;:32;:::i;:::-;595:70;:::o;2370:253::-;2461:4;2478:36;2488:6;2496:9;2507:6;2478:9;:36::i;:::-;2554:17;;;;;;;:9;:17;;;;;;;;2542:10;2554:29;;;;;;;;;2525:68;;2534:6;;2554:38;;2586:6;;2554:38;:::i;:::-;2525:8;:68::i;:::-;-1:-1:-1;2611:4:0;2370:253;;;;;:::o;8658:109::-;1817:5;;;;1803:10;:19;1795:41;;;;;;;5361:2:1;1795:41:0;;;5343:21:1;5400:1;5380:18;;;5373:29;5438:11;5418:18;;;5411:39;5467:18;;1795:41:0;5333:158:1;1795:41:0;8750:12:::1;8727:20;:35:::0;8658:109::o;3874:190::-;3941:7;3980;;3969;:18;;3961:57;;;;;;;3636:2:1;3961:57:0;;;3618:21:1;3675:2;3655:18;;;3648:30;3714:28;3694:18;;;3687:56;3760:18;;3961:57:0;3608:176:1;3961:57:0;4046:10;:8;:10::i;:::-;4036:20;;:7;:20;:::i;2631:203::-;2739:10;2713:4;2760:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;2713:4;;2730:74;;2751:7;;2760:43;;2793:10;;2760:43;:::i;1864:172::-;1950:19;;;1923:7;1950:19;;;:10;:19;;;;;;;;:78;;2011:16;;;:7;:16;;;;;;;;;;;1991:37;;:19;:37::i;:::-;1950:78;;;-1:-1:-1;1972:16:0;;;;;;:7;:16;;;;;;;1864:172::o;8404:248::-;8473:12;;;;8459:10;:26;8451:56;;;;;;;5015:2:1;8451:56:0;;;4997:21:1;5054:2;5034:18;;;5027:30;5093:19;5073:18;;;5066:47;5130:18;;8451:56:0;4987:167:1;8451:56:0;8554:5;;8533:39;;8561:10;;8533:39;8554:5;;8533:39;;8554:5;;8533:39;8593:5;:18;;;;;;8601:10;8593:18;;;;8622:12;:25;;;;;;;8404:248::o;4777:477::-;1817:5;;;;1803:10;:19;1795:41;;;;;;;5361:2:1;1795:41:0;;;5343:21:1;5400:1;5380:18;;;5373:29;5438:11;5418:18;;;5411:39;5467:18;;1795:41:0;5333:158:1;1795:41:0;4865:19:::1;::::0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;4857:43;;;::::0;::::1;::::0;;4335:2:1;4857:43:0::1;::::0;::::1;4317:21:1::0;4374:2;4354:18;;;4347:30;4413:13;4393:18;;;4386:41;4444:18;;4857:43:0::1;4307:161:1::0;4857:43:0::1;4926:9;4921:326;4945:9;:16:::0;4941:20;::::1;4921:326;;;5003:7;4987:23;;:9;4997:1;4987:12;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;:23;4983:253;;;5046:9;5056:16:::0;;:20:::1;::::0;5075:1:::1;::::0;5056:20:::1;:::i;:::-;5046:31;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;5031:9:::1;:12:::0;;5046:31:::1;::::0;;::::1;::::0;5041:1;;5031:12;::::1;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;;::::1;;::::0;;::::1;;::::0;;5096:16;;::::1;::::0;;-1:-1:-1;5096:16:0;;;;;;:20;;;5135:10:::1;:19:::0;;;;:27;;;::::1;::::0;;5181:9:::1;:15:::0;;;::::1;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;4921:326:::1;4777:477:::0;:::o;4983:253::-:1;4963:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4921:326;;;;4777:477:::0;:::o;8773:91::-;1817:5;;;;1803:10;:19;1795:41;;;;;;;5361:2:1;1795:41:0;;;5343:21:1;5400:1;5380:18;;;5373:29;5438:11;5418:18;;;5411:39;5467:18;;1795:41:0;5333:158:1;1795:41:0;8858:1:::1;8835:20;:24:::0;8773:91::o;2842:213::-;2955:10;2929:4;2976:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;2929:4;;2946:79;;2967:7;;2976:48;;3009:15;;2976:48;:::i;8303:95::-;1817:5;;;;1803:10;:19;1795:41;;;;;;;5361:2:1;1795:41:0;;;5343:21:1;5400:1;5380:18;;;5373:29;5438:11;5418:18;;;5411:39;5467:18;;1795:41:0;5333:158:1;1795:41:0;8370:12:::1;:23:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;8303:95::o;2044:158::-;2115:4;2132:40;2142:10;2154:9;2165:6;2132:9;:40::i;4428:341::-;1817:5;;;;1803:10;:19;1795:41;;;;;;;5361:2:1;1795:41:0;;;5343:21:1;5400:1;5380:18;;;5373:29;5438:11;5418:18;;;5411:39;5467:18;;1795:41:0;5333:158:1;1795:41:0;4517:19:::1;::::0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;4516:20;4508:44;;;::::0;::::1;::::0;;4675:2:1;4508:44:0::1;::::0;::::1;4657:21:1::0;4714:2;4694:18;;;4687:30;4753:13;4733:18;;;4726:41;4784:18;;4508:44:0::1;4647:161:1::0;4508:44:0::1;4576:16;::::0;::::1;4595:1;4576:16:::0;;;::::1;::::0;;;;;;;:20;4573:108:::1;;4652:16;::::0;::::1;:7;:16:::0;;;::::1;::::0;;;;;;;4632:37:::1;::::0;:19:::1;:37::i;:::-;4613:16;::::0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;4573:108:::1;4701:19;;;::::0;;;:10:::1;:19;::::0;;;;:26;;;::::1;4723:4;4701:26:::0;;::::1;::::0;;;4738:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;4428:341::o;4072:168::-;1817:5;;;;1803:10;:19;1795:41;;;;;;;5361:2:1;1795:41:0;;;5343:21:1;5400:1;5380:18;;;5373:29;5438:11;5418:18;;;5411:39;5467:18;;1795:41:0;5333:158:1;1795:41:0;4203:24:::1;::::0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;4072:168::o;4246:174::-;1817:5;;;;1803:10;:19;1795:41;;;;;;;5361:2:1;1795:41:0;;;5343:21:1;5400:1;5380:18;;;5373:29;5438:11;5418:18;;;5411:39;5467:18;;1795:41:0;5333:158:1;1795:41:0;4380:27:::1;::::0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;4246:174::o;3481:385::-;3609:7;650:14;585:1;650:2;:14;:::i;:::-;633:32;;:13;:32;:::i;:::-;3637:7;:22;;3629:50;;;;;;;3991:2:1;3629:50:0;;;3973:21:1;4030:2;4010:18;;;4003:30;4069:17;4049:18;;;4042:45;4104:18;;3629:50:0;3963:165:1;3629:50:0;3701:15;3717:23;3747:38;3758:6;3766:9;3777:7;3747:10;:38::i;:::-;3700:85;;;;;;;3813:17;:45;;3851:7;3813:45;;;3833:15;3813:45;3806:52;3481:385;-1:-1:-1;;;;;;;3481:385:0:o;6484:358::-;6579:15;6596:23;6621:12;6635:23;6660:12;6711:39;6723:6;6731:9;6742:7;6711:11;:39::i;:::-;6685:65;;-1:-1:-1;6685:65:0;-1:-1:-1;6796:38:0;6808:7;6685:65;6823:10;:8;:10::i;:::-;6796:11;:38::i;:::-;6761:73;;;;-1:-1:-1;6761:73:0;;-1:-1:-1;6484:358:0;;-1:-1:-1;6484:358:0;-1:-1:-1;6484:358:0;-1:-1:-1;;6484:358:0:o;5262:182::-;5350:18;;;;;;;;:9;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5402:34;;5985:25:1;;;5402:34:0;;5958:18:1;5402:34:0;;;;;;;5262:182;;;:::o;5456:891::-;5563:1;5554:6;:10;5546:37;;;;;;;5698:2:1;5546:37:0;;;5680:21:1;5737:2;5717:18;;;5710:30;5776:16;5756:18;;;5749:44;5810:18;;5546:37:0;5670:164:1;5546:37:0;5605:15;5622:23;5647:12;5661:23;5686:12;5702:37;5713:6;5721:9;5732:6;5702:10;:37::i;:::-;5604:135;;;;;;;;;;5779:7;5760;:15;5768:6;5760:15;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;5797:18:0;;;:7;:18;;;;;;;;;;:37;;5819:15;;5797:7;:37;;5819:15;;5797:37;:::i;:::-;;;;-1:-1:-1;;5859:18:0;;;;;;;:10;:18;;;;;;;;:44;;;;-1:-1:-1;5882:21:0;;;;;;;:10;:21;;;;;;;;5881:22;5859:44;5855:381;;;5920:15;;;;;;;:7;:15;;;;;:25;;5939:6;;5920:15;:25;;5939:6;;5920:25;:::i;:::-;;;;-1:-1:-1;5855:381:0;;-1:-1:-1;5855:381:0;;5968:18;;;;;;;:10;:18;;;;;;;;5967:19;:44;;;;-1:-1:-1;5990:21:0;;;;;;;:10;:21;;;;;;;;5967:44;5963:273;;;6028:18;;;;;;;:7;:18;;;;;:37;;6050:15;;6028:18;:37;;6050:15;;6028:37;:::i;5963:273::-;6087:18;;;;;;;:10;:18;;;;;;;;:43;;;;-1:-1:-1;6109:21:0;;;;;;;:10;:21;;;;;;;;6087:43;6083:153;;;6147:15;;;;;;;:7;:15;;;;;:25;;6166:6;;6147:15;:25;;6166:6;;6147:25;:::i;:::-;;;;-1:-1:-1;;6187:18:0;;;;;;;:7;:18;;;;;:37;;6209:15;;6187:18;:37;;6209:15;;6187:37;:::i;:::-;;;;-1:-1:-1;;6083:153:0;6256:23;6268:4;6274;6256:11;:23::i;:::-;6312:9;6295:44;;6304:6;6295:44;;;6323:15;6295:44;;;;5985:25:1;;5973:2;5958:18;;5940:76;6295:44:0;;;;;;;;5456:891;;;;;;;;:::o;7534:162::-;7577:7;7598:15;7615;7634:19;:17;:19::i;:::-;7597:56;;-1:-1:-1;7597:56:0;-1:-1:-1;7671:17:0;7597:56;;7671:17;:::i;:::-;7664:24;;;;7534:162;:::o;6850:387::-;6946:23;6971:12;7020:20;;7004:12;:36;;7003:100;;;;-1:-1:-1;7046:23:0;;;;;;;:15;:23;;;;;;;;;:56;;-1:-1:-1;7073:29:0;;;;;;;:18;:29;;;;;;;;7046:56;7003:173;;7175:1;7003:173;;;7153:6;7120:29;843:4;7120:7;:29;:::i;:::-;7119:40;;;;:::i;:::-;6996:180;-1:-1:-1;7215:14:0;6996:180;7215:7;:14;:::i;:::-;7197:32;;6850:387;;;;;;:::o;7245:281::-;7341:15;;;7418:21;7428:11;7418:7;:21;:::i;:::-;7408:31;-1:-1:-1;7457:18:0;7464:11;7457:4;:18;:::i;:::-;7450:25;-1:-1:-1;7504:14:0;7450:25;7504:7;:14;:::i;:::-;7486:32;;7245:281;;;;;;;:::o;6355:121::-;6435:4;6424:7;;:15;;;;;;;:::i;:::-;;;;;;;;6464:4;6450:10;;:18;;;;;;;:::i;7704:587::-;7811:7;;7756:15;650:14;585:1;650:2;:14;:::i;:::-;633:32;;:13;:32;:::i;:::-;7829:21;;7877:9;7872:283;7896:9;:16;7892:20;;7872:283;;;7962:7;7938;:21;7946:9;7956:1;7946:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7938:21;;;;;;;;;;;;;:31;;:66;;;7997:7;7973;:21;7981:9;7991:1;7981:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7973:21;;;;;;;;;;;;;:31;7938:66;7934:101;;;8014:7;;650:14;585:1;650:2;:14;:::i;:::-;633:32;;:13;:32;:::i;:::-;8006:29;;;;;7704:587;;:::o;7934:101::-;8075:7;:21;8083:9;8093:1;8083:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8075:21;;;;;;;;;;;;;8064:32;;;;:::i;:::-;;;8122:7;:21;8130:9;8140:1;8130:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8122:21;;;;;;;;;;;;;8111:32;;;;:::i;:::-;;-1:-1:-1;7914:3:0;;;;:::i;:::-;;;;7872:283;;;-1:-1:-1;650:14:0;585:1;650:2;:14;:::i;:::-;633:32;;:13;:32;:::i;:::-;8190:7;;:21;;;;:::i;:::-;8179:7;:33;8175:109;;;8251:7;;650:14;585:1;650:2;:14;:::i;:::-;633:32;;:13;:32;:::i;:::-;8229:43;;-1:-1:-1;8229:43:0;-1:-1:-1;8175:109:0;7704:587;;:::o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:160::-;280:20;;336:13;;329:21;319:32;;309:2;;365:1;362;355:12;380:196;439:6;492:2;480:9;471:7;467:23;463:32;460:2;;;513:6;505;498:22;460:2;541:29;560:9;541:29;:::i;:::-;531:39;450:126;-1:-1:-1;;;450:126:1:o;581:270::-;649:6;657;710:2;698:9;689:7;685:23;681:32;678:2;;;731:6;723;716:22;678:2;759:29;778:9;759:29;:::i;:::-;749:39;;807:38;841:2;830:9;826:18;807:38;:::i;:::-;797:48;;668:183;;;;;:::o;856:338::-;933:6;941;949;1002:2;990:9;981:7;977:23;973:32;970:2;;;1023:6;1015;1008:22;970:2;1051:29;1070:9;1051:29;:::i;:::-;1041:39;;1099:38;1133:2;1122:9;1118:18;1099:38;:::i;:::-;1089:48;;1184:2;1173:9;1169:18;1156:32;1146:42;;960:234;;;;;:::o;1199:407::-;1282:6;1290;1298;1306;1359:3;1347:9;1338:7;1334:23;1330:33;1327:2;;;1381:6;1373;1366:22;1327:2;1409:29;1428:9;1409:29;:::i;:::-;1399:39;;1457:38;1491:2;1480:9;1476:18;1457:38;:::i;:::-;1447:48;;1542:2;1531:9;1527:18;1514:32;1504:42;;1565:35;1596:2;1585:9;1581:18;1565:35;:::i;:::-;1555:45;;1317:289;;;;;;;:::o;1611:264::-;1676:6;1684;1737:2;1725:9;1716:7;1712:23;1708:32;1705:2;;;1758:6;1750;1743:22;1705:2;1786:29;1805:9;1786:29;:::i;:::-;1776:39;;1834:35;1865:2;1854:9;1850:18;1834:35;:::i;1880:264::-;1948:6;1956;2009:2;1997:9;1988:7;1984:23;1980:32;1977:2;;;2030:6;2022;2015:22;1977:2;2058:29;2077:9;2058:29;:::i;:::-;2048:39;2134:2;2119:18;;;;2106:32;;-1:-1:-1;;;1967:177:1:o;2149:190::-;2208:6;2261:2;2249:9;2240:7;2236:23;2232:32;2229:2;;;2282:6;2274;2267:22;2229:2;-1:-1:-1;2310:23:1;;2219:120;-1:-1:-1;2219:120:1:o;2767:662::-;2879:4;2908:2;2937;2926:9;2919:21;2969:6;2963:13;3012:6;3007:2;2996:9;2992:18;2985:34;3037:4;3050:140;3064:6;3061:1;3058:13;3050:140;;;3159:14;;;3155:23;;3149:30;3125:17;;;3144:2;3121:26;3114:66;3079:10;;3050:140;;;3208:6;3205:1;3202:13;3199:2;;;3278:4;3273:2;3264:6;3253:9;3249:22;3245:31;3238:45;3199:2;-1:-1:-1;3345:2:1;3333:15;3350:66;3329:88;3314:104;;;;3420:2;3310:113;;2888:541;-1:-1:-1;;;2888:541:1:o;6210:128::-;6250:3;6281:1;6277:6;6274:1;6271:13;6268:2;;;6287:18;;:::i;:::-;-1:-1:-1;6323:9:1;;6258:80::o;6343:274::-;6383:1;6409;6399:2;;6444:77;6441:1;6434:88;6545:4;6542:1;6535:15;6573:4;6570:1;6563:15;6399:2;-1:-1:-1;6602:9:1;;6389:228::o;6622:482::-;6711:1;6754:5;6711:1;6768:330;6789:7;6779:8;6776:21;6768:330;;;6908:4;6840:66;6836:77;6830:4;6827:87;6824:2;;;6917:18;;:::i;:::-;6967:7;6957:8;6953:22;6950:2;;;6987:16;;;;6950:2;7066:22;;;;7026:15;;;;6768:330;;;6772:3;6686:418;;;;;:::o;7109:140::-;7167:5;7196:47;7237:4;7227:8;7223:19;7217:4;7303:5;7333:8;7323:2;;-1:-1:-1;7374:1:1;7388:5;;7323:2;7422:4;7412:2;;-1:-1:-1;7459:1:1;7473:5;;7412:2;7504:4;7522:1;7517:59;;;;7590:1;7585:130;;;;7497:218;;7517:59;7547:1;7538:10;;7561:5;;;7585:130;7622:3;7612:8;7609:17;7606:2;;;7629:18;;:::i;:::-;-1:-1:-1;;7685:1:1;7671:16;;7700:5;;7497:218;;7799:2;7789:8;7786:16;7780:3;7774:4;7771:13;7767:36;7761:2;7751:8;7748:16;7743:2;7737:4;7734:12;7730:35;7727:77;7724:2;;;-1:-1:-1;7836:19:1;;;7868:5;;7724:2;7915:34;7940:8;7934:4;7915:34;:::i;:::-;8045:6;7977:66;7973:79;7964:7;7961:92;7958:2;;;8056:18;;:::i;:::-;8094:20;;7313:807;-1:-1:-1;;;7313:807:1:o;8125:228::-;8165:7;8291:1;8223:66;8219:74;8216:1;8213:81;8208:1;8201:9;8194:17;8190:105;8187:2;;;8298:18;;:::i;:::-;-1:-1:-1;8338:9:1;;8177:176::o;8358:125::-;8398:4;8426:1;8423;8420:8;8417:2;;;8431:18;;:::i;:::-;-1:-1:-1;8468:9:1;;8407:76::o;8488:195::-;8527:3;8558:66;8551:5;8548:77;8545:2;;;8628:18;;:::i;:::-;-1:-1:-1;8675:1:1;8664:13;;8535:148::o;8688:184::-;8740:77;8737:1;8730:88;8837:4;8834:1;8827:15;8861:4;8858:1;8851:15

Swarm Source

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