ETH Price: $2,507.53 (+0.36%)

Token

Secureum (SECUREUM)
 

Overview

Max Total Supply

1,000,000,000 SECUREUM

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
975,259.526914733 SECUREUM

Value
$0.00
0x39cb52d4f521b961e27cc8830925f368fbe41af9
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:
Secureum

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-24
*/

/**⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Website: https://securtoken.co
TG: https://t.me/secureumportal
Twitter: https://twitter.com/secureumportal
Whitepaper: https://securtoken.co/secureum_whitepaper.pdf
**/
// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.21;

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

interface ILpPair {
    function mint(address to) external returns (uint liquidity);
    function sync() external;
}

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

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

        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Secureum is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _communityDevWallet;
	address payable private _teamWallet;
    address constant  DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 firstBlock;
    string public _websiteInformation;
    string public _telegramInformation;
    string public _twitterInformation;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event SetExemptFromFees(address _address, bool _isExempt);

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    uint256 private _startingBuyCount=0;
    uint256 private _buyTaxReducedAfterThisManyBuys=20;
    uint256 private _sellTaxReducedAfterThisManyBuys=40;
    uint256 private _preventSellToEthTillBuysAre=40;
    uint256 private _buyTaxAtLaunch=20;
    uint256 private _sellTaxAtLaunch=28;
    uint256 private _initialBuyTax=2;
    uint256 private _initialSellTax=2;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10 **_decimals;
    string private constant _name = unicode"Secureum";
    string private constant _symbol = unicode"SECUREUM";
    uint256 public _maxTxAmount =   _tTotal / 10000 * 101; 
    uint256 public _maxWalletSize = _tTotal / 10000 * 101; 
    uint256 public _taxSwapThreshold = _tTotal / 10000 * 1;
    uint256 public _maxTaxSwap = _tTotal / 10000 * 50; 

    constructor () {

        _communityDevWallet = payable(_msgSender());
		_teamWallet = payable(address(0x0c1c4637d96A0CA54F6deeD48c2e51Dc38f45849));
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_communityDevWallet] = true;
		_isExcludedFromFee[_teamWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function openSecureum() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingOpen = true;
    }

    function removeSecureumLimits() external {
        require(_msgSender()==_communityDevWallet);
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function reduceBuyFees(uint256 _newFee) external {
      require(_msgSender()==_communityDevWallet);
      require(_newFee<2);
      _initialBuyTax=_newFee;
    }

    function reduceSellFees(uint256 _newFee) external {
      require(_msgSender()==_communityDevWallet);
      require(_newFee<2);
      _initialSellTax=_newFee;
    }

    function updateTokenSocials(
        string calldata __websiteInformation,
        string calldata __telegramInformation,
        string calldata __twitterInformation
    ) external {
        require(_msgSender()== _communityDevWallet);

        _websiteInformation = __websiteInformation;
        _telegramInformation = __telegramInformation;
        _twitterInformation = __twitterInformation;
}  

    function getWebsiteInformation() public view returns (string memory) {
        return _websiteInformation;
    }

    function getTelegramInformation() public view returns (string memory) {
        return _telegramInformation;
    }

    function getTwitterInformation() public view returns (string memory) {
        return _twitterInformation;
    }

    function withdrawStuckToken(address _token, address _to) external {
        require(_msgSender()==_communityDevWallet);
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_to, _contractBalance);
    }

    function sendContractTokenBalanceToEth() external {
        require(_msgSender()==_communityDevWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendEthtoDevelopment(ethBalance);
        }
    }

	function recoverETH() external {
        require(_msgSender()==_communityDevWallet);
		sendEthtoDevelopment(address(this).balance);
	}

    function changeMaxTaxSwapAmount(uint256 amount) external {
        require(_msgSender()==_communityDevWallet);
        _maxTaxSwap = _tTotal / 10000 * amount;
    }

    function changeTaxSwapThreshold (uint256 amount) external {
        require(_msgSender()==_communityDevWallet);
        _taxSwapThreshold = _tTotal / 10000 * amount;
    }

    function name() public pure returns (string memory) {
        return _name;
    }
	
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
	
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
	
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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 _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 swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

	function sendETHToMarketing(uint256 amount) private {
        _teamWallet.transfer(amount);
    }

    function sendEthtoDevelopment(uint256 amount) private {
        _communityDevWallet.transfer(amount);
    }

    receive() external payable {}

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_startingBuyCount>_buyTaxReducedAfterThisManyBuys)?_initialBuyTax:_buyTaxAtLaunch).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _startingBuyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_startingBuyCount>_sellTaxReducedAfterThisManyBuys)?_initialSellTax:_sellTaxAtLaunch).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _startingBuyCount>_preventSellToEthTillBuysAre) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
					sendETHToMarketing(address(this).balance.div(5));
                    sendEthtoDevelopment(address(this).balance);

                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_telegramInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_twitterInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_websiteInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeMaxTaxSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTelegramInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTwitterInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWebsiteInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openSecureum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeSecureumLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendContractTokenBalanceToEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__websiteInformation","type":"string"},{"internalType":"string","name":"__telegramInformation","type":"string"},{"internalType":"string","name":"__twitterInformation","type":"string"}],"name":"updateTokenSocials","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805461ffff60a81b191690555f600c8190556014600d8190556028600e819055600f556010819055601c60115560026012819055601355819055601555612710620000546009600a620003de565b6200006490633b9aca00620003f5565b6200007091906200040f565b6200007d906065620003f5565b601655612710620000916009600a620003de565b620000a190633b9aca00620003f5565b620000ad91906200040f565b620000ba906065620003f5565b601755612710620000ce6009600a620003de565b620000de90633b9aca00620003f5565b620000ea91906200040f565b620000f7906001620003f5565b6018556127106200010b6009600a620003de565b6200011b90633b9aca00620003f5565b6200012791906200040f565b62000134906032620003f5565b60195534801562000143575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060048054336001600160a01b03199182161790915560058054909116730c1c4637d96a0ca54f6deed48c2e51dc38f45849179055620001c66009600a620003de565b620001d690633b9aca00620003f5565b335f908152600160208190526040822092909255600390620001ff5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556004548216845282842080548616821790556005549091168352912080549092161790556200026f3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002a86009600a620003de565b620002b890633b9aca00620003f5565b60405190815260200160405180910390a36200042f565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200032357815f1904821115620003075762000307620002cf565b808516156200031557918102915b93841c9390800290620002e8565b509250929050565b5f826200033b57506001620003d8565b816200034957505f620003d8565b81600181146200036257600281146200036d576200038d565b6001915050620003d8565b60ff841115620003815762000381620002cf565b50506001821b620003d8565b5060208310610133831016604e8410600b8410161715620003b2575081810a620003d8565b620003be8383620002e3565b805f1904821115620003d457620003d4620002cf565b0290505b92915050565b5f620003ee60ff8416836200032b565b9392505050565b8082028115828204841417620003d857620003d8620002cf565b5f826200042a57634e487b7160e01b5f52601260045260245ffd5b500490565b611fee806200043d5f395ff3fe6080604052600436106101d3575f3560e01c80638f9a55c0116100fd578063c3f93b0111610092578063dedd452011610062578063dedd452014610534578063e0dc354614610548578063ee9a8a8a1461055c578063f1f5943f14610570575f80fd5b8063c3f93b01146104a9578063c8043432146104bd578063d0edc03f146104d1578063dd62ed3e146104f0575f80fd5b8063a6f34383116100cd578063a6f3438314610437578063a9059cbb14610456578063bc205ad314610475578063bf474bed14610494575f80fd5b80638f9a55c0146103b4578063943b4bfa146103c957806395d89b41146103e8578063a2f57f6214610418575f80fd5b806356c8c7ae11610173578063756b7bb711610143578063756b7bb7146103465780637d1db4a51461035a5780637efd4be71461036f5780638da5cb5b1461038e575f80fd5b806356c8c7ae146102d6578063681b9199146102ea57806370a08231146102fe578063715018a614610332575f80fd5b80630faee56f116101ae5780630faee56f1461026557806318160ddd1461028857806323b872dd1461029c578063313ce567146102bb575f80fd5b80630614117a146101de57806306fdde03146101f4578063095ea7b314610236575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101f2610584565b005b3480156101ff575f80fd5b50604080518082019091526008815267536563757265756d60c01b60208201525b60405161022d91906119c0565b60405180910390f35b348015610241575f80fd5b50610255610250366004611a22565b6105ae565b604051901515815260200161022d565b348015610270575f80fd5b5061027a60195481565b60405190815260200161022d565b348015610293575f80fd5b5061027a6105c4565b3480156102a7575f80fd5b506102556102b6366004611a4c565b6105e4565b3480156102c6575f80fd5b506040516009815260200161022d565b3480156102e1575f80fd5b5061022061064b565b3480156102f5575f80fd5b506101f26106d7565b348015610309575f80fd5b5061027a610318366004611a8a565b6001600160a01b03165f9081526001602052604090205490565b34801561033d575f80fd5b506101f2610ac4565b348015610351575f80fd5b50610220610b65565b348015610365575f80fd5b5061027a60165481565b34801561037a575f80fd5b506101f2610389366004611aa5565b610bf5565b348015610399575f80fd5b505f546040516001600160a01b03909116815260200161022d565b3480156103bf575f80fd5b5061027a60175481565b3480156103d4575f80fd5b506101f26103e3366004611aa5565b610c4c565b3480156103f3575f80fd5b50604080518082019091526008815267534543555245554d60c01b6020820152610220565b348015610423575f80fd5b506101f2610432366004611aa5565b610c7c565b348015610442575f80fd5b506101f2610451366004611aa5565b610cac565b348015610461575f80fd5b50610255610470366004611a22565b610d03565b348015610480575f80fd5b506101f261048f366004611abc565b610d0f565b34801561049f575f80fd5b5061027a60185481565b3480156104b4575f80fd5b50610220610e66565b3480156104c8575f80fd5b50610220610e75565b3480156104dc575f80fd5b506101f26104eb366004611b38565b610e82565b3480156104fb575f80fd5b5061027a61050a366004611abc565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561053f575f80fd5b50610220610ed3565b348015610553575f80fd5b50610220610ee0565b348015610567575f80fd5b506101f2610eef565b34801561057b575f80fd5b506101f2610f96565b6004546001600160a01b0316336001600160a01b0316146105a3575f80fd5b6105ac47610fe7565b565b5f6105ba33848461101e565b5060015b92915050565b5f6105d16009600a611cbf565b6105df90633b9aca00611ccd565b905090565b5f6105f0848484611141565b610641843361063c85604051806060016040528060288152602001611f91602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061163c565b61101e565b5060019392505050565b6009805461065890611ce4565b80601f016020809104026020016040519081016040528092919081815260200182805461068490611ce4565b80156106cf5780601f106106a6576101008083540402835291602001916106cf565b820191905f5260205f20905b8154815290600101906020018083116106b257829003601f168201915b505050505081565b5f546001600160a01b031633146107355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b54600160a01b900460ff161561078f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161072c565b600b805460ff60b01b1916600160b01b179055600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556107eb913091906107dd90600990611cbf565b61063c90633b9aca00611ccd565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085f9190611d16565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e29190611d16565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561092c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109509190611d16565b600b80546001600160a01b039283166001600160a01b0319909116179055600a541663f305d7194730610997816001600160a01b03165f9081526001602052604090205490565b5f806109aa5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a10573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a359190611d31565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aae9190611d5c565b50600b805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161072c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060088054610b7490611ce4565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba090611ce4565b8015610beb5780601f10610bc257610100808354040283529160200191610beb565b820191905f5260205f20905b815481529060010190602001808311610bce57829003601f168201915b5050505050905090565b6004546001600160a01b0316336001600160a01b031614610c14575f80fd5b80612710610c246009600a611cbf565b610c3290633b9aca00611ccd565b610c3c9190611d7b565b610c469190611ccd565b60185550565b6004546001600160a01b0316336001600160a01b031614610c6b575f80fd5b60028110610c77575f80fd5b601255565b6004546001600160a01b0316336001600160a01b031614610c9b575f80fd5b60028110610ca7575f80fd5b601355565b6004546001600160a01b0316336001600160a01b031614610ccb575f80fd5b80612710610cdb6009600a611cbf565b610ce990633b9aca00611ccd565b610cf39190611d7b565b610cfd9190611ccd565b60195550565b5f6105ba338484611141565b6004546001600160a01b0316336001600160a01b031614610d2e575f80fd5b6001600160a01b038216610d845760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161072c565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610dc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dec9190611d9a565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e609190611d5c565b50505050565b606060098054610b7490611ce4565b6007805461065890611ce4565b6004546001600160a01b0316336001600160a01b031614610ea1575f80fd5b6007610eae868883611e13565b506008610ebc848683611e13565b506009610eca828483611e13565b50505050505050565b6008805461065890611ce4565b606060078054610b7490611ce4565b6004546001600160a01b0316336001600160a01b031614610f0e575f80fd5b610f1a6009600a611cbf565b610f2890633b9aca00611ccd565b601655610f376009600a611cbf565b610f4590633b9aca00611ccd565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610f756009600a611cbf565b610f8390633b9aca00611ccd565b60405190815260200160405180910390a1565b6004546001600160a01b0316336001600160a01b031614610fb5575f80fd5b305f908152600160205260409020548015610fd357610fd381611674565b478015610fe357610fe381610fe7565b5050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fe3573d5f803e3d5ffd5b6001600160a01b0383166110805760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072c565b6001600160a01b0382166110e15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161072c565b6001600160a01b0382166112075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161072c565b5f81116112685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161072c565b5f80546001600160a01b0385811691161480159061129357505f546001600160a01b03848116911614155b156114ff576112c460646112be600d54600c54116112b3576010546112b7565b6012545b85906117e4565b90611869565b600b549091506001600160a01b0385811691161480156112f25750600a546001600160a01b03848116911614155b801561131657506001600160a01b0383165f9081526003602052604090205460ff16155b156113fc5760165482111561136d5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161072c565b6017548261138f856001600160a01b03165f9081526001602052604090205490565b6113999190611ecf565b11156113e75760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161072c565b600c8054905f6113f683611ee2565b91905055505b600b546001600160a01b03848116911614801561142257506001600160a01b0384163014155b1561144f5761144c60646112be600e54600c5411611442576011546112b7565b60135485906117e4565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156114855750600b546001600160a01b038581169116145b801561149a5750600b54600160b01b900460ff165b80156114a7575060185481115b80156114b65750600f54600c54115b156114fd576114d86114d3846114ce846019546118aa565b6118aa565b611674565b4780156114fb576114f26114ed476005611869565b6118be565b6114fb47610fe7565b505b505b801561157757305f9081526001602052604090205461151e90826118f5565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061156e9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115999083611953565b6001600160a01b0385165f908152600160205260409020556115dc6115be8383611953565b6001600160a01b0385165f90815260016020526040902054906118f5565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116258585611953565b60405190815260200160405180910390a350505050565b5f818484111561165f5760405162461bcd60e51b815260040161072c91906119c0565b505f61166b8486611efa565b95945050505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116ba576116ba611f0d565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117359190611d16565b8160018151811061174857611748611f0d565b6001600160a01b039283166020918202929092010152600a5461176e913091168461101e565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a69085905f90869030904290600401611f21565b5f604051808303815f87803b1580156117bd575f80fd5b505af11580156117cf573d5f803e3d5ffd5b5050600b805460ff60a81b1916905550505050565b5f825f036117f357505f6105be565b5f6117fe8385611ccd565b90508261180b8583611d7b565b146118625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161072c565b9392505050565b5f61186283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611994565b5f8183116118b85782611862565b50919050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fe3573d5f803e3d5ffd5b5f806119018385611ecf565b9050838110156118625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161072c565b5f61186283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061163c565b5f81836119b45760405162461bcd60e51b815260040161072c91906119c0565b505f61166b8486611d7b565b5f6020808352835180828501525f5b818110156119eb578581018301518582016040015282016119cf565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a1f575f80fd5b50565b5f8060408385031215611a33575f80fd5b8235611a3e81611a0b565b946020939093013593505050565b5f805f60608486031215611a5e575f80fd5b8335611a6981611a0b565b92506020840135611a7981611a0b565b929592945050506040919091013590565b5f60208284031215611a9a575f80fd5b813561186281611a0b565b5f60208284031215611ab5575f80fd5b5035919050565b5f8060408385031215611acd575f80fd5b8235611ad881611a0b565b91506020830135611ae881611a0b565b809150509250929050565b5f8083601f840112611b03575f80fd5b50813567ffffffffffffffff811115611b1a575f80fd5b602083019150836020828501011115611b31575f80fd5b9250929050565b5f805f805f8060608789031215611b4d575f80fd5b863567ffffffffffffffff80821115611b64575f80fd5b611b708a838b01611af3565b90985096506020890135915080821115611b88575f80fd5b611b948a838b01611af3565b90965094506040890135915080821115611bac575f80fd5b50611bb989828a01611af3565b979a9699509497509295939492505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c1957815f1904821115611bff57611bff611bcb565b80851615611c0c57918102915b93841c9390800290611be4565b509250929050565b5f82611c2f575060016105be565b81611c3b57505f6105be565b8160018114611c515760028114611c5b57611c77565b60019150506105be565b60ff841115611c6c57611c6c611bcb565b50506001821b6105be565b5060208310610133831016604e8410600b8410161715611c9a575081810a6105be565b611ca48383611bdf565b805f1904821115611cb757611cb7611bcb565b029392505050565b5f61186260ff841683611c21565b80820281158282048414176105be576105be611bcb565b600181811c90821680611cf857607f821691505b6020821081036118b857634e487b7160e01b5f52602260045260245ffd5b5f60208284031215611d26575f80fd5b815161186281611a0b565b5f805f60608486031215611d43575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611d6c575f80fd5b81518015158114611862575f80fd5b5f82611d9557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611daa575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115611e0e575f81815260208120601f850160051c81016020861015611deb5750805b601f850160051c820191505b81811015611e0a57828155600101611df7565b5050505b505050565b67ffffffffffffffff831115611e2b57611e2b611db1565b611e3f83611e398354611ce4565b83611dc5565b5f601f841160018114611e70575f8515611e595750838201355b5f19600387901b1c1916600186901b178355611ec8565b5f83815260209020601f19861690835b82811015611ea05786850135825560209485019460019092019101611e80565b5086821015611ebc575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b808201808211156105be576105be611bcb565b5f60018201611ef357611ef3611bcb565b5060010190565b818103818111156105be576105be611bcb565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f6f5784516001600160a01b031683529383019391830191600101611f4a565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122090540d0a6c0bf095d3f5769e97da9dcfe8d5ffc683bfc9fe9d0d05009dd18fc264736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101d3575f3560e01c80638f9a55c0116100fd578063c3f93b0111610092578063dedd452011610062578063dedd452014610534578063e0dc354614610548578063ee9a8a8a1461055c578063f1f5943f14610570575f80fd5b8063c3f93b01146104a9578063c8043432146104bd578063d0edc03f146104d1578063dd62ed3e146104f0575f80fd5b8063a6f34383116100cd578063a6f3438314610437578063a9059cbb14610456578063bc205ad314610475578063bf474bed14610494575f80fd5b80638f9a55c0146103b4578063943b4bfa146103c957806395d89b41146103e8578063a2f57f6214610418575f80fd5b806356c8c7ae11610173578063756b7bb711610143578063756b7bb7146103465780637d1db4a51461035a5780637efd4be71461036f5780638da5cb5b1461038e575f80fd5b806356c8c7ae146102d6578063681b9199146102ea57806370a08231146102fe578063715018a614610332575f80fd5b80630faee56f116101ae5780630faee56f1461026557806318160ddd1461028857806323b872dd1461029c578063313ce567146102bb575f80fd5b80630614117a146101de57806306fdde03146101f4578063095ea7b314610236575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101f2610584565b005b3480156101ff575f80fd5b50604080518082019091526008815267536563757265756d60c01b60208201525b60405161022d91906119c0565b60405180910390f35b348015610241575f80fd5b50610255610250366004611a22565b6105ae565b604051901515815260200161022d565b348015610270575f80fd5b5061027a60195481565b60405190815260200161022d565b348015610293575f80fd5b5061027a6105c4565b3480156102a7575f80fd5b506102556102b6366004611a4c565b6105e4565b3480156102c6575f80fd5b506040516009815260200161022d565b3480156102e1575f80fd5b5061022061064b565b3480156102f5575f80fd5b506101f26106d7565b348015610309575f80fd5b5061027a610318366004611a8a565b6001600160a01b03165f9081526001602052604090205490565b34801561033d575f80fd5b506101f2610ac4565b348015610351575f80fd5b50610220610b65565b348015610365575f80fd5b5061027a60165481565b34801561037a575f80fd5b506101f2610389366004611aa5565b610bf5565b348015610399575f80fd5b505f546040516001600160a01b03909116815260200161022d565b3480156103bf575f80fd5b5061027a60175481565b3480156103d4575f80fd5b506101f26103e3366004611aa5565b610c4c565b3480156103f3575f80fd5b50604080518082019091526008815267534543555245554d60c01b6020820152610220565b348015610423575f80fd5b506101f2610432366004611aa5565b610c7c565b348015610442575f80fd5b506101f2610451366004611aa5565b610cac565b348015610461575f80fd5b50610255610470366004611a22565b610d03565b348015610480575f80fd5b506101f261048f366004611abc565b610d0f565b34801561049f575f80fd5b5061027a60185481565b3480156104b4575f80fd5b50610220610e66565b3480156104c8575f80fd5b50610220610e75565b3480156104dc575f80fd5b506101f26104eb366004611b38565b610e82565b3480156104fb575f80fd5b5061027a61050a366004611abc565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561053f575f80fd5b50610220610ed3565b348015610553575f80fd5b50610220610ee0565b348015610567575f80fd5b506101f2610eef565b34801561057b575f80fd5b506101f2610f96565b6004546001600160a01b0316336001600160a01b0316146105a3575f80fd5b6105ac47610fe7565b565b5f6105ba33848461101e565b5060015b92915050565b5f6105d16009600a611cbf565b6105df90633b9aca00611ccd565b905090565b5f6105f0848484611141565b610641843361063c85604051806060016040528060288152602001611f91602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061163c565b61101e565b5060019392505050565b6009805461065890611ce4565b80601f016020809104026020016040519081016040528092919081815260200182805461068490611ce4565b80156106cf5780601f106106a6576101008083540402835291602001916106cf565b820191905f5260205f20905b8154815290600101906020018083116106b257829003601f168201915b505050505081565b5f546001600160a01b031633146107355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b54600160a01b900460ff161561078f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161072c565b600b805460ff60b01b1916600160b01b179055600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556107eb913091906107dd90600990611cbf565b61063c90633b9aca00611ccd565b600a5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085f9190611d16565b6001600160a01b031663c9c6539630600a5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e29190611d16565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561092c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109509190611d16565b600b80546001600160a01b039283166001600160a01b0319909116179055600a541663f305d7194730610997816001600160a01b03165f9081526001602052604090205490565b5f806109aa5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a10573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a359190611d31565b5050600b54600a5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610a8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aae9190611d5c565b50600b805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610b1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161072c565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b606060088054610b7490611ce4565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba090611ce4565b8015610beb5780601f10610bc257610100808354040283529160200191610beb565b820191905f5260205f20905b815481529060010190602001808311610bce57829003601f168201915b5050505050905090565b6004546001600160a01b0316336001600160a01b031614610c14575f80fd5b80612710610c246009600a611cbf565b610c3290633b9aca00611ccd565b610c3c9190611d7b565b610c469190611ccd565b60185550565b6004546001600160a01b0316336001600160a01b031614610c6b575f80fd5b60028110610c77575f80fd5b601255565b6004546001600160a01b0316336001600160a01b031614610c9b575f80fd5b60028110610ca7575f80fd5b601355565b6004546001600160a01b0316336001600160a01b031614610ccb575f80fd5b80612710610cdb6009600a611cbf565b610ce990633b9aca00611ccd565b610cf39190611d7b565b610cfd9190611ccd565b60195550565b5f6105ba338484611141565b6004546001600160a01b0316336001600160a01b031614610d2e575f80fd5b6001600160a01b038216610d845760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161072c565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610dc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dec9190611d9a565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e609190611d5c565b50505050565b606060098054610b7490611ce4565b6007805461065890611ce4565b6004546001600160a01b0316336001600160a01b031614610ea1575f80fd5b6007610eae868883611e13565b506008610ebc848683611e13565b506009610eca828483611e13565b50505050505050565b6008805461065890611ce4565b606060078054610b7490611ce4565b6004546001600160a01b0316336001600160a01b031614610f0e575f80fd5b610f1a6009600a611cbf565b610f2890633b9aca00611ccd565b601655610f376009600a611cbf565b610f4590633b9aca00611ccd565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610f756009600a611cbf565b610f8390633b9aca00611ccd565b60405190815260200160405180910390a1565b6004546001600160a01b0316336001600160a01b031614610fb5575f80fd5b305f908152600160205260409020548015610fd357610fd381611674565b478015610fe357610fe381610fe7565b5050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fe3573d5f803e3d5ffd5b6001600160a01b0383166110805760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072c565b6001600160a01b0382166110e15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161072c565b6001600160a01b0382166112075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161072c565b5f81116112685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161072c565b5f80546001600160a01b0385811691161480159061129357505f546001600160a01b03848116911614155b156114ff576112c460646112be600d54600c54116112b3576010546112b7565b6012545b85906117e4565b90611869565b600b549091506001600160a01b0385811691161480156112f25750600a546001600160a01b03848116911614155b801561131657506001600160a01b0383165f9081526003602052604090205460ff16155b156113fc5760165482111561136d5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161072c565b6017548261138f856001600160a01b03165f9081526001602052604090205490565b6113999190611ecf565b11156113e75760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161072c565b600c8054905f6113f683611ee2565b91905055505b600b546001600160a01b03848116911614801561142257506001600160a01b0384163014155b1561144f5761144c60646112be600e54600c5411611442576011546112b7565b60135485906117e4565b90505b305f90815260016020526040902054600b54600160a81b900460ff161580156114855750600b546001600160a01b038581169116145b801561149a5750600b54600160b01b900460ff165b80156114a7575060185481115b80156114b65750600f54600c54115b156114fd576114d86114d3846114ce846019546118aa565b6118aa565b611674565b4780156114fb576114f26114ed476005611869565b6118be565b6114fb47610fe7565b505b505b801561157757305f9081526001602052604090205461151e90826118f5565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061156e9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546115999083611953565b6001600160a01b0385165f908152600160205260409020556115dc6115be8383611953565b6001600160a01b0385165f90815260016020526040902054906118f5565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116258585611953565b60405190815260200160405180910390a350505050565b5f818484111561165f5760405162461bcd60e51b815260040161072c91906119c0565b505f61166b8486611efa565b95945050505050565b600b805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106116ba576116ba611f0d565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611711573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117359190611d16565b8160018151811061174857611748611f0d565b6001600160a01b039283166020918202929092010152600a5461176e913091168461101e565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a69085905f90869030904290600401611f21565b5f604051808303815f87803b1580156117bd575f80fd5b505af11580156117cf573d5f803e3d5ffd5b5050600b805460ff60a81b1916905550505050565b5f825f036117f357505f6105be565b5f6117fe8385611ccd565b90508261180b8583611d7b565b146118625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161072c565b9392505050565b5f61186283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611994565b5f8183116118b85782611862565b50919050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fe3573d5f803e3d5ffd5b5f806119018385611ecf565b9050838110156118625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161072c565b5f61186283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061163c565b5f81836119b45760405162461bcd60e51b815260040161072c91906119c0565b505f61166b8486611d7b565b5f6020808352835180828501525f5b818110156119eb578581018301518582016040015282016119cf565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a1f575f80fd5b50565b5f8060408385031215611a33575f80fd5b8235611a3e81611a0b565b946020939093013593505050565b5f805f60608486031215611a5e575f80fd5b8335611a6981611a0b565b92506020840135611a7981611a0b565b929592945050506040919091013590565b5f60208284031215611a9a575f80fd5b813561186281611a0b565b5f60208284031215611ab5575f80fd5b5035919050565b5f8060408385031215611acd575f80fd5b8235611ad881611a0b565b91506020830135611ae881611a0b565b809150509250929050565b5f8083601f840112611b03575f80fd5b50813567ffffffffffffffff811115611b1a575f80fd5b602083019150836020828501011115611b31575f80fd5b9250929050565b5f805f805f8060608789031215611b4d575f80fd5b863567ffffffffffffffff80821115611b64575f80fd5b611b708a838b01611af3565b90985096506020890135915080821115611b88575f80fd5b611b948a838b01611af3565b90965094506040890135915080821115611bac575f80fd5b50611bb989828a01611af3565b979a9699509497509295939492505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c1957815f1904821115611bff57611bff611bcb565b80851615611c0c57918102915b93841c9390800290611be4565b509250929050565b5f82611c2f575060016105be565b81611c3b57505f6105be565b8160018114611c515760028114611c5b57611c77565b60019150506105be565b60ff841115611c6c57611c6c611bcb565b50506001821b6105be565b5060208310610133831016604e8410600b8410161715611c9a575081810a6105be565b611ca48383611bdf565b805f1904821115611cb757611cb7611bcb565b029392505050565b5f61186260ff841683611c21565b80820281158282048414176105be576105be611bcb565b600181811c90821680611cf857607f821691505b6020821081036118b857634e487b7160e01b5f52602260045260245ffd5b5f60208284031215611d26575f80fd5b815161186281611a0b565b5f805f60608486031215611d43575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611d6c575f80fd5b81518015158114611862575f80fd5b5f82611d9557634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611daa575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115611e0e575f81815260208120601f850160051c81016020861015611deb5750805b601f850160051c820191505b81811015611e0a57828155600101611df7565b5050505b505050565b67ffffffffffffffff831115611e2b57611e2b611db1565b611e3f83611e398354611ce4565b83611dc5565b5f601f841160018114611e70575f8515611e595750838201355b5f19600387901b1c1916600186901b178355611ec8565b5f83815260209020601f19861690835b82811015611ea05786850135825560209485019460019092019101611e80565b5086821015611ebc575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b808201808211156105be576105be611bcb565b5f60018201611ef357611ef3611bcb565b5060010190565b818103818111156105be576105be611bcb565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f6f5784516001600160a01b031683529383019391830191600101611f4a565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122090540d0a6c0bf095d3f5769e97da9dcfe8d5ffc683bfc9fe9d0d05009dd18fc264736f6c63430008150033

Deployed Bytecode Sourcemap

4231:10408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9380:137;;;;;;;;;;;;;:::i;:::-;;9882:83;;;;;;;;;;-1:-1:-1;9952:5:0;;;;;;;;;;;;-1:-1:-1;;;9952:5:0;;;;9882:83;;;;;;;:::i;:::-;;;;;;;;10721:161;;;;;;;;;;-1:-1:-1;10721:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10721:161:0;1023:187:1;6084:49:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;6084:49:0;1215:177:1;10161:95:0;;;;;;;;;;;;;:::i;10891:313::-;;;;;;;;;;-1:-1:-1;10891:313:0;;;;;:::i;:::-;;:::i;10070:83::-;;;;;;;;;;-1:-1:-1;10070:83:0;;5710:1;2000:36:1;;1988:2;1973:18;10070:83:0;1858:184:1;4774:33:0;;;;;;;;;;;;;:::i;6618:672::-;;;;;;;;;;;;;:::i;10265:119::-;;;;;;;;;;-1:-1:-1;10265:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10358:18:0;10331:7;10358:18;;;:9;:18;;;;;;;10265:119;1769:148;;;;;;;;;;;;;:::i;8406:116::-;;;;;;;;;;;;;:::i;5901:53::-;;;;;;;;;;;;;;;;9700:174;;;;;;;;;;-1:-1:-1;9700:174:0;;;;;:::i;:::-;;:::i;1555:79::-;;;;;;;;;;-1:-1:-1;1593:7:0;1620:6;1555:79;;-1:-1:-1;;;;;1620:6:0;;;2630:51:1;;2618:2;2603:18;1555:79:0;2484:203:1;5962:53:0;;;;;;;;;;;;;;;;7517:166;;;;;;;;;;-1:-1:-1;7517:166:0;;;;;:::i;:::-;;:::i;9974:87::-;;;;;;;;;;-1:-1:-1;10046:7:0;;;;;;;;;;;;-1:-1:-1;;;10046:7:0;;;;9974:87;;7691:168;;;;;;;;;;-1:-1:-1;7691:168:0;;;;;:::i;:::-;;:::i;9525:167::-;;;;;;;;;;-1:-1:-1;9525:167:0;;;;;:::i;:::-;;:::i;10393:::-;;;;;;;;;;-1:-1:-1;10393:167:0;;;;;:::i;:::-;;:::i;8652:331::-;;;;;;;;;;-1:-1:-1;8652:331:0;;;;;:::i;:::-;;:::i;6023:54::-;;;;;;;;;;;;;;;;8530:114;;;;;;;;;;;;;:::i;4693:33::-;;;;;;;;;;;;;:::i;7867:407::-;;;;;;;;;;-1:-1:-1;7867:407:0;;;;;:::i;:::-;;:::i;10569:143::-;;;;;;;;;;-1:-1:-1;10569:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;10677:18:0;;;10650:7;10677:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10569:143;4733:34;;;;;;;;;;;;;:::i;8284:114::-;;;;;;;;;;;;;:::i;7298:211::-;;;;;;;;;;;;;:::i;8991:384::-;;;;;;;;;;;;;:::i;9380:137::-;9444:19;;-1:-1:-1;;;;;9444:19:0;424:10;-1:-1:-1;;;;;9430:33:0;;9422:42;;;;;;9469:43;9490:21;9469:20;:43::i;:::-;9380:137::o;10721:161::-;10796:4;10813:39;424:10;10836:7;10845:6;10813:8;:39::i;:::-;-1:-1:-1;10870:4:0;10721:161;;;;;:::o;10161:95::-;10214:7;5766:14;5710:1;5766:2;:14;:::i;:::-;5753:27;;:10;:27;:::i;:::-;10234:14;;10161:95;:::o;10891:313::-;10989:4;11006:36;11016:6;11024:9;11035:6;11006:9;:36::i;:::-;11053:121;11062:6;424:10;11084:89;11122:6;11084:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11084:19:0;;;;;;:11;:19;;;;;;;;424:10;11084:33;;;;;;;;;;:37;:89::i;:::-;11053:8;:121::i;:::-;-1:-1:-1;11192:4:0;10891:313;;;;;:::o;4774:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6618:672::-;1682:6;;-1:-1:-1;;;;;1682:6:0;424:10;1682:22;1674:67;;;;-1:-1:-1;;;1674:67:0;;6728:2:1;1674:67:0;;;6710:21:1;;;6747:18;;;6740:30;6806:34;6786:18;;;6779:62;6858:18;;1674:67:0;;;;;;;;;6683:11:::1;::::0;-1:-1:-1;;;6683:11:0;::::1;;;6682:12;6674:47;;;::::0;-1:-1:-1;;;6674:47:0;;7089:2:1;6674:47:0::1;::::0;::::1;7071:21:1::0;7128:2;7108:18;;;7101:30;7167:25;7147:18;;;7140:53;7210:18;;6674:47:0::1;6887:347:1::0;6674:47:0::1;6732:11;:18:::0;;-1:-1:-1;;;;6732:18:0::1;-1:-1:-1::0;;;6732:18:0::1;::::0;;6761:15:::1;:80:::0;;-1:-1:-1;;;;;;6761:80:0::1;6798:42;6761:80:::0;;::::1;::::0;;6852:58:::1;::::0;6869:4:::1;::::0;6798:42;5766:14:::1;::::0;5710:1:::1;::::0;5766:14:::1;:::i;:::-;5753:27;::::0;:10:::1;:27;:::i;6852:58::-;6955:15;;;;;;;;;-1:-1:-1::0;;;;;6955:15:0::1;-1:-1:-1::0;;;;;6955:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6937:55:0::1;;7001:4;7008:15;;;;;;;;;-1:-1:-1::0;;;;;7008:15:0::1;-1:-1:-1::0;;;;;7008:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6937:94;::::0;-1:-1:-1;;;;;;6937:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7725:15:1;;;6937:94:0::1;::::0;::::1;7707:34:1::0;7777:15;;7757:18;;;7750:43;7642:18;;6937:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6921:13;:110:::0;;-1:-1:-1;;;;;6921:110:0;;::::1;-1:-1:-1::0;;;;;;6921:110:0;;::::1;;::::0;;7042:15:::1;::::0;::::1;:31;7081:21;7112:4;7118:24;7112:4:::0;-1:-1:-1;;;;;10358:18:0;10331:7;10358:18;;;:9;:18;;;;;;;10265:119;7118:24:::1;7143:1;7145::::0;7147:7:::1;1593::::0;1620:6;-1:-1:-1;;;;;1620:6:0;;1555:79;7147:7:::1;7042:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;7042:129:0;;;-1:-1:-1;;;;;8163:15:1;;;7042:129:0::1;::::0;::::1;8145:34:1::0;8195:18;;;8188:34;;;;8238:18;;;8231:34;;;;8281:18;;;8274:34;8345:15;;;8324:19;;;8317:44;7155:15:0::1;8377:19:1::0;;;8370:35;8079:19;;7042:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;7189:13:0::1;::::0;7220:15:::1;::::0;7182:71:::1;::::0;-1:-1:-1;;;7182:71:0;;-1:-1:-1;;;;;7220:15:0;;::::1;7182:71;::::0;::::1;8901:51:1::0;-1:-1:-1;;8968:18:1;;;8961:34;7189:13:0;::::1;::::0;-1:-1:-1;7182:29:0::1;::::0;8874:18:1;;7182:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7264:11:0::1;:18:::0;;-1:-1:-1;;;;7264:18:0::1;-1:-1:-1::0;;;7264:18:0::1;::::0;;6618:672::o;1769:148::-;1682:6;;-1:-1:-1;;;;;1682:6:0;424:10;1682:22;1674:67;;;;-1:-1:-1;;;1674:67:0;;6728:2:1;1674:67:0;;;6710:21:1;;;6747:18;;;6740:30;6806:34;6786:18;;;6779:62;6858:18;;1674:67:0;6526:356:1;1674:67:0;1876:1:::1;1860:6:::0;;1839:40:::1;::::0;-1:-1:-1;;;;;1860:6:0;;::::1;::::0;1839:40:::1;::::0;1876:1;;1839:40:::1;1907:1;1890:19:::0;;-1:-1:-1;;;;;;1890:19:0::1;::::0;;1769:148::o;8406:116::-;8461:13;8494:20;8487:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8406:116;:::o;9700:174::-;9791:19;;-1:-1:-1;;;;;9791:19:0;424:10;-1:-1:-1;;;;;9777:33:0;;9769:42;;;;;;9860:6;9852:5;5766:14;5710:1;5766:2;:14;:::i;:::-;5753:27;;:10;:27;:::i;:::-;9842:15;;;;:::i;:::-;:24;;;;:::i;:::-;9822:17;:44;-1:-1:-1;9700:174:0:o;7517:166::-;7597:19;;-1:-1:-1;;;;;7597:19:0;424:10;-1:-1:-1;;;;;7583:33:0;;7575:42;;;;;;7642:1;7634:7;:9;7626:18;;;;;;7653:14;:22;7517:166::o;7691:168::-;7772:19;;-1:-1:-1;;;;;7772:19:0;424:10;-1:-1:-1;;;;;7758:33:0;;7750:42;;;;;;7817:1;7809:7;:9;7801:18;;;;;;7828:15;:23;7691:168::o;9525:167::-;9615:19;;-1:-1:-1;;;;;9615:19:0;424:10;-1:-1:-1;;;;;9601:33:0;;9593:42;;;;;;9678:6;9670:5;5766:14;5710:1;5766:2;:14;:::i;:::-;5753:27;;:10;:27;:::i;:::-;9660:15;;;;:::i;:::-;:24;;;;:::i;:::-;9646:11;:38;-1:-1:-1;9525:167:0:o;10393:::-;10471:4;10488:42;424:10;10512:9;10523:6;10488:9;:42::i;8652:331::-;8751:19;;-1:-1:-1;;;;;8751:19:0;424:10;-1:-1:-1;;;;;8737:33:0;;8729:42;;;;;;-1:-1:-1;;;;;8790:20:0;;8782:59;;;;-1:-1:-1;;;8782:59:0;;9712:2:1;8782:59:0;;;9694:21:1;9751:2;9731:18;;;9724:30;9790:28;9770:18;;;9763:56;9836:18;;8782:59:0;9510:350:1;8782:59:0;8879:39;;-1:-1:-1;;;8879:39:0;;8912:4;8879:39;;;2630:51:1;8852:24:0;;-1:-1:-1;;;;;8879:24:0;;;;;2603:18:1;;8879:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8929:46;;-1:-1:-1;;;8929:46:0;;-1:-1:-1;;;;;8919:32:1;;;8929:46:0;;;8901:51:1;8968:18;;;8961:34;;;8852:66:0;;-1:-1:-1;8929:23:0;;;;;;8874:18:1;;8929:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8718:265;8652:331;;:::o;8530:114::-;8584:13;8617:19;8610:26;;;;;:::i;4693:33::-;;;;;;;:::i;7867:407::-;8087:19;;-1:-1:-1;;;;;8087:19:0;424:10;-1:-1:-1;;;;;8072:34:0;;8064:43;;;;;;8120:19;:42;8142:20;;8120:19;:42;:::i;:::-;-1:-1:-1;8173:20:0;:44;8196:21;;8173:20;:44;:::i;:::-;-1:-1:-1;8228:19:0;:42;8250:20;;8228:19;:42;:::i;:::-;;7867:407;;;;;;:::o;4733:34::-;;;;;;;:::i;8284:114::-;8338:13;8371:19;8364:26;;;;;:::i;7298:211::-;7372:19;;-1:-1:-1;;;;;7372:19:0;424:10;-1:-1:-1;;;;;7358:33:0;;7350:42;;;;;;5766:14;5710:1;5766:2;:14;:::i;:::-;5753:27;;:10;:27;:::i;:::-;7403:12;:22;5766:14;5710:1;5766:2;:14;:::i;:::-;5753:27;;:10;:27;:::i;:::-;7436:14;:22;7474:27;5766:14;5710:1;5766:2;:14;:::i;:::-;5753:27;;:10;:27;:::i;:::-;7474;;1361:25:1;;;1349:2;1334:18;7474:27:0;;;;;;;7298:211::o;8991:384::-;9074:19;;-1:-1:-1;;;;;9074:19:0;424:10;-1:-1:-1;;;;;9060:33:0;;9052:42;;;;;;9144:4;9105:20;10358:18;;;:9;:18;;;;;;9164:14;;9161:73;;9192:30;9209:12;9192:16;:30::i;:::-;9263:21;9298:12;;9295:73;;9324:32;9345:10;9324:20;:32::i;:::-;9041:334;;8991:384::o;12151:109::-;12216:19;;:36;;-1:-1:-1;;;;;12216:19:0;;;;:36;;;;;12245:6;;12216:19;:36;:19;:36;12245:6;12216:19;:36;;;;;;;;;;;;;;;;;;;11213:335;-1:-1:-1;;;;;11306:19:0;;11298:68;;;;-1:-1:-1;;;11298:68:0;;12446:2:1;11298:68:0;;;12428:21:1;12485:2;12465:18;;;12458:30;12524:34;12504:18;;;12497:62;-1:-1:-1;;;12575:18:1;;;12568:34;12619:19;;11298:68:0;12244:400:1;11298:68:0;-1:-1:-1;;;;;11385:21:0;;11377:68;;;;-1:-1:-1;;;11377:68:0;;12851:2:1;11377:68:0;;;12833:21:1;12890:2;12870:18;;;12863:30;12929:34;12909:18;;;12902:62;-1:-1:-1;;;12980:18:1;;;12973:32;13022:19;;11377:68:0;12649:398:1;11377:68:0;-1:-1:-1;;;;;11456:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11508:32;;1361:25:1;;;11508:32:0;;1334:18:1;11508:32:0;;;;;;;11213:335;;;:::o;12305:2020::-;-1:-1:-1;;;;;12393:18:0;;12385:68;;;;-1:-1:-1;;;12385:68:0;;13254:2:1;12385:68:0;;;13236:21:1;13293:2;13273:18;;;13266:30;13332:34;13312:18;;;13305:62;-1:-1:-1;;;13383:18:1;;;13376:35;13428:19;;12385:68:0;13052:401:1;12385:68:0;-1:-1:-1;;;;;12472:16:0;;12464:64;;;;-1:-1:-1;;;12464:64:0;;13660:2:1;12464:64:0;;;13642:21:1;13699:2;13679:18;;;13672:30;13738:34;13718:18;;;13711:62;-1:-1:-1;;;13789:18:1;;;13782:33;13832:19;;12464:64:0;13458:399:1;12464:64:0;12556:1;12547:6;:10;12539:64;;;;-1:-1:-1;;;12539:64:0;;14064:2:1;12539:64:0;;;14046:21:1;14103:2;14083:18;;;14076:30;14142:34;14122:18;;;14115:62;-1:-1:-1;;;14193:18:1;;;14186:39;14242:19;;12539:64:0;13862:405:1;12539:64:0;12614:17;1620:6;;-1:-1:-1;;;;;12648:15:0;;;1620:6;;12648:15;;;;:32;;-1:-1:-1;1593:7:0;1620:6;-1:-1:-1;;;;;12667:13:0;;;1620:6;;12667:13;;12648:32;12644:1325;;;12709:103;12808:3;12709:94;12739:31;;12721:17;;:49;12720:82;;12787:15;;12720:82;;;12772:14;;12720:82;12709:6;;:10;:94::i;:::-;:98;;:103::i;:::-;12841:13;;12697:115;;-1:-1:-1;;;;;;12833:21:0;;;12841:13;;12833:21;:55;;;;-1:-1:-1;12872:15:0;;-1:-1:-1;;;;;12858:30:0;;;12872:15;;12858:30;;12833:55;:83;;;;-1:-1:-1;;;;;;12894:22:0;;;;;;:18;:22;;;;;;;;12892:24;12833:83;12829:321;;;12956:12;;12946:6;:22;;12938:60;;;;-1:-1:-1;;;12938:60:0;;14474:2:1;12938:60:0;;;14456:21:1;14513:2;14493:18;;;14486:30;14552:27;14532:18;;;14525:55;14597:18;;12938:60:0;14272:349:1;12938:60:0;13051:14;;13041:6;13025:13;13035:2;-1:-1:-1;;;;;10358:18:0;10331:7;10358:18;;;:9;:18;;;;;;;10265:119;13025:13;:22;;;;:::i;:::-;:40;;13017:79;;;;-1:-1:-1;;;13017:79:0;;14958:2:1;13017:79:0;;;14940:21:1;14997:2;14977:18;;;14970:30;15036:28;15016:18;;;15009:56;15082:18;;13017:79:0;14756:350:1;13017:79:0;13115:17;:19;;;:17;:19;;;:::i;:::-;;;;;;12829:321;13175:13;;-1:-1:-1;;;;;13169:19:0;;;13175:13;;13169:19;:43;;;;-1:-1:-1;;;;;;13192:20:0;;13207:4;13192:20;;13169:43;13166:201;;;13245:106;13347:3;13245:97;13275:32;;13257:17;;:50;13256:85;;13325:16;;13256:85;;;13309:15;;13245:6;;:10;:97::i;:106::-;13233:118;;13166:201;13432:4;13383:28;10358:18;;;:9;:18;;;;;;13458:6;;-1:-1:-1;;;13458:6:0;;;;13457:7;:32;;;;-1:-1:-1;13476:13:0;;-1:-1:-1;;;;;13468:21:0;;;13476:13;;13468:21;13457:32;:47;;;;-1:-1:-1;13493:11:0;;-1:-1:-1;;;13493:11:0;;;;13457:47;:89;;;;;13529:17;;13508:20;:38;13457:89;:139;;;;;13568:28;;13550:17;;:46;13457:139;13453:505;;;13617:67;13634:49;13638:6;13645:37;13649:20;13670:11;;13645:3;:37::i;:::-;13634:3;:49::i;:::-;13617:16;:67::i;:::-;13732:21;13775:22;;13772:171;;13807:48;13826:28;:21;13852:1;13826:25;:28::i;:::-;13807:18;:48::i;:::-;13878:43;13899:21;13878:20;:43::i;:::-;13598:360;13453:505;12682:1287;12644:1325;13984:11;;13981:161;;14052:4;14034:24;;;;:9;:24;;;;;;:39;;14063:9;14034:28;:39::i;:::-;14027:4;14009:24;;;;:9;:24;;;;;;;:64;;;;14091:39;;-1:-1:-1;;;;;14091:39:0;;;;;;;14120:9;1361:25:1;;1349:2;1334:18;;1215:177;14091:39:0;;;;;;;;13981:161;-1:-1:-1;;;;;14168:15:0;;;;;;:9;:15;;;;;;:27;;14188:6;14168:19;:27::i;:::-;-1:-1:-1;;;;;14152:15:0;;;;;;:9;:15;;;;;:43;14220:40;14238:21;:6;14249:9;14238:10;:21::i;:::-;-1:-1:-1;;;;;14220:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;14206:13:0;;;;;;;:9;:13;;;;;:54;;;;14276:41;;;14295:21;:6;14306:9;14295:10;:21::i;:::-;14276:41;;1361:25:1;;;1349:2;1334:18;14276:41:0;;;;;;;12374:1951;12305:2020;;;:::o;3441:190::-;3527:7;3563:12;3555:6;;;;3547:29;;;;-1:-1:-1;;;3547:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3587:9:0;3599:5;3603:1;3599;:5;:::i;:::-;3587:17;3441:190;-1:-1:-1;;;;;3441:190:0:o;11556:483::-;5155:6;:13;;-1:-1:-1;;;;5155:13:0;-1:-1:-1;;;5155:13:0;;;11658:16:::1;::::0;;11672:1:::1;11658:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11658:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11658:16:0::1;11634:40;;11703:4;11685;11690:1;11685:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11685:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11729:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11729:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11685:7;;11729:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11719:4;11724:1;11719:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11719:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11794:15:::1;::::0;11762:62:::1;::::0;11779:4:::1;::::0;11794:15:::1;11812:11:::0;11762:8:::1;:62::i;:::-;11835:15;::::0;:196:::1;::::0;-1:-1:-1;;;11835:196:0;;-1:-1:-1;;;;;11835:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11916:11;;11835:15:::1;::::0;11958:4;;11985::::1;::::0;12005:15:::1;::::0;11835:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5191:6:0;:14;;-1:-1:-1;;;;5191:14:0;;;-1:-1:-1;;;;11556:483:0:o;3639:246::-;3697:7;3721:1;3726;3721:6;3717:47;;-1:-1:-1;3751:1:0;3744:8;;3717:47;3774:9;3786:5;3790:1;3786;:5;:::i;:::-;3774:17;-1:-1:-1;3819:1:0;3810:5;3814:1;3774:17;3810:5;:::i;:::-;:10;3802:56;;;;-1:-1:-1;;;3802:56:0;;16703:2:1;3802:56:0;;;16685:21:1;16742:2;16722:18;;;16715:30;16781:34;16761:18;;;16754:62;-1:-1:-1;;;16832:18:1;;;16825:31;16873:19;;3802:56:0;16501:397:1;3802:56:0;3876:1;3639:246;-1:-1:-1;;;3639:246:0:o;3893:132::-;3951:7;3978:39;3982:1;3985;3978:39;;;;;;;;;;;;;;;;;:3;:39::i;14333:98::-;14390:7;14417:1;14415;:3;14414:9;;14422:1;14414:9;;;-1:-1:-1;14420:1:0;14333:98;-1:-1:-1;14333:98:0:o;12044:99::-;12107:11;;:28;;-1:-1:-1;;;;;12107:11:0;;;;:28;;;;;12128:6;;12107:11;:28;:11;:28;12128:6;12107:11;:28;;;;;;;;;;;;;;;;;;;3110:179;3168:7;;3200:5;3204:1;3200;:5;:::i;:::-;3188:17;;3229:1;3224;:6;;3216:46;;;;-1:-1:-1;;;3216:46:0;;17105:2:1;3216:46:0;;;17087:21:1;17144:2;17124:18;;;17117:30;17183:29;17163:18;;;17156:57;17230:18;;3216:46:0;16903:351:1;3297:136:0;3355:7;3382:43;3386:1;3389;3382:43;;;;;;;;;;;;;;;;;:3;:43::i;4033:189::-;4119:7;4154:12;4147:5;4139:28;;;;-1:-1:-1;;;4139:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4178:9:0;4190:5;4194:1;4190;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2299:180::-;2358:6;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;-1:-1:-1;2450:23:1;;2299:180;-1:-1:-1;2299:180:1:o;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:348::-;3137:8;3147:6;3201:3;3194:4;3186:6;3182:17;3178:27;3168:55;;3219:1;3216;3209:12;3168:55;-1:-1:-1;3242:20:1;;3285:18;3274:30;;3271:50;;;3317:1;3314;3307:12;3271:50;3354:4;3346:6;3342:17;3330:29;;3406:3;3399:4;3390:6;3382;3378:19;3374:30;3371:39;3368:59;;;3423:1;3420;3413:12;3368:59;3085:348;;;;;:::o;3438:1010::-;3551:6;3559;3567;3575;3583;3591;3644:2;3632:9;3623:7;3619:23;3615:32;3612:52;;;3660:1;3657;3650:12;3612:52;3700:9;3687:23;3729:18;3770:2;3762:6;3759:14;3756:34;;;3786:1;3783;3776:12;3756:34;3825:59;3876:7;3867:6;3856:9;3852:22;3825:59;:::i;:::-;3903:8;;-1:-1:-1;3799:85:1;-1:-1:-1;3991:2:1;3976:18;;3963:32;;-1:-1:-1;4007:16:1;;;4004:36;;;4036:1;4033;4026:12;4004:36;4075:61;4128:7;4117:8;4106:9;4102:24;4075:61;:::i;:::-;4155:8;;-1:-1:-1;4049:87:1;-1:-1:-1;4243:2:1;4228:18;;4215:32;;-1:-1:-1;4259:16:1;;;4256:36;;;4288:1;4285;4278:12;4256:36;;4327:61;4380:7;4369:8;4358:9;4354:24;4327:61;:::i;:::-;3438:1010;;;;-1:-1:-1;3438:1010:1;;-1:-1:-1;3438:1010:1;;4407:8;;3438:1010;-1:-1:-1;;;3438:1010:1:o;4453:127::-;4514:10;4509:3;4505:20;4502:1;4495:31;4545:4;4542:1;4535:15;4569:4;4566:1;4559:15;4585:422;4674:1;4717:5;4674:1;4731:270;4752:7;4742:8;4739:21;4731:270;;;4811:4;4807:1;4803:6;4799:17;4793:4;4790:27;4787:53;;;4820:18;;:::i;:::-;4870:7;4860:8;4856:22;4853:55;;;4890:16;;;;4853:55;4969:22;;;;4929:15;;;;4731:270;;;4735:3;4585:422;;;;;:::o;5012:806::-;5061:5;5091:8;5081:80;;-1:-1:-1;5132:1:1;5146:5;;5081:80;5180:4;5170:76;;-1:-1:-1;5217:1:1;5231:5;;5170:76;5262:4;5280:1;5275:59;;;;5348:1;5343:130;;;;5255:218;;5275:59;5305:1;5296:10;;5319:5;;;5343:130;5380:3;5370:8;5367:17;5364:43;;;5387:18;;:::i;:::-;-1:-1:-1;;5443:1:1;5429:16;;5458:5;;5255:218;;5557:2;5547:8;5544:16;5538:3;5532:4;5529:13;5525:36;5519:2;5509:8;5506:16;5501:2;5495:4;5492:12;5488:35;5485:77;5482:159;;;-1:-1:-1;5594:19:1;;;5626:5;;5482:159;5673:34;5698:8;5692:4;5673:34;:::i;:::-;5743:6;5739:1;5735:6;5731:19;5722:7;5719:32;5716:58;;;5754:18;;:::i;:::-;5792:20;;5012:806;-1:-1:-1;;;5012:806:1:o;5823:140::-;5881:5;5910:47;5951:4;5941:8;5937:19;5931:4;5910:47;:::i;5968:168::-;6041:9;;;6072;;6089:15;;;6083:22;;6069:37;6059:71;;6110:18;;:::i;6141:380::-;6220:1;6216:12;;;;6263;;;6284:61;;6338:4;6330:6;6326:17;6316:27;;6284:61;6391:2;6383:6;6380:14;6360:18;6357:38;6354:161;;6437:10;6432:3;6428:20;6425:1;6418:31;6472:4;6469:1;6462:15;6500:4;6497:1;6490:15;7239:251;7309:6;7362:2;7350:9;7341:7;7337:23;7333:32;7330:52;;;7378:1;7375;7368:12;7330:52;7410:9;7404:16;7429:31;7454:5;7429:31;:::i;8416:306::-;8504:6;8512;8520;8573:2;8561:9;8552:7;8548:23;8544:32;8541:52;;;8589:1;8586;8579:12;8541:52;8618:9;8612:16;8602:26;;8668:2;8657:9;8653:18;8647:25;8637:35;;8712:2;8701:9;8697:18;8691:25;8681:35;;8416:306;;;;;:::o;9006:277::-;9073:6;9126:2;9114:9;9105:7;9101:23;9097:32;9094:52;;;9142:1;9139;9132:12;9094:52;9174:9;9168:16;9227:5;9220:13;9213:21;9206:5;9203:32;9193:60;;9249:1;9246;9239:12;9288:217;9328:1;9354;9344:132;;9398:10;9393:3;9389:20;9386:1;9379:31;9433:4;9430:1;9423:15;9461:4;9458:1;9451:15;9344:132;-1:-1:-1;9490:9:1;;9288:217::o;9865:184::-;9935:6;9988:2;9976:9;9967:7;9963:23;9959:32;9956:52;;;10004:1;10001;9994:12;9956:52;-1:-1:-1;10027:16:1;;9865:184;-1:-1:-1;9865:184:1:o;10054:127::-;10115:10;10110:3;10106:20;10103:1;10096:31;10146:4;10143:1;10136:15;10170:4;10167:1;10160:15;10312:545;10414:2;10409:3;10406:11;10403:448;;;10450:1;10475:5;10471:2;10464:17;10520:4;10516:2;10506:19;10590:2;10578:10;10574:19;10571:1;10567:27;10561:4;10557:38;10626:4;10614:10;10611:20;10608:47;;;-1:-1:-1;10649:4:1;10608:47;10704:2;10699:3;10695:12;10692:1;10688:20;10682:4;10678:31;10668:41;;10759:82;10777:2;10770:5;10767:13;10759:82;;;10822:17;;;10803:1;10792:13;10759:82;;;10763:3;;;10403:448;10312:545;;;:::o;11033:1206::-;11157:18;11152:3;11149:27;11146:53;;;11179:18;;:::i;:::-;11208:94;11298:3;11258:38;11290:4;11284:11;11258:38;:::i;:::-;11252:4;11208:94;:::i;:::-;11328:1;11353:2;11348:3;11345:11;11370:1;11365:616;;;;12025:1;12042:3;12039:93;;;-1:-1:-1;12098:19:1;;;12085:33;12039:93;-1:-1:-1;;10990:1:1;10986:11;;;10982:24;10978:29;10968:40;11014:1;11010:11;;;10965:57;12145:78;;11338:895;;11365:616;10259:1;10252:14;;;10296:4;10283:18;;-1:-1:-1;;11401:17:1;;;11502:9;11524:229;11538:7;11535:1;11532:14;11524:229;;;11627:19;;;11614:33;11599:49;;11734:4;11719:20;;;;11687:1;11675:14;;;;11554:12;11524:229;;;11528:3;11781;11772:7;11769:16;11766:159;;;11905:1;11901:6;11895:3;11889;11886:1;11882:11;11878:21;11874:34;11870:39;11857:9;11852:3;11848:19;11835:33;11831:79;11823:6;11816:95;11766:159;;;11968:1;11962:3;11959:1;11955:11;11951:19;11945:4;11938:33;11338:895;;;11033:1206;;;:::o;14626:125::-;14691:9;;;14712:10;;;14709:36;;;14725:18;;:::i;15111:135::-;15150:3;15171:17;;;15168:43;;15191:18;;:::i;:::-;-1:-1:-1;15238:1:1;15227:13;;15111:135::o;15251:128::-;15318:9;;;15339:11;;;15336:37;;;15353:18;;:::i;15384:127::-;15445:10;15440:3;15436:20;15433:1;15426:31;15476:4;15473:1;15466:15;15500:4;15497:1;15490:15;15516:980;15778:4;15826:3;15815:9;15811:19;15857:6;15846:9;15839:25;15883:2;15921:6;15916:2;15905:9;15901:18;15894:34;15964:3;15959:2;15948:9;15944:18;15937:31;15988:6;16023;16017:13;16054:6;16046;16039:22;16092:3;16081:9;16077:19;16070:26;;16131:2;16123:6;16119:15;16105:29;;16152:1;16162:195;16176:6;16173:1;16170:13;16162:195;;;16241:13;;-1:-1:-1;;;;;16237:39:1;16225:52;;16332:15;;;;16297:12;;;;16273:1;16191:9;16162:195;;;-1:-1:-1;;;;;;;16413:32:1;;;;16408:2;16393:18;;16386:60;-1:-1:-1;;;16477:3:1;16462:19;16455:35;16374:3;15516:980;-1:-1:-1;;;15516:980:1:o

Swarm Source

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