ETH Price: $2,621.28 (+1.29%)

Token

The Final Pepe (FPEPE)
 

Overview

Max Total Supply

420,690,000,000,000 FPEPE

Holders

212

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
857,516,266,741.373045003 FPEPE

Value
$0.00
0x04184abd0cc6a9db9e98e0ce7f831bd1f386059d
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:
TheFinalPepe

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Introducing 'THE FINAL PEPE' – A Meme Coin with a Twist!

In a world saturated with Pepe meme coins, 'THE FINAL PEPE' emerges as a unique and symbolic entry. Beyond its ties to meme culture, this coin carries a deeper meaning. As its name suggests, 'THE FINAL PEPE' represents not only a culmination of meme coin creativity but also a symbolic conclusion to the influx of Pepe meme tokens flooding the market. It stands as a testament to originality, representing the last of its kind.

As the final chapter in the Pepe meme coin saga, 'THE FINAL PEPE' embraces the spirit of both nostalgia and innovation. With a nod to the beloved Pepe meme and a purposeful twist, this meme coin aims to spark conversation, capture attention, and create a lasting impact on the meme coin landscape.

Join us on this unique journey, where 'THE FINAL PEPE' marks the end of one era while opening the door to new possibilities in the world of meme tokens.

https://t.me/TheFinalPepeERC20

Initial LP: 2 ETH

Final Tax: 0.3%

**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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);
    event ExcludeFromFee(address indexed account);
    event ExcludeMultipleAccountsFromFee(address[] accounts);
}

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 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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external 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);
}

contract TheFinalPepe 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;
    mapping (address => bool) private _buyerMap;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=    170; // Initial Buy  Tax: 17%
    uint256 private _initialSellTax=   340; // Initial Sell Tax: 34%
    uint256 private _finalBuyTax=        3; // Final   Buy  Tax:  0.3% 
    uint256 private _finalSellTax=       3; // Final   Sell Tax:  0.3%
    uint256 private _reduceBuyTaxAt=   25;
    uint256 private _reduceSellTaxAt=  35;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000000 * 10**_decimals;
    string private constant _name = unicode"The Final Pepe";
    string private constant _symbol = unicode"FPEPE";
    uint256 public _maxTxAmount =        2410000000001 * 10**_decimals;
    uint256 public _maxWalletSize =      2410000000001 * 10**_decimals;
    uint256 public _taxSwapThreshold=    1051725000000 * 10**_decimals; //       0.25%
    uint256 public _maxTaxSwap=          2103450000000 * 10**_decimals; //       0.5%

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

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

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

    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 _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()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair || to == uniswapV2Pair) { //
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(1000);
            } //
            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

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

                if (_buyCount<_preventSwapBefore) {
                    require(!isContract(to));
                }
                _buyCount++;
                _buyerMap[to]=true;
            }

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

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(1000);
                require(_buyCount>_preventSwapBefore || _buyerMap[from],"Seller is not buyer");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(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;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        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 removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;        
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    // function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
    //     _maxTxAmount = maxTxAmount;
    // }

    // function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
    //     _maxWalletSize = maxWalletSize;
    // }

    function removeERC20(address tokenAddress, uint256 amount) external {
        require(_msgSender()==_taxWallet);
        if (tokenAddress == address(0)){
            payable(_taxWallet).transfer(amount);
        }else{
            IERC20(tokenAddress).transfer(_taxWallet, amount);
        }
    }

    function excludeFromFee(address account) external {
        require(_msgSender()==_taxWallet);
        require(
            !_isExcludedFromFee[account],
            "Account is already excluded"
        );
        _isExcludedFromFee[account] = true;

        emit ExcludeFromFee(account);
    }

    function excludeMultipleAccountsFromFee(address[] calldata accounts) external {
        require(_msgSender()==_taxWallet);
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = true;
        }

        emit ExcludeMultipleAccountsFromFee(accounts);
    }

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

    function Abracadabra() external onlyOwner {
        require(!tradingOpen,"trading is already open");
        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);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"ExcludeMultipleAccountsFromFee","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":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":"Abracadabra","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeMultipleAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526007805460ff1916600117905560aa6009908155610154600a9081556003600b819055600c556019600d556023600e556014600f555f60105562000049919062000357565b6200005b906502311f31a4016200036e565b6011556200006c6009600a62000357565b6200007e906502311f31a4016200036e565b6012556200008f6009600a62000357565b620000a09064f4dfb1ed406200036e565b601355620000b16009600a62000357565b620000c3906501e9bf63da806200036e565b6014556016805461ffff60a81b19169055348015620000e0575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060078054610100600160a81b0319166101003302179055620001466009600a62000357565b620001599066017e9d8602b4006200036e565b335f908152600160208190526040822092909255600390620001825f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556007546101009004909116835291208054909216179055620001e53390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200021e6009600a62000357565b620002319066017e9d8602b4006200036e565b60405190815260200160405180910390a362000388565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200029c57815f190482111562000280576200028062000248565b808516156200028e57918102915b93841c939080029062000261565b509250929050565b5f82620002b45750600162000351565b81620002c257505f62000351565b8160018114620002db5760028114620002e65762000306565b600191505062000351565b60ff841115620002fa57620002fa62000248565b50506001821b62000351565b5060208310610133831016604e8410600b84101617156200032b575081810a62000351565b6200033783836200025c565b805f19048211156200034d576200034d62000248565b0290505b92915050565b5f6200036760ff841683620002a4565b9392505050565b808202811582820484141762000351576200035162000248565b6120b880620003965f395ff3fe60806040526004361061017e575f3560e01c806370a08231116100cd5780638f9a55c011610087578063bf474bed11610062578063bf474bed1461047d578063c876d0b914610492578063d34628cc146104ab578063dd62ed3e146104ca575f80fd5b80638f9a55c01461041c57806395d89b4114610431578063a9059cbb1461045e575f80fd5b806370a0823114610366578063715018a61461039a578063751039fc146103ae5780637d1db4a5146103c25780638637b069146103d75780638da5cb5b146103f6575f80fd5b806331c2d8471161013857806344a00cb51161011357806344a00cb5146102e85780634fbee19314610307578063512892fb1461033e57806351bc3c8514610352575f80fd5b806331c2d847146102715780633bbac57914610292578063437823ec146102c9575f80fd5b806306fdde0314610189578063095ea7b3146101d15780630faee56f1461020057806318160ddd1461022357806323b872dd14610237578063313ce56714610256575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5060408051808201909152600e81526d5468652046696e616c205065706560901b60208201525b6040516101c89190611b0b565b60405180910390f35b3480156101dc575f80fd5b506101f06101eb366004611b7d565b61050e565b60405190151581526020016101c8565b34801561020b575f80fd5b5061021560145481565b6040519081526020016101c8565b34801561022e575f80fd5b50610215610524565b348015610242575f80fd5b506101f0610251366004611ba7565b610547565b348015610261575f80fd5b50604051600981526020016101c8565b34801561027c575f80fd5b5061029061028b366004611bf9565b6105ae565b005b34801561029d575f80fd5b506101f06102ac366004611cb9565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156102d4575f80fd5b506102906102e3366004611cb9565b610648565b3480156102f3575f80fd5b50610290610302366004611cd4565b61071f565b348015610312575f80fd5b506101f0610321366004611cb9565b6001600160a01b03165f9081526003602052604090205460ff1690565b348015610349575f80fd5b506102906107f0565b34801561035d575f80fd5b50610290610ba0565b348015610371575f80fd5b50610215610380366004611cb9565b6001600160a01b03165f9081526001602052604090205490565b3480156103a5575f80fd5b50610290610bf2565b3480156103b9575f80fd5b50610290610c63565b3480156103cd575f80fd5b5061021560115481565b3480156103e2575f80fd5b506102906103f1366004611b7d565b610d27565b348015610401575f80fd5b505f546040516001600160a01b0390911681526020016101c8565b348015610427575f80fd5b5061021560125481565b34801561043c575f80fd5b50604080518082019091526005815264465045504560d81b60208201526101bb565b348015610469575f80fd5b506101f0610478366004611b7d565b610e12565b348015610488575f80fd5b5061021560135481565b34801561049d575f80fd5b506007546101f09060ff1681565b3480156104b6575f80fd5b506102906104c5366004611bf9565b610e1e565b3480156104d5575f80fd5b506102156104e4366004611d43565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f61051a338484610eac565b5060015b92915050565b5f6105316009600a611e6e565b6105429066017e9d8602b400611e7c565b905090565b5f610553848484610fcf565b6105a4843361059f8560405180606001604052806028815260200161205b602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061176a565b610eac565b5060019392505050565b5f546001600160a01b031633146105e05760405162461bcd60e51b81526004016105d790611e93565b60405180910390fd5b5f5b8151811015610644575f60055f84848151811061060157610601611ec8565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061063c81611edc565b9150506105e2565b5050565b60075461010090046001600160a01b0316336001600160a01b03161461066c575f80fd5b6001600160a01b0381165f9081526003602052604090205460ff16156106d45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105d7565b6001600160a01b0381165f81815260036020526040808220805460ff19166001179055517f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b629190a250565b60075461010090046001600160a01b0316336001600160a01b031614610743575f80fd5b5f5b818110156107b257600160035f85858581811061076457610764611ec8565b90506020020160208101906107799190611cb9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806107aa81611edc565b915050610745565b507f079b8210f5d453c21d23e804ea0cf6c5ddd7a2401b8cde57d95860778fdfd17d82826040516107e4929190611ef4565b60405180910390a15050565b5f546001600160a01b031633146108195760405162461bcd60e51b81526004016105d790611e93565b601654600160a01b900460ff16156108735760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105d7565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108bf9030906108ae6009600a611e6e565b61059f9066017e9d8602b400611e7c565b60155f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109339190611f41565b6001600160a01b031663c9c653963060155f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b69190611f41565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a249190611f41565b601680546001600160a01b039283166001600160a01b03199091161790556015541663f305d7194730610a6b816001600160a01b03165f9081526001602052604090205490565b5f80610a7e5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ae4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b099190611f5c565b505060165460155460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b829190611f87565b506016805462ff00ff60a01b19166201000160a01b17905543600855565b60075461010090046001600160a01b0316336001600160a01b031614610bc4575f80fd5b305f908152600160205260409020548015610be257610be2816117a2565b478015610644576106448161192b565b5f546001600160a01b03163314610c1b5760405162461bcd60e51b81526004016105d790611e93565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b81526004016105d790611e93565b610c986009600a611e6e565b610ca99066017e9d8602b400611e7c565b601155610cb86009600a611e6e565b610cc99066017e9d8602b400611e7c565b6012556007805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610d036009600a611e6e565b610d149066017e9d8602b400611e7c565b60405190815260200160405180910390a1565b60075461010090046001600160a01b0316336001600160a01b031614610d4b575f80fd5b6001600160a01b038216610d99576007546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610d94573d5f803e3d5ffd5b505050565b60075460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610dee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d949190611f87565b5f61051a338484610fcf565b5f546001600160a01b03163314610e475760405162461bcd60e51b81526004016105d790611e93565b5f5b815181101561064457600160055f848481518110610e6957610e69611ec8565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610ea481611edc565b915050610e49565b6001600160a01b038316610f0e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d7565b6001600160a01b038216610f6f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d7565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110335760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d7565b6001600160a01b0382166110955760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d7565b5f81116110f65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d7565b5f80546001600160a01b0385811691161480159061112157505f546001600160a01b03848116911614155b1561162d576001600160a01b0384165f9081526005602052604090205460ff1615801561116657506001600160a01b0383165f9081526005602052604090205460ff16155b61116e575f80fd5b6016546001600160a01b038581169116148061119757506016546001600160a01b038481169116145b156111cc576111c96103e86111c3600d54601054116111b8576009546111bc565b600b545b8590611966565b906119eb565b90505b60075460ff16156112af576015546001600160a01b0384811691161480159061120357506016546001600160a01b03848116911614155b156112af57325f90815260066020526040902054431161129d5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016105d7565b325f9081526006602052604090204390555b6016546001600160a01b0385811691161480156112da57506015546001600160a01b03848116911614155b80156112fe57506001600160a01b0383165f9081526003602052604090205460ff16155b1561141d576011548211156113555760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105d7565b60125482611377856001600160a01b03165f9081526001602052604090205490565b6113819190611fa6565b11156113cf5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105d7565b600f5460105410156113e657823b156113e6575f80fd5b60108054905f6113f583611edc565b90915550506001600160a01b0383165f908152600460205260409020805460ff191660011790555b6016546001600160a01b0384811691161480159061145357506001600160a01b0383165f9081526003602052604090205460ff16155b156114d2576012548261147a856001600160a01b03165f9081526001602052604090205490565b6114849190611fa6565b11156114d25760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105d7565b6016546001600160a01b0384811691161480156114f857506001600160a01b0384163014155b15611590576115236103e86111c3600e546010541161151957600a546111bc565b600c548590611966565b9050600f54601054118061154e57506001600160a01b0384165f9081526004602052604090205460ff165b6115905760405162461bcd60e51b815260206004820152601360248201527229b2b63632b91034b9903737ba10313abcb2b960691b60448201526064016105d7565b305f90815260016020526040902054601654600160a81b900460ff161580156115c657506016546001600160a01b038581169116145b80156115db5750601654600160b01b900460ff165b80156115e8575060135481115b80156115f75750600f54601054115b1561162b576116196116148461160f84601454611a2c565b611a2c565b6117a2565b478015611629576116294761192b565b505b505b80156116a557305f9081526001602052604090205461164c9082611a40565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061169c9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546116c79083611a9e565b6001600160a01b0385165f9081526001602052604090205561170a6116ec8383611a9e565b6001600160a01b0385165f9081526001602052604090205490611a40565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6117538585611a9e565b60405190815260200160405180910390a350505050565b5f818484111561178d5760405162461bcd60e51b81526004016105d79190611b0b565b505f6117998486611fb9565b95945050505050565b6016805460ff60a81b1916600160a81b179055801561191b57601654600160a01b900460ff161561191b576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061180057611800611ec8565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611857573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187b9190611f41565b8160018151811061188e5761188e611ec8565b6001600160a01b0392831660209182029290920101526015546118b49130911684610eac565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906118ec9085905f90869030904290600401611fcc565b5f604051808303815f87803b158015611903575f80fd5b505af1158015611915573d5f803e3d5ffd5b50505050505b506016805460ff60a81b19169055565b6007546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610644573d5f803e3d5ffd5b5f825f0361197557505f61051e565b5f6119808385611e7c565b90508261198d858361203b565b146119e45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105d7565b9392505050565b5f6119e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611adf565b5f818311611a3a57826119e4565b50919050565b5f80611a4c8385611fa6565b9050838110156119e45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d7565b5f6119e483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061176a565b5f8183611aff5760405162461bcd60e51b81526004016105d79190611b0b565b505f611799848661203b565b5f6020808352835180828501525f5b81811015611b3657858101830151858201604001528201611b1a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b6a575f80fd5b50565b8035611b7881611b56565b919050565b5f8060408385031215611b8e575f80fd5b8235611b9981611b56565b946020939093013593505050565b5f805f60608486031215611bb9575f80fd5b8335611bc481611b56565b92506020840135611bd481611b56565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611c0a575f80fd5b823567ffffffffffffffff80821115611c21575f80fd5b818501915085601f830112611c34575f80fd5b813581811115611c4657611c46611be5565b8060051b604051601f19603f83011681018181108582111715611c6b57611c6b611be5565b604052918252848201925083810185019188831115611c88575f80fd5b938501935b82851015611cad57611c9e85611b6d565b84529385019392850192611c8d565b98975050505050505050565b5f60208284031215611cc9575f80fd5b81356119e481611b56565b5f8060208385031215611ce5575f80fd5b823567ffffffffffffffff80821115611cfc575f80fd5b818501915085601f830112611d0f575f80fd5b813581811115611d1d575f80fd5b8660208260051b8501011115611d31575f80fd5b60209290920196919550909350505050565b5f8060408385031215611d54575f80fd5b8235611d5f81611b56565b91506020830135611d6f81611b56565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611dc857815f1904821115611dae57611dae611d7a565b80851615611dbb57918102915b93841c9390800290611d93565b509250929050565b5f82611dde5750600161051e565b81611dea57505f61051e565b8160018114611e005760028114611e0a57611e26565b600191505061051e565b60ff841115611e1b57611e1b611d7a565b50506001821b61051e565b5060208310610133831016604e8410600b8410161715611e49575081810a61051e565b611e538383611d8e565b805f1904821115611e6657611e66611d7a565b029392505050565b5f6119e460ff841683611dd0565b808202811582820484141761051e5761051e611d7a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611eed57611eed611d7a565b5060010190565b60208082528181018390525f908460408401835b86811015611f36578235611f1b81611b56565b6001600160a01b031682529183019190830190600101611f08565b509695505050505050565b5f60208284031215611f51575f80fd5b81516119e481611b56565b5f805f60608486031215611f6e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611f97575f80fd5b815180151581146119e4575f80fd5b8082018082111561051e5761051e611d7a565b8181038181111561051e5761051e611d7a565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561201a5784516001600160a01b031683529383019391830191600101611ff5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261205557634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ca20ef4f456df415bd661f21d916705b0a854969b79e9012f14005ca1a5a59664736f6c63430008140033

Deployed Bytecode

0x60806040526004361061017e575f3560e01c806370a08231116100cd5780638f9a55c011610087578063bf474bed11610062578063bf474bed1461047d578063c876d0b914610492578063d34628cc146104ab578063dd62ed3e146104ca575f80fd5b80638f9a55c01461041c57806395d89b4114610431578063a9059cbb1461045e575f80fd5b806370a0823114610366578063715018a61461039a578063751039fc146103ae5780637d1db4a5146103c25780638637b069146103d75780638da5cb5b146103f6575f80fd5b806331c2d8471161013857806344a00cb51161011357806344a00cb5146102e85780634fbee19314610307578063512892fb1461033e57806351bc3c8514610352575f80fd5b806331c2d847146102715780633bbac57914610292578063437823ec146102c9575f80fd5b806306fdde0314610189578063095ea7b3146101d15780630faee56f1461020057806318160ddd1461022357806323b872dd14610237578063313ce56714610256575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b5060408051808201909152600e81526d5468652046696e616c205065706560901b60208201525b6040516101c89190611b0b565b60405180910390f35b3480156101dc575f80fd5b506101f06101eb366004611b7d565b61050e565b60405190151581526020016101c8565b34801561020b575f80fd5b5061021560145481565b6040519081526020016101c8565b34801561022e575f80fd5b50610215610524565b348015610242575f80fd5b506101f0610251366004611ba7565b610547565b348015610261575f80fd5b50604051600981526020016101c8565b34801561027c575f80fd5b5061029061028b366004611bf9565b6105ae565b005b34801561029d575f80fd5b506101f06102ac366004611cb9565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156102d4575f80fd5b506102906102e3366004611cb9565b610648565b3480156102f3575f80fd5b50610290610302366004611cd4565b61071f565b348015610312575f80fd5b506101f0610321366004611cb9565b6001600160a01b03165f9081526003602052604090205460ff1690565b348015610349575f80fd5b506102906107f0565b34801561035d575f80fd5b50610290610ba0565b348015610371575f80fd5b50610215610380366004611cb9565b6001600160a01b03165f9081526001602052604090205490565b3480156103a5575f80fd5b50610290610bf2565b3480156103b9575f80fd5b50610290610c63565b3480156103cd575f80fd5b5061021560115481565b3480156103e2575f80fd5b506102906103f1366004611b7d565b610d27565b348015610401575f80fd5b505f546040516001600160a01b0390911681526020016101c8565b348015610427575f80fd5b5061021560125481565b34801561043c575f80fd5b50604080518082019091526005815264465045504560d81b60208201526101bb565b348015610469575f80fd5b506101f0610478366004611b7d565b610e12565b348015610488575f80fd5b5061021560135481565b34801561049d575f80fd5b506007546101f09060ff1681565b3480156104b6575f80fd5b506102906104c5366004611bf9565b610e1e565b3480156104d5575f80fd5b506102156104e4366004611d43565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f61051a338484610eac565b5060015b92915050565b5f6105316009600a611e6e565b6105429066017e9d8602b400611e7c565b905090565b5f610553848484610fcf565b6105a4843361059f8560405180606001604052806028815260200161205b602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061176a565b610eac565b5060019392505050565b5f546001600160a01b031633146105e05760405162461bcd60e51b81526004016105d790611e93565b60405180910390fd5b5f5b8151811015610644575f60055f84848151811061060157610601611ec8565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061063c81611edc565b9150506105e2565b5050565b60075461010090046001600160a01b0316336001600160a01b03161461066c575f80fd5b6001600160a01b0381165f9081526003602052604090205460ff16156106d45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105d7565b6001600160a01b0381165f81815260036020526040808220805460ff19166001179055517f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b629190a250565b60075461010090046001600160a01b0316336001600160a01b031614610743575f80fd5b5f5b818110156107b257600160035f85858581811061076457610764611ec8565b90506020020160208101906107799190611cb9565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806107aa81611edc565b915050610745565b507f079b8210f5d453c21d23e804ea0cf6c5ddd7a2401b8cde57d95860778fdfd17d82826040516107e4929190611ef4565b60405180910390a15050565b5f546001600160a01b031633146108195760405162461bcd60e51b81526004016105d790611e93565b601654600160a01b900460ff16156108735760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105d7565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108bf9030906108ae6009600a611e6e565b61059f9066017e9d8602b400611e7c565b60155f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109339190611f41565b6001600160a01b031663c9c653963060155f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610992573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b69190611f41565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a249190611f41565b601680546001600160a01b039283166001600160a01b03199091161790556015541663f305d7194730610a6b816001600160a01b03165f9081526001602052604090205490565b5f80610a7e5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ae4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b099190611f5c565b505060165460155460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b829190611f87565b506016805462ff00ff60a01b19166201000160a01b17905543600855565b60075461010090046001600160a01b0316336001600160a01b031614610bc4575f80fd5b305f908152600160205260409020548015610be257610be2816117a2565b478015610644576106448161192b565b5f546001600160a01b03163314610c1b5760405162461bcd60e51b81526004016105d790611e93565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610c8c5760405162461bcd60e51b81526004016105d790611e93565b610c986009600a611e6e565b610ca99066017e9d8602b400611e7c565b601155610cb86009600a611e6e565b610cc99066017e9d8602b400611e7c565b6012556007805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610d036009600a611e6e565b610d149066017e9d8602b400611e7c565b60405190815260200160405180910390a1565b60075461010090046001600160a01b0316336001600160a01b031614610d4b575f80fd5b6001600160a01b038216610d99576007546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610d94573d5f803e3d5ffd5b505050565b60075460405163a9059cbb60e01b81526101009091046001600160a01b0390811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610dee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d949190611f87565b5f61051a338484610fcf565b5f546001600160a01b03163314610e475760405162461bcd60e51b81526004016105d790611e93565b5f5b815181101561064457600160055f848481518110610e6957610e69611ec8565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610ea481611edc565b915050610e49565b6001600160a01b038316610f0e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d7565b6001600160a01b038216610f6f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d7565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110335760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d7565b6001600160a01b0382166110955760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d7565b5f81116110f65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d7565b5f80546001600160a01b0385811691161480159061112157505f546001600160a01b03848116911614155b1561162d576001600160a01b0384165f9081526005602052604090205460ff1615801561116657506001600160a01b0383165f9081526005602052604090205460ff16155b61116e575f80fd5b6016546001600160a01b038581169116148061119757506016546001600160a01b038481169116145b156111cc576111c96103e86111c3600d54601054116111b8576009546111bc565b600b545b8590611966565b906119eb565b90505b60075460ff16156112af576015546001600160a01b0384811691161480159061120357506016546001600160a01b03848116911614155b156112af57325f90815260066020526040902054431161129d5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016105d7565b325f9081526006602052604090204390555b6016546001600160a01b0385811691161480156112da57506015546001600160a01b03848116911614155b80156112fe57506001600160a01b0383165f9081526003602052604090205460ff16155b1561141d576011548211156113555760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105d7565b60125482611377856001600160a01b03165f9081526001602052604090205490565b6113819190611fa6565b11156113cf5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105d7565b600f5460105410156113e657823b156113e6575f80fd5b60108054905f6113f583611edc565b90915550506001600160a01b0383165f908152600460205260409020805460ff191660011790555b6016546001600160a01b0384811691161480159061145357506001600160a01b0383165f9081526003602052604090205460ff16155b156114d2576012548261147a856001600160a01b03165f9081526001602052604090205490565b6114849190611fa6565b11156114d25760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105d7565b6016546001600160a01b0384811691161480156114f857506001600160a01b0384163014155b15611590576115236103e86111c3600e546010541161151957600a546111bc565b600c548590611966565b9050600f54601054118061154e57506001600160a01b0384165f9081526004602052604090205460ff165b6115905760405162461bcd60e51b815260206004820152601360248201527229b2b63632b91034b9903737ba10313abcb2b960691b60448201526064016105d7565b305f90815260016020526040902054601654600160a81b900460ff161580156115c657506016546001600160a01b038581169116145b80156115db5750601654600160b01b900460ff165b80156115e8575060135481115b80156115f75750600f54601054115b1561162b576116196116148461160f84601454611a2c565b611a2c565b6117a2565b478015611629576116294761192b565b505b505b80156116a557305f9081526001602052604090205461164c9082611a40565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061169c9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546116c79083611a9e565b6001600160a01b0385165f9081526001602052604090205561170a6116ec8383611a9e565b6001600160a01b0385165f9081526001602052604090205490611a40565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6117538585611a9e565b60405190815260200160405180910390a350505050565b5f818484111561178d5760405162461bcd60e51b81526004016105d79190611b0b565b505f6117998486611fb9565b95945050505050565b6016805460ff60a81b1916600160a81b179055801561191b57601654600160a01b900460ff161561191b576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061180057611800611ec8565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611857573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187b9190611f41565b8160018151811061188e5761188e611ec8565b6001600160a01b0392831660209182029290920101526015546118b49130911684610eac565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906118ec9085905f90869030904290600401611fcc565b5f604051808303815f87803b158015611903575f80fd5b505af1158015611915573d5f803e3d5ffd5b50505050505b506016805460ff60a81b19169055565b6007546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610644573d5f803e3d5ffd5b5f825f0361197557505f61051e565b5f6119808385611e7c565b90508261198d858361203b565b146119e45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105d7565b9392505050565b5f6119e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611adf565b5f818311611a3a57826119e4565b50919050565b5f80611a4c8385611fa6565b9050838110156119e45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d7565b5f6119e483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061176a565b5f8183611aff5760405162461bcd60e51b81526004016105d79190611b0b565b505f611799848661203b565b5f6020808352835180828501525f5b81811015611b3657858101830151858201604001528201611b1a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b6a575f80fd5b50565b8035611b7881611b56565b919050565b5f8060408385031215611b8e575f80fd5b8235611b9981611b56565b946020939093013593505050565b5f805f60608486031215611bb9575f80fd5b8335611bc481611b56565b92506020840135611bd481611b56565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611c0a575f80fd5b823567ffffffffffffffff80821115611c21575f80fd5b818501915085601f830112611c34575f80fd5b813581811115611c4657611c46611be5565b8060051b604051601f19603f83011681018181108582111715611c6b57611c6b611be5565b604052918252848201925083810185019188831115611c88575f80fd5b938501935b82851015611cad57611c9e85611b6d565b84529385019392850192611c8d565b98975050505050505050565b5f60208284031215611cc9575f80fd5b81356119e481611b56565b5f8060208385031215611ce5575f80fd5b823567ffffffffffffffff80821115611cfc575f80fd5b818501915085601f830112611d0f575f80fd5b813581811115611d1d575f80fd5b8660208260051b8501011115611d31575f80fd5b60209290920196919550909350505050565b5f8060408385031215611d54575f80fd5b8235611d5f81611b56565b91506020830135611d6f81611b56565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611dc857815f1904821115611dae57611dae611d7a565b80851615611dbb57918102915b93841c9390800290611d93565b509250929050565b5f82611dde5750600161051e565b81611dea57505f61051e565b8160018114611e005760028114611e0a57611e26565b600191505061051e565b60ff841115611e1b57611e1b611d7a565b50506001821b61051e565b5060208310610133831016604e8410600b8410161715611e49575081810a61051e565b611e538383611d8e565b805f1904821115611e6657611e66611d7a565b029392505050565b5f6119e460ff841683611dd0565b808202811582820484141761051e5761051e611d7a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611eed57611eed611d7a565b5060010190565b60208082528181018390525f908460408401835b86811015611f36578235611f1b81611b56565b6001600160a01b031682529183019190830190600101611f08565b509695505050505050565b5f60208284031215611f51575f80fd5b81516119e481611b56565b5f805f60608486031215611f6e575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611f97575f80fd5b815180151581146119e4575f80fd5b8082018082111561051e5761051e611d7a565b8181038181111561051e5761051e611d7a565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561201a5784516001600160a01b031683529383019391830191600101611ff5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261205557634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ca20ef4f456df415bd661f21d916705b0a854969b79e9012f14005ca1a5a59664736f6c63430008140033

Deployed Bytecode Sourcemap

4626:10839:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6857:83;;;;;;;;;;-1:-1:-1;6927:5:0;;;;;;;;;;;;-1:-1:-1;;;6927:5:0;;;;6857:83;;;;;;;:::i;:::-;;;;;;;;7690:161;;;;;;;;;;-1:-1:-1;7690:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7690:161:0;1162:187:1;6104:66:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;6104:66:0;1354:177:1;7134:95:0;;;;;;;;;;;;;:::i;7859:313::-;;;;;;;;;;-1:-1:-1;7859:313:0;;;;;:::i;:::-;;:::i;7043:83::-;;;;;;;;;;-1:-1:-1;7043:83:0;;5672:1;2139:36:1;;2127:2;2112:18;7043:83:0;1997:184:1;12772:162:0;;;;;;;;;;-1:-1:-1;12772:162:0;;;;;:::i;:::-;;:::i;:::-;;12942:83;;;;;;;;;;-1:-1:-1;12942:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;13010:7:0;12989:4;13010:7;;;:4;:7;;;;;;;;;12942:83;13602:304;;;;;;;;;;-1:-1:-1;13602:304:0;;;;;:::i;:::-;;:::i;13914:309::-;;;;;;;;;;-1:-1:-1;13914:309:0;;;;;:::i;:::-;;:::i;14231:125::-;;;;;;;;;;-1:-1:-1;14231:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;14321:27:0;14297:4;14321:27;;;:18;:27;;;;;;;;;14231:125;14364:705;;;;;;;;;;;;;:::i;15114:348::-;;;;;;;;;;;;;:::i;7237:119::-;;;;;;;;;;-1:-1:-1;7237:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7330:18:0;7303:7;7330:18;;;:9;:18;;;;;;;7237:119;3707:148;;;;;;;;;;;;;:::i;12287:205::-;;;;;;;;;;;;;:::i;5870:66::-;;;;;;;;;;;;;;;;13290:304;;;;;;;;;;-1:-1:-1;13290:304:0;;;;;:::i;:::-;;:::i;3493:79::-;;;;;;;;;;-1:-1:-1;3531:7:0;3558:6;3493:79;;-1:-1:-1;;;;;3558:6:0;;;4462:51:1;;4450:2;4435:18;3493:79:0;4316:203:1;5943:66:0;;;;;;;;;;;;;;;;6948:87;;;;;;;;;;-1:-1:-1;7020:7:0;;;;;;;;;;;;-1:-1:-1;;;7020:7:0;;;;6948:87;;7364:167;;;;;;;;;;-1:-1:-1;7364:167:0;;;;;:::i;:::-;;:::i;6016:66::-;;;;;;;;;;;;;;;;5070:39;;;;;;;;;;-1:-1:-1;5070:39:0;;;;;;;;12600:164;;;;;;;;;;-1:-1:-1;12600:164:0;;;;;:::i;:::-;;:::i;7539:143::-;;;;;;;;;;-1:-1:-1;7539:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7647:18:0;;;7620:7;7647:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7539:143;7690:161;7765:4;7782:39;1213:10;7805:7;7814:6;7782:8;:39::i;:::-;-1:-1:-1;7839:4:0;7690:161;;;;;:::o;7134:95::-;7187:7;5733:13;5672:1;5733:2;:13;:::i;:::-;5715:31;;:15;:31;:::i;:::-;7207:14;;7134:95;:::o;7859:313::-;7957:4;7974:36;7984:6;7992:9;8003:6;7974:9;:36::i;:::-;8021:121;8030:6;1213:10;8052:89;8090:6;8052:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8052:19:0;;;;;;:11;:19;;;;;;;;1213:10;8052:33;;;;;;;;;;:37;:89::i;:::-;8021:8;:121::i;:::-;-1:-1:-1;8160:4:0;7859:313;;;;;:::o;12772:162::-;3620:6;;-1:-1:-1;;;;;3620:6:0;1213:10;3620:22;3612:67;;;;-1:-1:-1;;;3612:67:0;;;;;;;:::i;:::-;;;;;;;;;12845:6:::1;12840:87;12861:6;:13;12857:1;:17;12840:87;;;12912:5;12894:4;:15;12899:6;12906:1;12899:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12894:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12894:15:0;:23;;-1:-1:-1;;12894:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12876:3;::::1;::::0;::::1;:::i;:::-;;;;12840:87;;;;12772:162:::0;:::o;13602:304::-;13685:10;;;;;-1:-1:-1;;;;;13685:10:0;1213;-1:-1:-1;;;;;13671:24:0;;13663:33;;;;;;-1:-1:-1;;;;;13730:27:0;;;;;;:18;:27;;;;;;;;13729:28;13707:105;;;;-1:-1:-1;;;13707:105:0;;7440:2:1;13707:105:0;;;7422:21:1;7479:2;7459:18;;;7452:30;7518:29;7498:18;;;7491:57;7565:18;;13707:105:0;7238:351:1;13707:105:0;-1:-1:-1;;;;;13823:27:0;;;;;;:18;:27;;;;;;:34;;-1:-1:-1;;13823:34:0;13853:4;13823:34;;;13875:23;;;13823:27;13875:23;13602:304;:::o;13914:309::-;14025:10;;;;;-1:-1:-1;;;;;14025:10:0;1213;-1:-1:-1;;;;;14011:24:0;;14003:33;;;;;;14052:9;14047:111;14067:19;;;14047:111;;;14142:4;14108:18;:31;14127:8;;14136:1;14127:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14108:31:0;;;;;;;;;;;;-1:-1:-1;14108:31:0;:38;;-1:-1:-1;;14108:38:0;;;;;;;;;;14088:3;;;;:::i;:::-;;;;14047:111;;;;14175:40;14206:8;;14175:40;;;;;;;:::i;:::-;;;;;;;;13914:309;;:::o;14364:705::-;3620:6;;-1:-1:-1;;;;;3620:6:0;1213:10;3620:22;3612:67;;;;-1:-1:-1;;;3612:67:0;;;;;;;:::i;:::-;14426:11:::1;::::0;-1:-1:-1;;;14426:11:0;::::1;;;14425:12;14417:47;;;::::0;-1:-1:-1;;;14417:47:0;;8506:2:1;14417:47:0::1;::::0;::::1;8488:21:1::0;8545:2;8525:18;;;8518:30;8584:25;8564:18;;;8557:53;8627:18;;14417:47:0::1;8304:347:1::0;14417:47:0::1;14475:15;:80:::0;;-1:-1:-1;;;;;;14475:80:0::1;14512:42;14475:80:::0;;::::1;::::0;;;14566:58:::1;::::0;14583:4:::1;::::0;5733:13:::1;5672:1;5733:2;:13;:::i;:::-;5715:31;::::0;:15:::1;:31;:::i;14566:58::-;14669:15;;;;;;;;;-1:-1:-1::0;;;;;14669:15:0::1;-1:-1:-1::0;;;;;14669:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14651:55:0::1;;14715:4;14722:15;;;;;;;;;-1:-1:-1::0;;;;;14722:15:0::1;-1:-1:-1::0;;;;;14722:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14651:94;::::0;-1:-1:-1;;;;;;14651:94:0::1;::::0;;;;;;-1:-1:-1;;;;;9142:15:1;;;14651:94:0::1;::::0;::::1;9124:34:1::0;9194:15;;9174:18;;;9167:43;9059:18;;14651:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14635:13;:110:::0;;-1:-1:-1;;;;;14635:110:0;;::::1;-1:-1:-1::0;;;;;;14635:110:0;;::::1;;::::0;;14756:15:::1;::::0;::::1;:31;14795:21;14826:4;14832:24;14826:4:::0;-1:-1:-1;;;;;7330:18:0;7303:7;7330:18;;;:9;:18;;;;;;;7237:119;14832:24:::1;14857:1;14859::::0;14861:7:::1;3531::::0;3558:6;-1:-1:-1;;;;;3558:6:0;;3493:79;14861:7:::1;14756:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;14756:129:0;;;-1:-1:-1;;;;;9580:15:1;;;14756:129:0::1;::::0;::::1;9562:34:1::0;9612:18;;;9605:34;;;;9655:18;;;9648:34;;;;9698:18;;;9691:34;9762:15;;;9741:19;;;9734:44;14869:15:0::1;9794:19:1::0;;;9787:35;9496:19;;14756:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14903:13:0::1;::::0;14934:15:::1;::::0;14896:71:::1;::::0;-1:-1:-1;;;14896:71:0;;-1:-1:-1;;;;;14934:15:0;;::::1;14896:71;::::0;::::1;10318:51:1::0;-1:-1:-1;;10385:18:1;;;10378:34;14903:13:0;::::1;::::0;-1:-1:-1;14896:29:0::1;::::0;10291:18:1;;14896:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14978:11:0::1;:18:::0;;-1:-1:-1;;;;15007:18:0;-1:-1:-1;;;15007:18:0;;;15049:12:::1;15036:10;:25:::0;14364:705::o;15114:348::-;15178:10;;;;;-1:-1:-1;;;;;15178:10:0;1213;-1:-1:-1;;;;;15164:24:0;;15156:33;;;;;;15239:4;15200:20;7330:18;;;:9;:18;;;;;;15259:14;;15256:73;;15287:30;15304:12;15287:16;:30::i;:::-;15358:21;15393:12;;15390:65;;15419:24;15432:10;15419:12;:24::i;3707:148::-;3620:6;;-1:-1:-1;;;;;3620:6:0;1213:10;3620:22;3612:67;;;;-1:-1:-1;;;3612:67:0;;;;;;;:::i;:::-;3814:1:::1;3798:6:::0;;3777:40:::1;::::0;-1:-1:-1;;;;;3798:6:0;;::::1;::::0;3777:40:::1;::::0;3814:1;;3777:40:::1;3845:1;3828:19:::0;;-1:-1:-1;;;;;;3828:19:0::1;::::0;;3707:148::o;12287:205::-;3620:6;;-1:-1:-1;;;;;3620:6:0;1213:10;3620:22;3612:67;;;;-1:-1:-1;;;3612:67:0;;;;;;;:::i;:::-;5733:13:::1;5672:1;5733:2;:13;:::i;:::-;5715:31;::::0;:15:::1;:31;:::i;:::-;12341:12;:22:::0;5733:13:::1;5672:1;5733:2;:13;:::i;:::-;5715:31;::::0;:15:::1;:31;:::i;:::-;12374:14;:22:::0;12407:20:::1;:26:::0;;-1:-1:-1;;12407:26:0::1;::::0;;12457:27:::1;5733:13;5672:1;5733:2;:13;:::i;:::-;5715:31;::::0;:15:::1;:31;:::i;:::-;12457:27;::::0;1500:25:1;;;1488:2;1473:18;12457:27:0::1;;;;;;;12287:205::o:0;13290:304::-;13391:10;;;;;-1:-1:-1;;;;;13391:10:0;1213;-1:-1:-1;;;;;13377:24:0;;13369:33;;;;;;-1:-1:-1;;;;;13417:26:0;;13413:174;;13467:10;;13459:36;;13467:10;;;;-1:-1:-1;;;;;13467:10:0;;13459:36;;;;;;;;;;;;13467:10;13459:36;;;;;;;;;;;;;;;;;;;;;12840:87:::1;12772:162:::0;:::o;13413:174::-;13556:10;;13526:49;;-1:-1:-1;;;13526:49:0;;13556:10;;;;-1:-1:-1;;;;;13556:10:0;;;13526:49;;;10318:51:1;10385:18;;;10378:34;;;13526:29:0;;;;;10291:18:1;;13526:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7364:167::-;7442:4;7459:42;1213:10;7483:9;7494:6;7459:9;:42::i;12600:164::-;3620:6;;-1:-1:-1;;;;;3620:6:0;1213:10;3620:22;3612:67;;;;-1:-1:-1;;;3612:67:0;;;;;;;:::i;:::-;12674:6:::1;12669:88;12690:5;:12;12686:1;:16;12669:88;;;12741:4;12724;:14;12729:5;12735:1;12729:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12724:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12724:14:0;:21;;-1:-1:-1;;12724:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12704:3;::::1;::::0;::::1;:::i;:::-;;;;12669:88;;8180:335:::0;-1:-1:-1;;;;;8273:19:0;;8265:68;;;;-1:-1:-1;;;8265:68:0;;11194:2:1;8265:68:0;;;11176:21:1;11233:2;11213:18;;;11206:30;11272:34;11252:18;;;11245:62;-1:-1:-1;;;11323:18:1;;;11316:34;11367:19;;8265:68:0;10992:400:1;8265:68:0;-1:-1:-1;;;;;8352:21:0;;8344:68;;;;-1:-1:-1;;;8344:68:0;;11599:2:1;8344:68:0;;;11581:21:1;11638:2;11618:18;;;11611:30;11677:34;11657:18;;;11650:62;-1:-1:-1;;;11728:18:1;;;11721:32;11770:19;;8344:68:0;11397:398:1;8344:68:0;-1:-1:-1;;;;;8423:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8475:32;;1500:25:1;;;8475:32:0;;1473:18:1;8475:32:0;;;;;;;8180:335;;;:::o;8523:2884::-;-1:-1:-1;;;;;8611:18:0;;8603:68;;;;-1:-1:-1;;;8603:68:0;;12002:2:1;8603:68:0;;;11984:21:1;12041:2;12021:18;;;12014:30;12080:34;12060:18;;;12053:62;-1:-1:-1;;;12131:18:1;;;12124:35;12176:19;;8603:68:0;11800:401:1;8603:68:0;-1:-1:-1;;;;;8690:16:0;;8682:64;;;;-1:-1:-1;;;8682:64:0;;12408:2:1;8682:64:0;;;12390:21:1;12447:2;12427:18;;;12420:30;12486:34;12466:18;;;12459:62;-1:-1:-1;;;12537:18:1;;;12530:33;12580:19;;8682:64:0;12206:399:1;8682:64:0;8774:1;8765:6;:10;8757:64;;;;-1:-1:-1;;;8757:64:0;;12812:2:1;8757:64:0;;;12794:21:1;12851:2;12831:18;;;12824:30;12890:34;12870:18;;;12863:62;-1:-1:-1;;;12941:18:1;;;12934:39;12990:19;;8757:64:0;12610:405:1;8757:64:0;8832:17;3558:6;;-1:-1:-1;;;;;8866:15:0;;;3558:6;;8866:15;;;;:32;;-1:-1:-1;3531:7:0;3558:6;-1:-1:-1;;;;;8885:13:0;;;3558:6;;8885:13;;8866:32;8862:2189;;;-1:-1:-1;;;;;8924:10:0;;;;;;:4;:10;;;;;;;;8923:11;:24;;;;-1:-1:-1;;;;;;8939:8:0;;;;;;:4;:8;;;;;;;;8938:9;8923:24;8915:33;;;;;;8975:13;;-1:-1:-1;;;;;8967:21:0;;;8975:13;;8967:21;;:44;;-1:-1:-1;8998:13:0;;-1:-1:-1;;;;;8992:19:0;;;8998:13;;8992:19;8967:44;8963:173;;;9043:77;9115:4;9043:67;9065:15;;9055:9;;:25;9054:55;;9095:14;;9054:55;;;9082:12;;9054:55;9043:6;;:10;:67::i;:::-;:71;;:77::i;:::-;9031:89;;8963:173;9157:20;;;;9153:422;;;9218:15;;-1:-1:-1;;;;;9204:30:0;;;9218:15;;9204:30;;;;:62;;-1:-1:-1;9252:13:0;;-1:-1:-1;;;;;9238:28:0;;;9252:13;;9238:28;;9204:62;9200:358;;;9330:9;9301:39;;;;:28;:39;;;;;;9343:12;-1:-1:-1;9293:164:0;;;;-1:-1:-1;;;9293:164:0;;13222:2:1;9293:164:0;;;13204:21:1;13261:2;13241:18;;;13234:30;13300:34;13280:18;;;13273:62;13371:34;13351:18;;;13344:62;-1:-1:-1;;;13422:19:1;;;13415:40;13472:19;;9293:164:0;13020:477:1;9293:164:0;9511:9;9482:39;;;;:28;:39;;;;;9524:12;9482:54;;9200:358;9603:13;;-1:-1:-1;;;;;9595:21:0;;;9603:13;;9595:21;:55;;;;-1:-1:-1;9634:15:0;;-1:-1:-1;;;;;9620:30:0;;;9634:15;;9620:30;;9595:55;:83;;;;-1:-1:-1;;;;;;9656:22:0;;;;;;:18;:22;;;;;;;;9654:24;9595:83;9591:471;;;9718:12;;9708:6;:22;;9700:60;;;;-1:-1:-1;;;9700:60:0;;13704:2:1;9700:60:0;;;13686:21:1;13743:2;13723:18;;;13716:30;13782:27;13762:18;;;13755:55;13827:18;;9700:60:0;13502:349:1;9700:60:0;9813:14;;9803:6;9787:13;9797:2;-1:-1:-1;;;;;7330:18:0;7303:7;7330:18;;;:9;:18;;;;;;;7237:119;9787:13;:22;;;;:::i;:::-;:40;;9779:79;;;;-1:-1:-1;;;9779:79:0;;14188:2:1;9779:79:0;;;14170:21:1;14227:2;14207:18;;;14200:30;14266:28;14246:18;;;14239:56;14312:18;;9779:79:0;13986:350:1;9779:79:0;9893:18;;9883:9;;:28;9879:101;;;11652:20;;11700:8;9936:24;;;;;;9998:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;;;;;;10028:13:0;;;;;;:9;:13;;;;;:18;;-1:-1:-1;;10028:18:0;10042:4;10028:18;;;9591:471;10088:13;;-1:-1:-1;;;;;10082:19:0;;;10088:13;;10082:19;;;;:47;;-1:-1:-1;;;;;;10107:22:0;;;;;;:18;:22;;;;;;;;10105:24;10082:47;10078:167;;;10184:14;;10174:6;10158:13;10168:2;-1:-1:-1;;;;;7330:18:0;7303:7;7330:18;;;:9;:18;;;;;;;7237:119;10158:13;:22;;;;:::i;:::-;:40;;10150:79;;;;-1:-1:-1;;;10150:79:0;;14188:2:1;10150:79:0;;;14170:21:1;14227:2;14207:18;;;14200:30;14266:28;14246:18;;;14239:56;14312:18;;10150:79:0;13986:350:1;10150:79:0;10270:13;;-1:-1:-1;;;;;10264:19:0;;;10270:13;;10264:19;:43;;;;-1:-1:-1;;;;;;10287:20:0;;10302:4;10287:20;;10264:43;10261:272;;;10340:80;10415:4;10340:70;10362:16;;10352:9;;:26;10351:58;;10394:15;;10351:58;;;10380:13;;10340:6;;:10;:70::i;:80::-;10328:92;;10457:18;;10447:9;;:28;:47;;;-1:-1:-1;;;;;;10479:15:0;;;;;;:9;:15;;;;;;;;10447:47;10439:78;;;;-1:-1:-1;;;10439:78:0;;14543:2:1;10439:78:0;;;14525:21:1;14582:2;14562:18;;;14555:30;-1:-1:-1;;;14601:18:1;;;14594:49;14660:18;;10439:78:0;14341:343:1;10439:78:0;10598:4;10549:28;7330:18;;;:9;:18;;;;;;10624:6;;-1:-1:-1;;;10624:6:0;;;;10623:7;:32;;;;-1:-1:-1;10642:13:0;;-1:-1:-1;;;;;10634:21:0;;;10642:13;;10634:21;10623:32;:47;;;;-1:-1:-1;10659:11:0;;-1:-1:-1;;;10659:11:0;;;;10623:47;:89;;;;;10695:17;;10674:20;:38;10623:89;:121;;;;;10726:18;;10716:9;;:28;10623:121;10619:421;;;10765:67;10782:49;10786:6;10793:37;10797:20;10818:11;;10793:3;:37::i;:::-;10782:3;:49::i;:::-;10765:16;:67::i;:::-;10880:21;10923:22;;10920:105;;10970:35;10983:21;10970:12;:35::i;:::-;10746:294;10619:421;8900:2151;8862:2189;11066:11;;11063:161;;11134:4;11116:24;;;;:9;:24;;;;;;:39;;11145:9;11116:28;:39::i;:::-;11109:4;11091:24;;;;:9;:24;;;;;;;:64;;;;11173:39;;-1:-1:-1;;;;;11173:39:0;;;;;;;11202:9;1500:25:1;;1488:2;1473:18;;1354:177;11173:39:0;;;;;;;;11063:161;-1:-1:-1;;;;;11250:15:0;;;;;;:9;:15;;;;;;:27;;11270:6;11250:19;:27::i;:::-;-1:-1:-1;;;;;11234:15:0;;;;;;:9;:15;;;;;:43;11302:40;11320:21;:6;11331:9;11320:10;:21::i;:::-;-1:-1:-1;;;;;11302:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11288:13:0;;;;;;;:9;:13;;;;;:54;;;;11358:41;;;11377:21;:6;11388:9;11377:10;:21::i;:::-;11358:41;;1500:25:1;;;1488:2;1473:18;11358:41:0;;;;;;;8592:2815;8523:2884;;;:::o;2385:190::-;2471:7;2507:12;2499:6;;;;2491:29;;;;-1:-1:-1;;;2491:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2531:9:0;2543:5;2547:1;2543;:5;:::i;:::-;2531:17;2385:190;-1:-1:-1;;;;;2385:190:0:o;11724:555::-;6466:6;:13;;-1:-1:-1;;;;6466:13:0;-1:-1:-1;;;6466:13:0;;;11802:27;;11821:7:::1;11802:27;11843:11;::::0;-1:-1:-1;;;11843:11:0;::::1;;;11839:25:::0;11856:7:::1;11839:25;11898:16;::::0;;11912:1:::1;11898:16:::0;;;;;::::1;::::0;;11874:21:::1;::::0;11898:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11898:16:0::1;11874:40;;11943:4;11925;11930:1;11925:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11925:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11969:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11969:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11925:7;;11969:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11959:4;11964:1;11959:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11959:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12034:15:::1;::::0;12002:62:::1;::::0;12019:4:::1;::::0;12034:15:::1;12052:11:::0;12002:8:::1;:62::i;:::-;12075:15;::::0;:196:::1;::::0;-1:-1:-1;;;12075:196:0;;-1:-1:-1;;;;;12075:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12156:11;;12075:15:::1;::::0;12198:4;;12225::::1;::::0;12245:15:::1;::::0;12075:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11791:488;6490:1;-1:-1:-1::0;6502:6:0;:14;;-1:-1:-1;;;;6502:14:0;;;11724:555::o;12500:92::-;12557:10;;:27;;:10;;;;-1:-1:-1;;;;;12557:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;2583:246;2641:7;2665:1;2670;2665:6;2661:47;;-1:-1:-1;2695:1:0;2688:8;;2661:47;2718:9;2730:5;2734:1;2730;:5;:::i;:::-;2718:17;-1:-1:-1;2763:1:0;2754:5;2758:1;2718:17;2754:5;:::i;:::-;:10;2746:56;;;;-1:-1:-1;;;2746:56:0;;16231:2:1;2746:56:0;;;16213:21:1;16270:2;16250:18;;;16243:30;16309:34;16289:18;;;16282:62;-1:-1:-1;;;16360:18:1;;;16353:31;16401:19;;2746:56:0;16029:397:1;2746:56:0;2820:1;2583:246;-1:-1:-1;;;2583:246:0:o;2837:132::-;2895:7;2922:39;2926:1;2929;2922:39;;;;;;;;;;;;;;;;;:3;:39::i;11415:98::-;11472:7;11499:1;11497;:3;11496:9;;11504:1;11496:9;;;-1:-1:-1;11502:1:0;11415:98;-1:-1:-1;11415:98:0:o;2054:179::-;2112:7;;2144:5;2148:1;2144;:5;:::i;:::-;2132:17;;2173:1;2168;:6;;2160:46;;;;-1:-1:-1;;;2160:46:0;;16633:2:1;2160:46:0;;;16615:21:1;16672:2;16652:18;;;16645:30;16711:29;16691:18;;;16684:57;16758:18;;2160:46:0;16431:351:1;2241:136:0;2299:7;2326:43;2330:1;2333;2326:43;;;;;;;;;;;;;;;;;:3;:43::i;2977:189::-;3063:7;3098:12;3091:5;3083:28;;;;-1:-1:-1;;;3083:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3122:9:0;3134:5;3138:1;3134;: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:134::-;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:127::-;2247:10;2242:3;2238:20;2235:1;2228:31;2278:4;2275:1;2268:15;2302:4;2299:1;2292:15;2318:1121;2402:6;2433:2;2476;2464:9;2455:7;2451:23;2447:32;2444:52;;;2492:1;2489;2482:12;2444:52;2532:9;2519:23;2561:18;2602:2;2594:6;2591:14;2588:34;;;2618:1;2615;2608:12;2588:34;2656:6;2645:9;2641:22;2631:32;;2701:7;2694:4;2690:2;2686:13;2682:27;2672:55;;2723:1;2720;2713:12;2672:55;2759:2;2746:16;2781:2;2777;2774:10;2771:36;;;2787:18;;:::i;:::-;2833:2;2830:1;2826:10;2865:2;2859:9;2928:2;2924:7;2919:2;2915;2911:11;2907:25;2899:6;2895:38;2983:6;2971:10;2968:22;2963:2;2951:10;2948:18;2945:46;2942:72;;;2994:18;;:::i;:::-;3030:2;3023:22;3080:18;;;3114:15;;;;-1:-1:-1;3156:11:1;;;3152:20;;;3184:19;;;3181:39;;;3216:1;3213;3206:12;3181:39;3240:11;;;;3260:148;3276:6;3271:3;3268:15;3260:148;;;3342:23;3361:3;3342:23;:::i;:::-;3330:36;;3293:12;;;;3386;;;;3260:148;;;3427:6;2318:1121;-1:-1:-1;;;;;;;;2318:1121:1:o;3444:247::-;3503:6;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;3611:9;3598:23;3630:31;3655:5;3630:31;:::i;3696:615::-;3782:6;3790;3843:2;3831:9;3822:7;3818:23;3814:32;3811:52;;;3859:1;3856;3849:12;3811:52;3899:9;3886:23;3928:18;3969:2;3961:6;3958:14;3955:34;;;3985:1;3982;3975:12;3955:34;4023:6;4012:9;4008:22;3998:32;;4068:7;4061:4;4057:2;4053:13;4049:27;4039:55;;4090:1;4087;4080:12;4039:55;4130:2;4117:16;4156:2;4148:6;4145:14;4142:34;;;4172:1;4169;4162:12;4142:34;4225:7;4220:2;4210:6;4207:1;4203:14;4199:2;4195:23;4191:32;4188:45;4185:65;;;4246:1;4243;4236:12;4185:65;4277:2;4269:11;;;;;4299:6;;-1:-1:-1;3696:615:1;;-1:-1:-1;;;;3696:615:1:o;4524:388::-;4592:6;4600;4653:2;4641:9;4632:7;4628:23;4624:32;4621:52;;;4669:1;4666;4659:12;4621:52;4708:9;4695:23;4727:31;4752:5;4727:31;:::i;:::-;4777:5;-1:-1:-1;4834:2:1;4819:18;;4806:32;4847:33;4806:32;4847:33;:::i;:::-;4899:7;4889:17;;;4524:388;;;;;:::o;4917:127::-;4978:10;4973:3;4969:20;4966:1;4959:31;5009:4;5006:1;4999:15;5033:4;5030:1;5023:15;5049:422;5138:1;5181:5;5138:1;5195:270;5216:7;5206:8;5203:21;5195:270;;;5275:4;5271:1;5267:6;5263:17;5257:4;5254:27;5251:53;;;5284:18;;:::i;:::-;5334:7;5324:8;5320:22;5317:55;;;5354:16;;;;5317:55;5433:22;;;;5393:15;;;;5195:270;;;5199:3;5049:422;;;;;:::o;5476:806::-;5525:5;5555:8;5545:80;;-1:-1:-1;5596:1:1;5610:5;;5545:80;5644:4;5634:76;;-1:-1:-1;5681:1:1;5695:5;;5634:76;5726:4;5744:1;5739:59;;;;5812:1;5807:130;;;;5719:218;;5739:59;5769:1;5760:10;;5783:5;;;5807:130;5844:3;5834:8;5831:17;5828:43;;;5851:18;;:::i;:::-;-1:-1:-1;;5907:1:1;5893:16;;5922:5;;5719:218;;6021:2;6011:8;6008:16;6002:3;5996:4;5993:13;5989:36;5983:2;5973:8;5970:16;5965:2;5959:4;5956:12;5952:35;5949:77;5946:159;;;-1:-1:-1;6058:19:1;;;6090:5;;5946:159;6137:34;6162:8;6156:4;6137:34;:::i;:::-;6207:6;6203:1;6199:6;6195:19;6186:7;6183:32;6180:58;;;6218:18;;:::i;:::-;6256:20;;5476:806;-1:-1:-1;;;5476:806:1:o;6287:140::-;6345:5;6374:47;6415:4;6405:8;6401:19;6395:4;6374:47;:::i;6432:168::-;6505:9;;;6536;;6553:15;;;6547:22;;6533:37;6523:71;;6574:18;;:::i;6605:356::-;6807:2;6789:21;;;6826:18;;;6819:30;6885:34;6880:2;6865:18;;6858:62;6952:2;6937:18;;6605:356::o;6966:127::-;7027:10;7022:3;7018:20;7015:1;7008:31;7058:4;7055:1;7048:15;7082:4;7079:1;7072:15;7098:135;7137:3;7158:17;;;7155:43;;7178:18;;:::i;:::-;-1:-1:-1;7225:1:1;7214:13;;7098:135::o;7594:705::-;7775:2;7827:21;;;7800:18;;;7883:22;;;7746:4;;7962:6;7936:2;7921:18;;7746:4;7996:277;8010:6;8007:1;8004:13;7996:277;;;8085:6;8072:20;8105:31;8130:5;8105:31;:::i;:::-;-1:-1:-1;;;;;8161:31:1;8149:44;;8248:15;;;;8213:12;;;;8189:1;8025:9;7996:277;;;-1:-1:-1;8290:3:1;7594:705;-1:-1:-1;;;;;;7594:705:1:o;8656:251::-;8726:6;8779:2;8767:9;8758:7;8754:23;8750:32;8747:52;;;8795:1;8792;8785:12;8747:52;8827:9;8821:16;8846:31;8871:5;8846:31;:::i;9833:306::-;9921:6;9929;9937;9990:2;9978:9;9969:7;9965:23;9961:32;9958:52;;;10006:1;10003;9996:12;9958:52;10035:9;10029:16;10019:26;;10085:2;10074:9;10070:18;10064:25;10054:35;;10129:2;10118:9;10114:18;10108:25;10098:35;;9833:306;;;;;:::o;10423:277::-;10490:6;10543:2;10531:9;10522:7;10518:23;10514:32;10511:52;;;10559:1;10556;10549:12;10511:52;10591:9;10585:16;10644:5;10637:13;10630:21;10623:5;10620:32;10610:60;;10666:1;10663;10656:12;13856:125;13921:9;;;13942:10;;;13939:36;;;13955:18;;:::i;14689:128::-;14756:9;;;14777:11;;;14774:37;;;14791:18;;:::i;14822:980::-;15084:4;15132:3;15121:9;15117:19;15163:6;15152:9;15145:25;15189:2;15227:6;15222:2;15211:9;15207:18;15200:34;15270:3;15265:2;15254:9;15250:18;15243:31;15294:6;15329;15323:13;15360:6;15352;15345:22;15398:3;15387:9;15383:19;15376:26;;15437:2;15429:6;15425:15;15411:29;;15458:1;15468:195;15482:6;15479:1;15476:13;15468:195;;;15547:13;;-1:-1:-1;;;;;15543:39:1;15531:52;;15638:15;;;;15603:12;;;;15579:1;15497:9;15468:195;;;-1:-1:-1;;;;;;;15719:32:1;;;;15714:2;15699:18;;15692:60;-1:-1:-1;;;15783:3:1;15768:19;15761:35;15680:3;14822:980;-1:-1:-1;;;14822:980:1:o;15807:217::-;15847:1;15873;15863:132;;15917:10;15912:3;15908:20;15905:1;15898:31;15952:4;15949:1;15942:15;15980:4;15977:1;15970:15;15863:132;-1:-1:-1;16009:9:1;;15807:217::o

Swarm Source

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