ETH Price: $2,332.38 (-0.42%)

Token

DeriDex Protocol (DERIDEX)
 

Overview

Max Total Supply

100,000,000 DERIDEX

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,980,000 DERIDEX

Value
$0.00
0x297be156dd2535cd89fd6aa073356e6b3c9b24dd
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:
DeriDexProtocol

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-18
*/

// Telegram : https://t.me/DeriDexProtocolOfficial

//Website : https://DeridexProtocol.com

//Twitter : https://twitter.com/DeriDexProtocol

// SPDX-License-Identifier: MIT

/*

DeriDex Protocol is a Decentralized Derivatives Protocol that supports futures trading, derivatives, cross collateral, swapping and More...


DeriDex Features |💫

🧩Derivatives and Futures trading⚙️

🧩Cross-Collateral:  Traders can deposit majority of supported tokens as collateral for their positions, saving on swap fees🔎♻️

🧩Staking:  DeriDex supports staking to help with the sustainability of the project. Earn Passive Income by staking your tokens in the Farms/Pools and generating rewards with high yield🚜♻️
  
🧩Cross-Margin:  Leverage is distributed across all positions under a single account, allowing for unparalleled capital efficiency⚙️♻️

🧩Website:-  
https://DeriDexprotocol.com 

*/

pragma solidity ^0.8.14;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

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

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

interface DexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        CustomFN[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal CustomFN;

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

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

    modifier Approved() {
        require(isApproved(msg.sender), "!APPROVED"); _;
    }

    function isApproved(address adr) public view returns (bool) {
        return CustomFN[adr];
    }

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

contract DeriDexProtocol is Ownable, IERC20 {
    using SafeMath for uint256;

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    uint8 constant private _decimals = 9;

    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 3 / 100;
    uint256 public _walletMax = _totalSupply * 4 /100;

    string constant private _name = "DeriDex Protocol";
    string constant private _symbol = "DERIDEX";

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
 
    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 0;
    uint256 public RewardFee = 0;
    uint256 public tokenFee = 0;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    bool public takeBuyFee = true;
    bool public takeSellFee = true;
    bool public takeTransferFee = true;

    address private lpWallet;
    address private projectAddress;
    address private devWallet;
    address private nativeWallet;

    DexRouter public router;
    address public pair;
    mapping(address => bool) public isPair;

    uint256 public launchedAt;

    bool public tradingOpen = true;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply * 20 / 10000;

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

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


    constructor() {
        router = DexRouter(routerAddress);
        pair = DexFactory(router.factory()).createPair(router.WETH(), address(this));
        isPair[pair] = true;
        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][address(pair)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[nativeWallet] = true;
        isFeeExempt[routerAddress] = true;

        isTxLimitExempt[nativeWallet] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[routerAddress] = true;

        lpWallet = 0x731934D8c71c0dC4af6e7614Ca8DedF5A3466606;
        projectAddress = 0x731934D8c71c0dC4af6e7614Ca8DedF5A3466606;
        devWallet = 0x731934D8c71c0dC4af6e7614Ca8DedF5A3466606;
        nativeWallet = msg.sender;
         
        isFeeExempt[projectAddress] = true;
        totalFee = liquidityFee.add(marketingFee).add(tokenFee).add(RewardFee);
        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function totalSupply() external view override returns (uint256) {return _totalSupply;}

    function getOwner() external view override returns (address) {return owner();}

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
    }

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (inSwapAndLiquify) {return _basicTransfer(sender, recipient, amount);}
        if(!CustomFN[sender] && !CustomFN[recipient]){
            require(tradingOpen, "");
        }
        if (isPair[recipient] && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold) {marketingAndLiquidity();}
        if (!launched() && isPair[recipient]) {
            require(_balances[sender] > 0, "");
            launch();
        }

        //Exchange tokens
         _balances[sender] = _balances[sender].sub(amount, "");

        if (!isTxLimitExempt[recipient]) {
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? extractFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function extractFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint feeApplicable = 0;
        uint nativeAmount = 0;
        if (isPair[recipient] && takeSellFee) {
            feeApplicable = totalFeeIfSelling.sub(tokenFee);        
        }
        if (isPair[sender] && takeBuyFee) {
            feeApplicable = totalFee.sub(tokenFee);        
        }
        if (!isPair[sender] && !isPair[recipient]){
            if (takeTransferFee){
                feeApplicable = totalFeeIfSelling.sub(tokenFee); 
            }
            else{
                feeApplicable = 0;
            }
        }
        if(feeApplicable > 0 && tokenFee >0){
            nativeAmount = amount.mul(tokenFee).div(100);
            _balances[nativeWallet] = _balances[nativeWallet].add(nativeAmount);
            emit Transfer(sender, nativeWallet, nativeAmount);
        }
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount).sub(nativeAmount);
    }

    function marketingAndLiquidity() internal lockTheSwap {
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee.sub(tokenFee)).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(tokenFee).sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(RewardFee).div(totalETHFee);
        
        (bool tmpSuccess1,) = payable(projectAddress).call{value : amountETHMarketing, gas : 30000}("");
        tmpSuccess1 = false;

        (tmpSuccess1,) = payable(devWallet).call{value : amountETHDev, gas : 30000}("");
        tmpSuccess1 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value : amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                lpWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
    }

    function ChangeFees(uint256 newLiqFee, uint256 newMarketingFee, uint256 newBetFee, uint256 newNativeFee, uint256 extra) public Approved{
        liquidityFee = newLiqFee;
        marketingFee = newMarketingFee;
        RewardFee = newBetFee;
        tokenFee = newNativeFee;
        totalFee = liquidityFee.add(marketingFee).add(RewardFee).add(tokenFee);
        totalFeeIfSelling = totalFee + extra;
    }

    function AllowTrading(address _address, bool status) public onlyOwner{
        CustomFN[_address] = status;
    }

    function changePair(address _address, bool status) public onlyOwner{
        isPair[_address] = status;
    }

    function removeERC20(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        require(tokenAddress != address(this), "Cant remove the native token");
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function removeEther(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"AllowTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBetFee","type":"uint256"},{"internalType":"uint256","name":"newNativeFee","type":"uint256"},{"internalType":"uint256","name":"extra","type":"uint256"}],"name":"ChangeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RewardFee","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":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"changePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"removeEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"takeBuyFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000386009600a620006ce565b62000048906305f5e100620006e6565b60038181556064916200005b91620006e6565b62000067919062000708565b600455606460035460046200007d9190620006e6565b62000089919062000708565b6005556000600a819055600b819055600c819055600d819055600e819055600f55601080546201010162ffffff199091161790556018805463ffff00ff19166201000117905560035461271090620000e3906014620006e6565b620000ef919062000708565b601955348015620000ff57600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600254601480546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001dd91906200072b565b6001600160a01b031663c9c65396601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200072b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d891906200072b565b601580546001600160a01b03199081166001600160a01b0393841690811783556000908152601660209081526040808320805460ff19908116600190811790925530808652600785528386206014548a16875285528386206000199081905588548a16875284872055338087526008808752858820805485168617905591875284872080548416851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054841685179055601380548b1688528588208054851686179055600280548c168952868920805486168717905581548c168952600988528689208054861687179055828952868920805486168717905599548b16885285882080548516861790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037858054851686179055985490991686529285208054821683179055601080546301000000600160b81b03191676731934d8c71c0dc4af6e7614ca8dedf5a34666060000001790556011805473731934d8c71c0dc4af6e7614ca8dedf5a34666069088168117909155601280548816821790558754909616909717909555929091529081527f8189230f5625af31b3f65ecf2899e924169687ba68aec4748544050cca35b8b78054909316909117909155600c54600d54600b54600a54620004f394620004df93928492916200054c811b62000cfd17901c565b6200054c60201b62000cfd1790919060201c565b600e819055600f5560035433600081815260066020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000771565b6000806200055b838562000756565b905083811015620005b25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000612578160001904821115620005f657620005f6620005bb565b808516156200060457918102915b93841c9390800290620005d6565b509250929050565b6000826200062b57506001620005b5565b816200063a57506000620005b5565b81600181146200065357600281146200065e576200067e565b6001915050620005b5565b60ff841115620006725762000672620005bb565b50506001821b620005b5565b5060208310610133831016604e8410600b8410161715620006a3575081810a620005b5565b620006af8383620005d1565b8060001904821115620006c657620006c6620005bb565b029392505050565b6000620006df60ff8416836200061a565b9392505050565b6000816000190483118215151615620007035762000703620005bb565b500290565b6000826200072657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200073e57600080fd5b81516001600160a01b0381168114620005b257600080fd5b600082198211156200076c576200076c620005bb565b500190565b611bf280620007816000396000f3fe6080604052600436106102555760003560e01c8063807c2d9c11610139578063aaf96d4a116100b6578063da00097d1161007a578063da00097d14610702578063dd62ed3e14610723578063e5e31b1314610769578063f0ef821f14610799578063f887ea40146107b3578063ffb54a99146107d357600080fd5b8063aaf96d4a14610681578063bf56b371146106a1578063c9567bf9146106b7578063ca987b0e146106cc578063d14c0915146106e257600080fd5b806395d89b41116100fd57806395d89b41146105db57806398118cb41461060b578063a535598914610621578063a8aa1b3114610641578063a9059cbb1461066157600080fd5b8063807c2d9c146105255780638637b0691461053b578063893d20e81461055b5780638b42507f1461058d5780638da5cb5b146105bd57600080fd5b80633f4218e0116101d25780636b67c4df116101965780636b67c4df1461046f578063705409331461048557806370a08231146104a4578063715018a6146104da578063787a051b146104ef5780637d1db4a51461050f57600080fd5b80633f4218e0146103b057806345599136146103e05780634a74bb02146103f6578063571ac8b014610416578063673448dd1461043657600080fd5b806323b872dd1161021957806323b872dd146103275780632b112e4914610347578063313ce5671461035c578063399c7976146103785780633ec726c81461039a57600080fd5b80630445b6671461026157806306fdde031461028a578063095ea7b3146102cc57806318160ddd146102fc5780631df4ccfc1461031157600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760195481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b5060408051808201909152601081526f11195c9a51195e08141c9bdd1bd8dbdb60821b60208201525b6040516102819190611832565b3480156102d857600080fd5b506102ec6102e736600461189f565b6107ed565b6040519015158152602001610281565b34801561030857600080fd5b50600354610277565b34801561031d57600080fd5b50610277600e5481565b34801561033357600080fd5b506102ec6103423660046118cb565b61085a565b34801561035357600080fd5b5061027761091c565b34801561036857600080fd5b5060405160098152602001610281565b34801561038457600080fd5b5061039861039336600461191a565b61098d565b005b3480156103a657600080fd5b50610277600c5481565b3480156103bc57600080fd5b506102ec6103cb366004611953565b60086020526000908152604090205460ff1681565b3480156103ec57600080fd5b50610277600d5481565b34801561040257600080fd5b506018546102ec9062010000900460ff1681565b34801561042257600080fd5b506102ec610431366004611953565b6109eb565b34801561044257600080fd5b506102ec610451366004611953565b6001600160a01b031660009081526001602052604090205460ff1690565b34801561047b57600080fd5b50610277600b5481565b34801561049157600080fd5b506010546102ec90610100900460ff1681565b3480156104b057600080fd5b506102776104bf366004611953565b6001600160a01b031660009081526006602052604090205490565b3480156104e657600080fd5b506103986109f9565b3480156104fb57600080fd5b5061039861050a366004611970565b610a6d565b34801561051b57600080fd5b5061027760045481565b34801561053157600080fd5b5061027760055481565b34801561054757600080fd5b506102ec61055636600461189f565b610adf565b34801561056757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610281565b34801561059957600080fd5b506102ec6105a8366004611953565b60096020526000908152604090205460ff1681565b3480156105c957600080fd5b506000546001600160a01b0316610575565b3480156105e757600080fd5b506040805180820190915260078152660888aa492888ab60cb1b60208201526102bf565b34801561061757600080fd5b50610277600a5481565b34801561062d57600080fd5b506010546102ec9062010000900460ff1681565b34801561064d57600080fd5b50601554610575906001600160a01b031681565b34801561066d57600080fd5b506102ec61067c36600461189f565b610bd3565b34801561068d57600080fd5b5061039861069c36600461191a565b610be0565b3480156106ad57600080fd5b5061027760175481565b3480156106c357600080fd5b50610398610c35565b3480156106d857600080fd5b50610277600f5481565b3480156106ee57600080fd5b506103986106fd366004611989565b610c6e565b34801561070e57600080fd5b506018546102ec906301000000900460ff1681565b34801561072f57600080fd5b5061027761073e3660046119c4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561077557600080fd5b506102ec610784366004611953565b60166020526000908152604090205460ff1681565b3480156107a557600080fd5b506010546102ec9060ff1681565b3480156107bf57600080fd5b50601454610575906001600160a01b031681565b3480156107df57600080fd5b506018546102ec9060ff1681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108489086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610907576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546108e2918490610d5c565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610912848484610d96565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109889290916109829190611022565b90611022565b905090565b6000546001600160a01b031633146109c05760405162461bcd60e51b81526004016109b7906119f2565b60405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000610854826000196107ed565b6000546001600160a01b03163314610a235760405162461bcd60e51b81526004016109b7906119f2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a975760405162461bcd60e51b81526004016109b7906119f2565b47336108fc6064610aa88585611a3d565b610ab29190611a5c565b6040518115909202916000818181858888f19350505050158015610ada573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610b0a5760405162461bcd60e51b81526004016109b7906119f2565b306001600160a01b03841603610b625760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e0000000060448201526064016109b7565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190611a7e565b6000610915338484610d96565b6000546001600160a01b03163314610c0a5760405162461bcd60e51b81526004016109b7906119f2565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c5f5760405162461bcd60e51b81526004016109b7906119f2565b6018805460ff19166001179055565b3360009081526001602052604090205460ff16610cb95760405162461bcd60e51b8152602060048201526009602482015268085054141493d5915160ba1b60448201526064016109b7565b600a859055600b849055600c839055600d829055610ce382610cdd85818989610cfd565b90610cfd565b600e819055610cf3908290611a9b565b600f555050505050565b600080610d0a8385611a9b565b9050838110156109155760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b7565b60008184841115610d805760405162461bcd60e51b81526004016109b79190611832565b506000610d8d8486611ab3565b95945050505050565b601854600090610100900460ff1615610dbb57610db4848484611064565b9050610915565b6001600160a01b03841660009081526001602052604090205460ff16158015610dfd57506001600160a01b03831660009081526001602052604090205460ff16155b15610e2e5760185460ff16610e2e5760405162461bcd60e51b815260206004820152600060248201526044016109b7565b6001600160a01b03831660009081526016602052604090205460ff168015610e5e5750601854610100900460ff16155b8015610e72575060185462010000900460ff165b8015610e8f57506019543060009081526006602052604090205410155b15610e9c57610e9c611138565b601754158015610ec457506001600160a01b03831660009081526016602052604090205460ff165b15610f11576001600160a01b038416600090815260066020526040902054610f085760405162461bcd60e51b815260206004820152600060248201526044016109b7565b610f1143601755565b604080516020808201835260008083526001600160a01b038816815260069091529190912054610f42918490610d5c565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff16158015610f9257506001600160a01b03841660009081526008602052604090205460ff16155b610f9c5782610fa7565b610fa7858585611512565b6001600160a01b038516600090815260066020526040902054909150610fcd9082610cfd565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020611b9d8339815191529061100f9085815260200190565b60405180910390a3506001949350505050565b600061091583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d5c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546110b5918490610d5c565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546110e49083610cfd565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020611b9d833981519152906111269086815260200190565b60405180910390a35060019392505050565b6018805461ff00191661010017905530600090815260066020526040812054600d54600e5491929161118991600291611183916111759190611022565b600a54611183908790611745565b906117c7565b905060006111978383611022565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111d1576111d1611aca565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190611ae0565b8160018151811061126157611261611aca565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac947906112a7908590600090869030904290600401611afd565b600060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b5050600a54479250600091506112ff906112f09060026117c7565b600d54600e5461098291611022565b90506000611321600261118384611183600a548861174590919063ffffffff16565b9050600061133e83611183600b548761174590919063ffffffff16565b9050600061135b84611183600c548861174590919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146113b2576040519150601f19603f3d011682016040523d82523d6000602084013e6113b7565b606091505b5050601254604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b506000925050891590506114fb5760145460105460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b036301000000909204821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611499573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114be9190611b6e565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805461ff00191690555050505050505050565b6001600160a01b0382166000908152601660205260408120548190819060ff1680156115455750601054610100900460ff165b1561155c57600d54600f5461155991611022565b91505b6001600160a01b03861660009081526016602052604090205460ff168015611586575060105460ff165b1561159d57600d54600e5461159a91611022565b91505b6001600160a01b03861660009081526016602052604090205460ff161580156115df57506001600160a01b03851660009081526016602052604090205460ff16155b156116105760105462010000900460ff161561160b57600d54600f5461160491611022565b9150611610565b600091505b60008211801561162257506000600d54115b156116b7576116416064611183600d548761174590919063ffffffff16565b6013546001600160a01b03166000908152600660205260409020549091506116699082610cfd565b601380546001600160a01b0390811660009081526006602090815260409182902094909455915491518481529181169290891691600080516020611b9d833981519152910160405180910390a35b60006116c860646111838786611745565b306000908152600660205260409020549091506116e59082610cfd565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020611b9d833981519152906117249085815260200190565b60405180910390a361173a826109828784611022565b979650505050505050565b60008260000361175757506000610854565b60006117638385611a3d565b9050826117708583611a5c565b146109155760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b7565b600061091583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836118255760405162461bcd60e51b81526004016109b79190611832565b506000610d8d8486611a5c565b600060208083528351808285015260005b8181101561185f57858101830151858201604001528201611843565b81811115611871576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461189c57600080fd5b50565b600080604083850312156118b257600080fd5b82356118bd81611887565b946020939093013593505050565b6000806000606084860312156118e057600080fd5b83356118eb81611887565b925060208401356118fb81611887565b929592945050506040919091013590565b801515811461189c57600080fd5b6000806040838503121561192d57600080fd5b823561193881611887565b915060208301356119488161190c565b809150509250929050565b60006020828403121561196557600080fd5b813561091581611887565b60006020828403121561198257600080fd5b5035919050565b600080600080600060a086880312156119a157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156119d757600080fd5b82356119e281611887565b9150602083013561194881611887565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611a5757611a57611a27565b500290565b600082611a7957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a9057600080fd5b81516109158161190c565b60008219821115611aae57611aae611a27565b500190565b600082821015611ac557611ac5611a27565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611af257600080fd5b815161091581611887565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b4d5784516001600160a01b031683529383019391830191600101611b28565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b8357600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208fd8228282385231872870fa6af186476ffb6b2927c53115ee5da029f58103a664736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063807c2d9c11610139578063aaf96d4a116100b6578063da00097d1161007a578063da00097d14610702578063dd62ed3e14610723578063e5e31b1314610769578063f0ef821f14610799578063f887ea40146107b3578063ffb54a99146107d357600080fd5b8063aaf96d4a14610681578063bf56b371146106a1578063c9567bf9146106b7578063ca987b0e146106cc578063d14c0915146106e257600080fd5b806395d89b41116100fd57806395d89b41146105db57806398118cb41461060b578063a535598914610621578063a8aa1b3114610641578063a9059cbb1461066157600080fd5b8063807c2d9c146105255780638637b0691461053b578063893d20e81461055b5780638b42507f1461058d5780638da5cb5b146105bd57600080fd5b80633f4218e0116101d25780636b67c4df116101965780636b67c4df1461046f578063705409331461048557806370a08231146104a4578063715018a6146104da578063787a051b146104ef5780637d1db4a51461050f57600080fd5b80633f4218e0146103b057806345599136146103e05780634a74bb02146103f6578063571ac8b014610416578063673448dd1461043657600080fd5b806323b872dd1161021957806323b872dd146103275780632b112e4914610347578063313ce5671461035c578063399c7976146103785780633ec726c81461039a57600080fd5b80630445b6671461026157806306fdde031461028a578063095ea7b3146102cc57806318160ddd146102fc5780631df4ccfc1461031157600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760195481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b5060408051808201909152601081526f11195c9a51195e08141c9bdd1bd8dbdb60821b60208201525b6040516102819190611832565b3480156102d857600080fd5b506102ec6102e736600461189f565b6107ed565b6040519015158152602001610281565b34801561030857600080fd5b50600354610277565b34801561031d57600080fd5b50610277600e5481565b34801561033357600080fd5b506102ec6103423660046118cb565b61085a565b34801561035357600080fd5b5061027761091c565b34801561036857600080fd5b5060405160098152602001610281565b34801561038457600080fd5b5061039861039336600461191a565b61098d565b005b3480156103a657600080fd5b50610277600c5481565b3480156103bc57600080fd5b506102ec6103cb366004611953565b60086020526000908152604090205460ff1681565b3480156103ec57600080fd5b50610277600d5481565b34801561040257600080fd5b506018546102ec9062010000900460ff1681565b34801561042257600080fd5b506102ec610431366004611953565b6109eb565b34801561044257600080fd5b506102ec610451366004611953565b6001600160a01b031660009081526001602052604090205460ff1690565b34801561047b57600080fd5b50610277600b5481565b34801561049157600080fd5b506010546102ec90610100900460ff1681565b3480156104b057600080fd5b506102776104bf366004611953565b6001600160a01b031660009081526006602052604090205490565b3480156104e657600080fd5b506103986109f9565b3480156104fb57600080fd5b5061039861050a366004611970565b610a6d565b34801561051b57600080fd5b5061027760045481565b34801561053157600080fd5b5061027760055481565b34801561054757600080fd5b506102ec61055636600461189f565b610adf565b34801561056757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610281565b34801561059957600080fd5b506102ec6105a8366004611953565b60096020526000908152604090205460ff1681565b3480156105c957600080fd5b506000546001600160a01b0316610575565b3480156105e757600080fd5b506040805180820190915260078152660888aa492888ab60cb1b60208201526102bf565b34801561061757600080fd5b50610277600a5481565b34801561062d57600080fd5b506010546102ec9062010000900460ff1681565b34801561064d57600080fd5b50601554610575906001600160a01b031681565b34801561066d57600080fd5b506102ec61067c36600461189f565b610bd3565b34801561068d57600080fd5b5061039861069c36600461191a565b610be0565b3480156106ad57600080fd5b5061027760175481565b3480156106c357600080fd5b50610398610c35565b3480156106d857600080fd5b50610277600f5481565b3480156106ee57600080fd5b506103986106fd366004611989565b610c6e565b34801561070e57600080fd5b506018546102ec906301000000900460ff1681565b34801561072f57600080fd5b5061027761073e3660046119c4565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561077557600080fd5b506102ec610784366004611953565b60166020526000908152604090205460ff1681565b3480156107a557600080fd5b506010546102ec9060ff1681565b3480156107bf57600080fd5b50601454610575906001600160a01b031681565b3480156107df57600080fd5b506018546102ec9060ff1681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108489086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610907576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546108e2918490610d5c565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610912848484610d96565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109889290916109829190611022565b90611022565b905090565b6000546001600160a01b031633146109c05760405162461bcd60e51b81526004016109b7906119f2565b60405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000610854826000196107ed565b6000546001600160a01b03163314610a235760405162461bcd60e51b81526004016109b7906119f2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a975760405162461bcd60e51b81526004016109b7906119f2565b47336108fc6064610aa88585611a3d565b610ab29190611a5c565b6040518115909202916000818181858888f19350505050158015610ada573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610b0a5760405162461bcd60e51b81526004016109b7906119f2565b306001600160a01b03841603610b625760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e0000000060448201526064016109b7565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190611a7e565b6000610915338484610d96565b6000546001600160a01b03163314610c0a5760405162461bcd60e51b81526004016109b7906119f2565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c5f5760405162461bcd60e51b81526004016109b7906119f2565b6018805460ff19166001179055565b3360009081526001602052604090205460ff16610cb95760405162461bcd60e51b8152602060048201526009602482015268085054141493d5915160ba1b60448201526064016109b7565b600a859055600b849055600c839055600d829055610ce382610cdd85818989610cfd565b90610cfd565b600e819055610cf3908290611a9b565b600f555050505050565b600080610d0a8385611a9b565b9050838110156109155760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b7565b60008184841115610d805760405162461bcd60e51b81526004016109b79190611832565b506000610d8d8486611ab3565b95945050505050565b601854600090610100900460ff1615610dbb57610db4848484611064565b9050610915565b6001600160a01b03841660009081526001602052604090205460ff16158015610dfd57506001600160a01b03831660009081526001602052604090205460ff16155b15610e2e5760185460ff16610e2e5760405162461bcd60e51b815260206004820152600060248201526044016109b7565b6001600160a01b03831660009081526016602052604090205460ff168015610e5e5750601854610100900460ff16155b8015610e72575060185462010000900460ff165b8015610e8f57506019543060009081526006602052604090205410155b15610e9c57610e9c611138565b601754158015610ec457506001600160a01b03831660009081526016602052604090205460ff165b15610f11576001600160a01b038416600090815260066020526040902054610f085760405162461bcd60e51b815260206004820152600060248201526044016109b7565b610f1143601755565b604080516020808201835260008083526001600160a01b038816815260069091529190912054610f42918490610d5c565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff16158015610f9257506001600160a01b03841660009081526008602052604090205460ff16155b610f9c5782610fa7565b610fa7858585611512565b6001600160a01b038516600090815260066020526040902054909150610fcd9082610cfd565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020611b9d8339815191529061100f9085815260200190565b60405180910390a3506001949350505050565b600061091583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d5c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546110b5918490610d5c565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546110e49083610cfd565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020611b9d833981519152906111269086815260200190565b60405180910390a35060019392505050565b6018805461ff00191661010017905530600090815260066020526040812054600d54600e5491929161118991600291611183916111759190611022565b600a54611183908790611745565b906117c7565b905060006111978383611022565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111d1576111d1611aca565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190611ae0565b8160018151811061126157611261611aca565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac947906112a7908590600090869030904290600401611afd565b600060405180830381600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b5050600a54479250600091506112ff906112f09060026117c7565b600d54600e5461098291611022565b90506000611321600261118384611183600a548861174590919063ffffffff16565b9050600061133e83611183600b548761174590919063ffffffff16565b9050600061135b84611183600c548861174590919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146113b2576040519150601f19603f3d011682016040523d82523d6000602084013e6113b7565b606091505b5050601254604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b506000925050891590506114fb5760145460105460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b036301000000909204821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611499573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114be9190611b6e565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506018805461ff00191690555050505050505050565b6001600160a01b0382166000908152601660205260408120548190819060ff1680156115455750601054610100900460ff165b1561155c57600d54600f5461155991611022565b91505b6001600160a01b03861660009081526016602052604090205460ff168015611586575060105460ff165b1561159d57600d54600e5461159a91611022565b91505b6001600160a01b03861660009081526016602052604090205460ff161580156115df57506001600160a01b03851660009081526016602052604090205460ff16155b156116105760105462010000900460ff161561160b57600d54600f5461160491611022565b9150611610565b600091505b60008211801561162257506000600d54115b156116b7576116416064611183600d548761174590919063ffffffff16565b6013546001600160a01b03166000908152600660205260409020549091506116699082610cfd565b601380546001600160a01b0390811660009081526006602090815260409182902094909455915491518481529181169290891691600080516020611b9d833981519152910160405180910390a35b60006116c860646111838786611745565b306000908152600660205260409020549091506116e59082610cfd565b30600081815260066020526040908190209290925590516001600160a01b03891690600080516020611b9d833981519152906117249085815260200190565b60405180910390a361173a826109828784611022565b979650505050505050565b60008260000361175757506000610854565b60006117638385611a3d565b9050826117708583611a5c565b146109155760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b7565b600061091583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836118255760405162461bcd60e51b81526004016109b79190611832565b506000610d8d8486611a5c565b600060208083528351808285015260005b8181101561185f57858101830151858201604001528201611843565b81811115611871576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461189c57600080fd5b50565b600080604083850312156118b257600080fd5b82356118bd81611887565b946020939093013593505050565b6000806000606084860312156118e057600080fd5b83356118eb81611887565b925060208401356118fb81611887565b929592945050506040919091013590565b801515811461189c57600080fd5b6000806040838503121561192d57600080fd5b823561193881611887565b915060208301356119488161190c565b809150509250929050565b60006020828403121561196557600080fd5b813561091581611887565b60006020828403121561198257600080fd5b5035919050565b600080600080600060a086880312156119a157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156119d757600080fd5b82356119e281611887565b9150602083013561194881611887565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611a5757611a57611a27565b500290565b600082611a7957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611a9057600080fd5b81516109158161190c565b60008219821115611aae57611aae611a27565b500190565b600082821015611ac557611ac5611a27565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611af257600080fd5b815161091581611887565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b4d5784516001600160a01b031683529383019391830191600101611b28565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b8357600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208fd8228282385231872870fa6af186476ffb6b2927c53115ee5da029f58103a664736f6c634300080e0033

Deployed Bytecode Sourcemap

5760:10693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7456:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7456:56:0;;;;;;;;9032:78;;;;;;;;;;-1:-1:-1;9103:5:0;;;;;;;;;;;;-1:-1:-1;;;9103:5:0;;;;9032:78;;;;;;;:::i;9874:216::-;;;;;;;;;;-1:-1:-1;9874:216:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;9874:216:0;1254:187:1;9294:86:0;;;;;;;;;;-1:-1:-1;9366:12:0;;9294:86;;6813:27;;;;;;;;;;;;;;;;10991:370;;;;;;;;;;-1:-1:-1;10991:370:0;;;;;:::i;:::-;;:::i;9724:142::-;;;;;;;;;;;;;:::i;9208:78::-;;;;;;;;;;-1:-1:-1;9208:78:0;;6128:1;2049:36:1;;2037:2;2022:18;9208:78:0;1907:184:1;15865:111:0;;;;;;;;;;-1:-1:-1;15865:111:0;;;;;:::i;:::-;;:::i;:::-;;6742:28;;;;;;;;;;;;;;;;6559:43;;;;;;;;;;-1:-1:-1;6559:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6777:27;;;;;;;;;;;;;;;;7355:40;;;;;;;;;;-1:-1:-1;7355:40:0;;;;;;;;;;;10098:122;;;;;;;;;;-1:-1:-1;10098:122:0;;;;;:::i;:::-;;:::i;5498:99::-;;;;;;;;;;-1:-1:-1;5498:99:0;;;;;:::i;:::-;-1:-1:-1;;;;;5576:13:0;5552:4;5576:13;;;:8;:13;;;;;;;;;5498:99;6704:31;;;;;;;;;;;;;;;;6928:30;;;;;;;;;;-1:-1:-1;6928:30:0;;;;;;;;;;;9474:103;;;;;;;;;;-1:-1:-1;9474:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9557:18:0;9540:7;9557:18;;;:9;:18;;;;;;;9474:103;5605:148;;;;;;;;;;;;;:::i;16247:201::-;;;;;;;;;;-1:-1:-1;16247:201:0;;;;;:::i;:::-;;:::i;6205:52::-;;;;;;;;;;;;;;;;6264:49;;;;;;;;;;;;;;;;15984:255;;;;;;;;;;-1:-1:-1;15984:255:0;;;;;:::i;:::-;;:::i;9388:78::-;;;;;;;;;;-1:-1:-1;9440:7:0;5255:6;-1:-1:-1;;;;;5255:6:0;9388:78;;;-1:-1:-1;;;;;3207:32:1;;;3189:51;;3177:2;3162:18;9388:78:0;3043:203:1;6609:47:0;;;;;;;;;;-1:-1:-1;6609:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5190:79;;;;;;;;;;-1:-1:-1;5228:7:0;5255:6;-1:-1:-1;;;;;5255:6:0;5190:79;;9118:82;;;;;;;;;;-1:-1:-1;9191:7:0;;;;;;;;;;;;-1:-1:-1;;;9191:7:0;;;;9118:82;;6666:31;;;;;;;;;;;;;;;;6965:34;;;;;;;;;;-1:-1:-1;6965:34:0;;;;;;;;;;;7175:19;;;;;;;;;;-1:-1:-1;7175:19:0;;;;-1:-1:-1;;;;;7175:19:0;;;10489:156;;;;;;;;;;-1:-1:-1;10489:156:0;;;;;:::i;:::-;;:::i;15742:115::-;;;;;;;;;;-1:-1:-1;15742:115:0;;;;;:::i;:::-;;:::i;7248:25::-;;;;;;;;;;;;;;;;15236:77;;;;;;;;;;;;;:::i;6847:36::-;;;;;;;;;;;;;;;;15321:413;;;;;;;;;;-1:-1:-1;15321:413:0;;;;;:::i;:::-;;:::i;7402:45::-;;;;;;;;;;-1:-1:-1;7402:45:0;;;;;;;;;;;9585:131;;;;;;;;;;-1:-1:-1;9585:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;9686:19:0;;;9669:7;9686:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9585:131;7201:38;;;;;;;;;;-1:-1:-1;7201:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6892:29;;;;;;;;;;-1:-1:-1;6892:29:0;;;;;;;;7145:23;;;;;;;;;;-1:-1:-1;7145:23:0;;;;-1:-1:-1;;;;;7145:23:0;;;7282:30;;;;;;;;;;-1:-1:-1;7282:30:0;;;;;;;;9874:216;9978:10;9949:4;9966:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9966:32:0;;;;;;;;;;:41;;;10023:37;9949:4;;9966:32;;10023:37;;;;10001:6;160:25:1;;148:2;133:18;;14:177;10023:37:0;;;;;;;;-1:-1:-1;10078:4:0;9874:216;;;;;:::o;10991:370::-;-1:-1:-1;;;;;11112:19:0;;11091:4;11112:19;;;:11;:19;;;;;;;;11132:10;11112:31;;;;;;;;-1:-1:-1;;11112:52:0;11108:188;;11215:69;;;;;;;;;;;-1:-1:-1;;;11215:69:0;;;;;;;;-1:-1:-1;;;;;11215:19:0;;-1:-1:-1;11215:19:0;;;:11;:19;;;;;11235:10;11215:31;;;;;;;;;;:69;;11251:6;;11215:35;:69::i;:::-;-1:-1:-1;;;;;11181:19:0;;;;;;:11;:19;;;;;;;;11201:10;11181:31;;;;;;;:103;11108:188;11313:40;11327:6;11335:9;11346:6;11313:13;:40::i;:::-;11306:47;;10991:370;;;;;;:::o;9724:142::-;9557:9;:18;;;;5878:42;9777:7;9557:18;;;;;9804:12;;9777:7;;9804:54;;9557:18;;9804:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;9797:61;;9724:142;:::o;15865:111::-;5317:6;;-1:-1:-1;;;;;5317:6:0;4638:10;5317:22;5309:67;;;;-1:-1:-1;;;5309:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;15943:16:0;;;::::1;;::::0;;;:6:::1;:16;::::0;;;;:25;;-1:-1:-1;;15943:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15865:111::o;10098:122::-;10153:4;10177:35;10185:7;-1:-1:-1;;10177:7:0;:35::i;5605:148::-;5317:6;;-1:-1:-1;;;;;5317:6:0;4638:10;5317:22;5309:67;;;;-1:-1:-1;;;5309:67:0;;;;;;;:::i;:::-;5712:1:::1;5696:6:::0;;5675:40:::1;::::0;-1:-1:-1;;;;;5696:6:0;;::::1;::::0;5675:40:::1;::::0;5712:1;;5675:40:::1;5743:1;5726:19:::0;;-1:-1:-1;;;;;;5726:19:0::1;::::0;;5605:148::o;16247:201::-;5317:6;;-1:-1:-1;;;;;5317:6:0;4638:10;5317:22;5309:67;;;;-1:-1:-1;;;5309:67:0;;;;;;;:::i;:::-;16344:21:::1;16384:10;16376:64;16436:3;16405:28;16417:16:::0;16344:21;16405:28:::1;:::i;:::-;:34;;;;:::i;:::-;16376:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16313:135;16247:201:::0;:::o;15984:255::-;16069:12;5317:6;;-1:-1:-1;;;;;5317:6:0;4638:10;5317:22;5309:67;;;;-1:-1:-1;;;5309:67:0;;;;;;;:::i;:::-;16126:4:::1;-1:-1:-1::0;;;;;16102:29:0;::::1;::::0;16094:70:::1;;;::::0;-1:-1:-1;;;16094:70:0;;5418:2:1;16094:70:0::1;::::0;::::1;5400:21:1::0;5457:2;5437:18;;;5430:30;5496;5476:18;;;5469:58;5544:18;;16094:70:0::1;5216:352:1::0;16094:70:0::1;16182:49;::::0;-1:-1:-1;;;16182:49:0;;16212:10:::1;16182:49;::::0;::::1;5747:51:1::0;5814:18;;;5807:34;;;-1:-1:-1;;;;;16182:29:0;::::1;::::0;::::1;::::0;5720:18:1;;16182:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10489:156::-:0;10569:4;10593:44;10607:10;10619:9;10630:6;10593:13;:44::i;15742:115::-;5317:6;;-1:-1:-1;;;;;5317:6:0;4638:10;5317:22;5309:67;;;;-1:-1:-1;;;5309:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15822:18:0;;;::::1;;::::0;;;:8:::1;:18;::::0;;;;:27;;-1:-1:-1;;15822:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15742:115::o;15236:77::-;5317:6;;-1:-1:-1;;;;;5317:6:0;4638:10;5317:22;5309:67;;;;-1:-1:-1;;;5309:67:0;;;;;;;:::i;:::-;15287:11:::1;:18:::0;;-1:-1:-1;;15287:18:0::1;15301:4;15287:18;::::0;;15236:77::o;15321:413::-;5454:10;5552:4;5576:13;;;:8;:13;;;;;;;;5435:44;;;;-1:-1:-1;;;5435:44:0;;6304:2:1;5435:44:0;;;6286:21:1;6343:1;6323:18;;;6316:29;-1:-1:-1;;;6361:18:1;;;6354:39;6410:18;;5435:44:0;6102:332:1;5435:44:0;15467:12:::1;:24:::0;;;15502:12:::1;:30:::0;;;15543:9:::1;:21:::0;;;15575:8:::1;:23:::0;;;15620:59:::1;15586:12:::0;15620:45:::1;15555:9:::0;15620:45;15482:9;15517:15;15620:16:::1;:30::i;:::-;:34:::0;::::1;:45::i;:59::-;15609:8;:70:::0;;;15710:16:::1;::::0;15721:5;;15710:16:::1;:::i;:::-;15690:17;:36:::0;-1:-1:-1;;;;;15321:413:0:o;1005:179::-;1063:7;;1095:5;1099:1;1095;:5;:::i;:::-;1083:17;;1124:1;1119;:6;;1111:46;;;;-1:-1:-1;;;1111:46:0;;6774:2:1;1111:46:0;;;6756:21:1;6813:2;6793:18;;;6786:30;6852:29;6832:18;;;6825:57;6899:18;;1111:46:0;6572:351:1;1336:190:0;1422:7;1458:12;1450:6;;;;1442:29;;;;-1:-1:-1;;;1442:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1482:9:0;1494:5;1498:1;1494;:5;:::i;:::-;1482:17;1336:190;-1:-1:-1;;;;;1336:190:0:o;11369:1010::-;11482:16;;11461:4;;11482:16;;;;;11478:73;;;11508:41;11523:6;11531:9;11542:6;11508:14;:41::i;:::-;11501:48;;;;11478:73;-1:-1:-1;;;;;11565:16:0;;;;;;:8;:16;;;;;;;;11564:17;:41;;;;-1:-1:-1;;;;;;11586:19:0;;;;;;:8;:19;;;;;;;;11585:20;11564:41;11561:96;;;11629:11;;;;11621:24;;;;-1:-1:-1;;;11621:24:0;;7260:2:1;11621:24:0;;;7242:21:1;-1:-1:-1;7279:18:1;;;7272:29;7318:18;;11621:24:0;7058:284:1;11621:24:0;-1:-1:-1;;;;;11671:17:0;;;;;;:6;:17;;;;;;;;:38;;;;-1:-1:-1;11693:16:0;;;;;;;11692:17;11671:38;:63;;;;-1:-1:-1;11713:21:0;;;;;;;11671:63;:108;;;;-1:-1:-1;11766:13:0;;11756:4;11738:24;;;;:9;:24;;;;;;:41;;11671:108;11667:140;;;11782:23;:21;:23::i;:::-;10295:10;;:15;;;11821:32;;-1:-1:-1;;;;;;11836:17:0;;;;;;:6;:17;;;;;;;;11821:32;11817:122;;;-1:-1:-1;;;;;11878:17:0;;11898:1;11878:17;;;:9;:17;;;;;;11870:34;;;;-1:-1:-1;;;11870:34:0;;7260:2:1;11870:34:0;;;7242:21:1;-1:-1:-1;7279:18:1;;;7272:29;7318:18;;11870:34:0;7058:284:1;11870:34:0;11919:8;10377:12;10364:10;:25;10326:71;11919:8;11999:33;;;;;;;;;-1:-1:-1;11999:33:0;;;-1:-1:-1;;;;;11999:17:0;;;;:9;:17;;;;;;;;:33;;12021:6;;11999:21;:33::i;:::-;-1:-1:-1;;;;;11979:17:0;;;;;;:9;:17;;;;;;;;:53;;;;12125:11;:19;;;;;;;;12124:20;:47;;;;-1:-1:-1;;;;;;12149:22:0;;;;;;:11;:22;;;;;;;;12148:23;12124:47;:96;;12214:6;12124:96;;;12174:37;12185:6;12193:9;12204:6;12174:10;:37::i;:::-;-1:-1:-1;;;;;12254:20:0;;;;;;:9;:20;;;;;;12102:118;;-1:-1:-1;12254:37:0;;12102:118;12254:24;:37::i;:::-;-1:-1:-1;;;;;12231:20:0;;;;;;;:9;:20;;;;;;;:60;;;;12309:40;;;;;;-1:-1:-1;;;;;;;;;;;12309:40:0;;;12337:11;160:25:1;;148:2;133:18;;14:177;12309:40:0;;;;;;;;-1:-1:-1;12367:4:0;;11369:1010;-1:-1:-1;;;;11369:1010:0:o;1192:136::-;1250:7;1277:43;1281:1;1284;1277:43;;;;;;;;;;;;;;;;;:3;:43::i;10653:330::-;10783:53;;;;;;;;;;;-1:-1:-1;;;10783:53:0;;;;;;;;-1:-1:-1;;;;;10783:17:0;;10746:4;10783:17;;;:9;:17;;;;;;;:53;;10805:6;;10783:21;:53::i;:::-;-1:-1:-1;;;;;10763:17:0;;;;;;;:9;:17;;;;;;:73;;;;10870:20;;;;;;;:32;;10895:6;10870:24;:32::i;:::-;-1:-1:-1;;;;;10847:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10918:35;;;;;;-1:-1:-1;;;;;;;;;;;10918:35:0;;;10946:6;160:25:1;;148:2;133:18;;14:177;10918:35:0;;;;;;;;-1:-1:-1;10971:4:0;10653:330;;;;;:::o;13588:1640::-;7617:16;:23;;-1:-1:-1;;7617:23:0;;;;;13697:4:::1;7617:23:::0;13679:24;;;:9:::1;:24;::::0;;;;;13791:8:::1;::::0;13778::::1;::::0;13679:24;;7617:23;13740:68:::1;::::0;13806:1:::1;::::0;13740:61:::1;::::0;13778:22:::1;::::0;:8;:12:::1;:22::i;:::-;13760:12;::::0;13740:33:::1;::::0;:15;;:19:::1;:33::i;:::-;:37:::0;::::1;:61::i;:68::-;13714:94:::0;-1:-1:-1;13819:20:0::1;13842:36;:15:::0;13714:94;13842:19:::1;:36::i;:::-;13915:16;::::0;;13929:1:::1;13915:16:::0;;;;;::::1;::::0;;13819:59;;-1:-1:-1;13891:21:0::1;::::0;13915:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13915:16:0::1;13891:40;;13960:4;13942;13947:1;13942:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13942:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13986:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;13986:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;13942:7;;13986:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13976:4;13981:1;13976:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13976:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14012:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14012:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14084:12;;14012:6:::1;::::0;14127:4;;14154::::1;::::0;14174:15:::1;::::0;14012:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14316:12:0::1;::::0;14233:21:::1;::::0;-1:-1:-1;14213:17:0::1;::::0;-1:-1:-1;14289:47:0::1;::::0;14316:19:::1;::::0;14333:1:::1;14316:16;:19::i;:::-;14302:8;::::0;14289::::1;::::0;:22:::1;::::0;:12:::1;:22::i;:47::-;14267:69;;14349:26;14378:51;14427:1;14378:44;14410:11;14378:27;14392:12;;14378:9;:13;;:27;;;;:::i;:51::-;14349:80;;14440:26;14469:44;14501:11;14469:27;14483:12;;14469:9;:13;;:27;;;;:::i;:44::-;14440:73;;14524:20;14547:41;14576:11;14547:24;14561:9;;14547;:13;;:24;;;;:::i;:41::-;14639:14;::::0;14631:73:::1;::::0;14524:64;;-1:-1:-1;14610:16:0::1;::::0;-1:-1:-1;;;;;14639:14:0;;::::1;::::0;14694:5:::1;::::0;14668:18;;14610:16;14631:73;14610:16;14631:73;14668:18;14639:14;14694:5;14631:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14772:9:0::1;::::0;14764:62:::1;::::0;14729:5:::1;::::0;-1:-1:-1;;;;;;14772:9:0;;::::1;::::0;-1:-1:-1;14816:5:0::1;::::0;14796:12;;14729:5;14764:62;14729:5;14764:62;14796:12;14772:9;14816:5;14764:62:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14851:5:0::1;::::0;-1:-1:-1;;14873:19:0;;;-1:-1:-1;14869:352:0::1;;14909:6;::::0;15084:8:::1;::::0;14909:232:::1;::::0;-1:-1:-1;;;14909:232:0;;14986:4:::1;14909:232;::::0;::::1;9403:34:1::0;9453:18;;;9446:34;;;-1:-1:-1;9496:18:1;;;9489:34;;;9539:18;;;9532:34;-1:-1:-1;;;;;15084:8:0;;;::::1;::::0;::::1;9582:19:1::0;;;9575:44;15111:15:0::1;9635:19:1::0;;;9628:35;14909:6:0;::::1;::::0;:22:::1;::::0;14940:18;;9337:19:1;;14909:232:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15161:48:0::1;::::0;;10159:25:1;;;10215:2;10200:18;;10193:34;;;15161:48:0::1;::::0;-1:-1:-1;10132:18:1;15161:48:0::1;;;;;;;14869:352;-1:-1:-1::0;;7663:16:0;:24;;-1:-1:-1;;7663:24:0;;;-1:-1:-1;;;;;;;;13588:1640:0:o;12387:1193::-;-1:-1:-1;;;;;12565:17:0;;12476:7;12565:17;;;:6;:17;;;;;;12476:7;;;;12565:17;;:32;;;;-1:-1:-1;12586:11:0;;;;;;;12565:32;12561:120;;;12652:8;;12630:17;;:31;;:21;:31::i;:::-;12614:47;;12561:120;-1:-1:-1;;;;;12695:14:0;;;;;;:6;:14;;;;;;;;:28;;;;-1:-1:-1;12713:10:0;;;;12695:28;12691:107;;;12769:8;;12756;;:22;;:12;:22::i;:::-;12740:38;;12691:107;-1:-1:-1;;;;;12813:14:0;;;;;;:6;:14;;;;;;;;12812:15;:37;;;;-1:-1:-1;;;;;;12832:17:0;;;;;;:6;:17;;;;;;;;12831:18;12812:37;12808:241;;;12869:15;;;;;;;12865:173;;;12942:8;;12920:17;;:31;;:21;:31::i;:::-;12904:47;;12865:173;;;13021:1;13005:17;;12865:173;13078:1;13062:13;:17;:32;;;;;13093:1;13083:8;;:11;13062:32;13059:253;;;13125:29;13150:3;13125:20;13136:8;;13125:6;:10;;:20;;;;:::i;:29::-;13205:12;;-1:-1:-1;;;;;13205:12:0;13195:23;;;;:9;:23;;;;;;13110:44;;-1:-1:-1;13195:41:0;;13110:44;13195:27;:41::i;:::-;13179:12;;;-1:-1:-1;;;;;13179:12:0;;;13169:23;;;;:9;:23;;;;;;;;;:67;;;;13273:12;;13256:44;;160:25:1;;;13273:12:0;;;;13256:44;;;;-1:-1:-1;;;;;;;;;;;13256:44:0;133:18:1;13256:44:0;;;;;;;13059:253;13322:17;13342:34;13372:3;13342:25;:6;13353:13;13342:10;:25::i;:34::-;13434:4;13416:24;;;;:9;:24;;;;;;13322:54;;-1:-1:-1;13416:39:0;;13322:54;13416:28;:39::i;:::-;13407:4;13389:24;;;;:9;:24;;;;;;;:66;;;;13471:42;;-1:-1:-1;;;;;13471:42:0;;;-1:-1:-1;;;;;;;;;;;13471:42:0;;;13503:9;160:25:1;;148:2;133:18;;14:177;13471:42:0;;;;;;;;13533:39;13559:12;13533:21;:6;13544:9;13533:10;:21::i;:39::-;13526:46;12387:1193;-1:-1:-1;;;;;;;12387:1193:0:o;1534:222::-;1592:7;1616:1;1621;1616:6;1612:23;;-1:-1:-1;1632:1:0;1625:8;;1612:23;1645:9;1657:5;1661:1;1657;:5;:::i;:::-;1645:17;-1:-1:-1;1690:1:0;1681:5;1685:1;1645:17;1681:5;:::i;:::-;:10;1673:56;;;;-1:-1:-1;;;1673:56:0;;10440:2:1;1673:56:0;;;10422:21:1;10479:2;10459:18;;;10452:30;10518:34;10498:18;;;10491:62;-1:-1:-1;;;10569:18:1;;;10562:31;10610:19;;1673:56:0;10238:397:1;1764:132:0;1822:7;1849:39;1853:1;1856;1849:39;;;;;;;;;;;;;;;;;1990:7;2025:12;2018:5;2010:28;;;;-1:-1:-1;;;2010:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2049:9:0;2061:5;2065:1;2061;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;2096:118::-;2182:5;2175:13;2168:21;2161:5;2158:32;2148:60;;2204:1;2201;2194:12;2219:382;2284:6;2292;2345:2;2333:9;2324:7;2320:23;2316:32;2313:52;;;2361:1;2358;2351:12;2313:52;2400:9;2387:23;2419:31;2444:5;2419:31;:::i;:::-;2469:5;-1:-1:-1;2526:2:1;2511:18;;2498:32;2539:30;2498:32;2539:30;:::i;:::-;2588:7;2578:17;;;2219:382;;;;;:::o;2606:247::-;2665:6;2718:2;2706:9;2697:7;2693:23;2689:32;2686:52;;;2734:1;2731;2724:12;2686:52;2773:9;2760:23;2792:31;2817:5;2792:31;:::i;2858:180::-;2917:6;2970:2;2958:9;2949:7;2945:23;2941:32;2938:52;;;2986:1;2983;2976:12;2938:52;-1:-1:-1;3009:23:1;;2858:180;-1:-1:-1;2858:180:1:o;3251:454::-;3346:6;3354;3362;3370;3378;3431:3;3419:9;3410:7;3406:23;3402:33;3399:53;;;3448:1;3445;3438:12;3399:53;-1:-1:-1;;3471:23:1;;;3541:2;3526:18;;3513:32;;-1:-1:-1;3592:2:1;3577:18;;3564:32;;3643:2;3628:18;;3615:32;;-1:-1:-1;3694:3:1;3679:19;3666:33;;-1:-1:-1;3251:454:1;-1:-1:-1;3251:454:1:o;3710:388::-;3778:6;3786;3839:2;3827:9;3818:7;3814:23;3810:32;3807:52;;;3855:1;3852;3845:12;3807:52;3894:9;3881:23;3913:31;3938:5;3913:31;:::i;:::-;3963:5;-1:-1:-1;4020:2:1;4005:18;;3992:32;4033:33;3992:32;4033:33;:::i;4328:356::-;4530:2;4512:21;;;4549:18;;;4542:30;4608:34;4603:2;4588:18;;4581:62;4675:2;4660:18;;4328:356::o;4689:127::-;4750:10;4745:3;4741:20;4738:1;4731:31;4781:4;4778:1;4771:15;4805:4;4802:1;4795:15;4821:168;4861:7;4927:1;4923;4919:6;4915:14;4912:1;4909:21;4904:1;4897:9;4890:17;4886:45;4883:71;;;4934:18;;:::i;:::-;-1:-1:-1;4974:9:1;;4821:168::o;4994:217::-;5034:1;5060;5050:132;;5104:10;5099:3;5095:20;5092:1;5085:31;5139:4;5136:1;5129:15;5167:4;5164:1;5157:15;5050:132;-1:-1:-1;5196:9:1;;4994:217::o;5852:245::-;5919:6;5972:2;5960:9;5951:7;5947:23;5943:32;5940:52;;;5988:1;5985;5978:12;5940:52;6020:9;6014:16;6039:28;6061:5;6039:28;:::i;6439:128::-;6479:3;6510:1;6506:6;6503:1;6500:13;6497:39;;;6516:18;;:::i;:::-;-1:-1:-1;6552:9:1;;6439:128::o;6928:125::-;6968:4;6996:1;6993;6990:8;6987:34;;;7001:18;;:::i;:::-;-1:-1:-1;7038:9:1;;6928:125::o;7479:127::-;7540:10;7535:3;7531:20;7528:1;7521:31;7571:4;7568:1;7561:15;7595:4;7592:1;7585:15;7611:251;7681:6;7734:2;7722:9;7713:7;7709:23;7705:32;7702:52;;;7750:1;7747;7740:12;7702:52;7782:9;7776:16;7801:31;7826:5;7801:31;:::i;7867:980::-;8129:4;8177:3;8166:9;8162:19;8208:6;8197:9;8190:25;8234:2;8272:6;8267:2;8256:9;8252:18;8245:34;8315:3;8310:2;8299:9;8295:18;8288:31;8339:6;8374;8368:13;8405:6;8397;8390:22;8443:3;8432:9;8428:19;8421:26;;8482:2;8474:6;8470:15;8456:29;;8503:1;8513:195;8527:6;8524:1;8521:13;8513:195;;;8592:13;;-1:-1:-1;;;;;8588:39:1;8576:52;;8683:15;;;;8648:12;;;;8624:1;8542:9;8513:195;;;-1:-1:-1;;;;;;;8764:32:1;;;;8759:2;8744:18;;8737:60;-1:-1:-1;;;8828:3:1;8813:19;8806:35;8725:3;7867:980;-1:-1:-1;;;7867:980:1:o;9674:306::-;9762:6;9770;9778;9831:2;9819:9;9810:7;9806:23;9802:32;9799:52;;;9847:1;9844;9837:12;9799:52;9876:9;9870:16;9860:26;;9926:2;9915:9;9911:18;9905:25;9895:35;;9970:2;9959:9;9955:18;9949:25;9939:35;;9674:306;;;;;:::o

Swarm Source

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