ETH Price: $2,361.31 (+0.90%)
Gas: 1.94 Gwei

Token

Tesla Pi (TPI)
 

Overview

Max Total Supply

1,000,000,000 TPI

Holders

85

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,155,908.839979694 TPI

Value
$0.00
0x7515c8e9932fFe9b57ecc855D295952E05B08015
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:
TeslaPi

Compiler Version
v0.8.19+commit.7dd6d404

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-23
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
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);
}

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 transferOwnership(address newOwner) public virtual onlyOwner() {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
      
       function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    
    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 TeslaPi is Context, IERC20, Ownable {
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    address payable private MarketingWallet;
    uint256 private swapTaxes = 30;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals; 
    string private constant _name = "Tesla Pi";
    string private constant _symbol = "TPI";
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    uint256 private  SwapTokens = 5000000 * 10**_decimals;
    uint256 public maxTxAmount = 10000000 * 10**_decimals;
    IUniswapV2Router02 public uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;
    event FeesUpdated(uint256 indexed _feeAmount);
    event ExcludeFromFeeUpdated(address indexed account);
    event includeFromFeeUpdated(address indexed account);
    event FeesRecieverUpdated(address indexed _newWallet);
    event SwapThreshouldUpdated(uint256 indexed tokenAmount);
    event SwapBackSettingUpdated(bool indexed state);
    event ERC20TokensRecovered(uint256 indexed _amount);
    event TradingOpenUpdated();
    event ETHBalanceRecovered();
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
           if (block.chainid == 56){
     uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // PCS BSC Mainnet Router
     }
      else if(block.chainid == 1 || block.chainid == 5){
          uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap ETH Mainnet Router
      }
      else if(block.chainid == 42161){
           uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); // Sushi Arbitrum Mainnet Router
      }
     else  if (block.chainid == 97){
     uniswapV2Router = IUniswapV2Router02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); // PCS BSC Testnet Router
     }
    else {
         revert("Wrong Chain Id");
        }
    uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        
         MarketingWallet = payable(0x457F8Bf4efE9C392CB997c57821Df705006A08bC);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[MarketingWallet] = true;
        _isExcludedFromFee[deadWallet] = 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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        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 excludeFromFee(address account) external onlyOwner {
      require(_isExcludedFromFee[account] != true,"Account is already excluded");
       _isExcludedFromFee[account] = true;
    emit ExcludeFromFeeUpdated(account);
   }
   
    function includeFromFee(address account) external onlyOwner {
         require(_isExcludedFromFee[account] != false, "Account is already included");
        _isExcludedFromFee[account] = false;
     emit includeFromFeeUpdated(account);
    }
   
    function SetFee(uint256 _feeAmount) external onlyOwner {
       require(_feeAmount <= 50, "Must keep fees at 50% or less");
        swapTaxes = _feeAmount;
      emit FeesUpdated(_feeAmount);
   }
    
    function setMarketingWallet(address payable _newWallet) external onlyOwner {
       require(_newWallet != address(this), "CA will not be the Fee Reciever");
       require(_newWallet != address(0), "0 addy will not be the fee Reciever");
       MarketingWallet = _newWallet;
      _isExcludedFromFee[_newWallet] = true;
    emit FeesRecieverUpdated(_newWallet);
    }
    
    function setSwapThreshould(uint256 tokenAmount) external onlyOwner {
        require(tokenAmount <= 1e7, "amount must be less than or equal to 1% of the supply");
        require(tokenAmount >= 1e6, "amount must be greater than or equal to 0.1% of the supply");
        SwapTokens = tokenAmount * 10**_decimals;
    emit SwapThreshouldUpdated(tokenAmount);
    }
   
    function removeMaxTx() external onlyOwner {
        maxTxAmount = _tTotal;
    }

   function setMaxTx(uint256 amount) external onlyOwner {
       require(amount >= 1e6, "amount must be greater than or equal to 0.1% of the supply");
        maxTxAmount = amount * 10**_decimals;
    }
   
   function setSwapBackSetting(bool state) external onlyOwner {
        swapEnabled = state;
     emit SwapBackSettingUpdated(state);
    }

  function add() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
  
   function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;
      emit TradingOpenUpdated();
    }
    
    receive() external payable {}
   
    function ClearERC20Tokens(address _tokenAddy, uint256 _amount) external onlyOwner {
        require(_tokenAddy != address(this), "Owner can't claim contract's balance of its own tokens");
        require(_amount > 0, "Amount should be greater than zero");
        require(_amount <= IERC20(_tokenAddy).balanceOf(address(this)), "Insufficient Amount");
        IERC20(_tokenAddy).transfer(MarketingWallet, _amount);
      emit ERC20TokensRecovered(_amount); 
    }
 
 function ClearETHBalance() external {
        uint256 contractETHBalance = address(this).balance;
        require(contractETHBalance > 0, "Amount should be greater than zero");
        require(contractETHBalance <= address(this).balance, "Insufficient Amount");
        payable(address(MarketingWallet)).transfer(contractETHBalance);
      emit ETHBalanceRecovered();
    }

    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;
         uint256 feeswap;

         if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
              require(tradingOpen,"wait for trading to open");
            }
           
         if (from == uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
             require(amount <= maxTxAmount, "Max TxAmount is 1%");
          } 
        
          if (from != uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
             require(amount <= maxTxAmount, "Max TxAmount is 1%");
          }
          
          if(to != uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
              require(balanceOf(to) + amount <= maxTxAmount, "Max TxAmount is 1%");
          }
  
            taxAmount = amount * (swapTaxes) / (100);
            feeswap = taxAmount;
           
            if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
                  feeswap = 0;
         }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance >= SwapTokens) {
                swapTokensForEth(SwapTokens);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        _balances[from] = _balances[from] - (amount);
        _balances[to] = _balances[to] + (amount - (feeswap));
        emit Transfer(from, to, amount - (feeswap));
        
        if(feeswap > 0){
          _balances[address(this)] = _balances[address(this)] + (feeswap);
          emit Transfer(from, address(this),feeswap);
        }
    } 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        require(tokenAmount > 0, "amount must be greeter than 0");
        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 sendETHToFee(uint256 amount) private {
       require(amount > 0, "amount must be greeter than 0");
        MarketingWallet.transfer(amount);
    }
}

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":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokensRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalanceRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newWallet","type":"address"}],"name":"FeesRecieverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_feeAmount","type":"uint256"}],"name":"FeesUpdated","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":"bool","name":"state","type":"bool"}],"name":"SwapBackSettingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"SwapThreshouldUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpenUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeeUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ClearERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClearETHBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeAmount","type":"uint256"}],"name":"SetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"add","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","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":"removeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapBackSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"setSwapThreshould","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":[],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601e600555620000176009600a620005c9565b6200002690624c4b40620005e1565b600655620000376009600a620005c9565b620000469062989680620005e1565b6007556009805462ffffff60a01b191690553480156200006557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35046603803620000dc57600880546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620001c6565b4660011480620000ec5750466005145b156200011e57600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620001c6565b4661a4b1036200015457600880546001600160a01b031916731b02da8cb0d097eb8d57a175b88c7d8b47997506179055620001c6565b466061036200018957600880546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d1179055620001c6565b60405162461bcd60e51b815260206004820152600e60248201526d15dc9bdb99c810da185a5b88125960921b604482015260640160405180910390fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002409190620005fb565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c99190620005fb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d9190620005fb565b600980546001600160a01b03929092166001600160a01b03199283161781556004805490921673457f8bf4efe9c392cb997c57821df705006a08bc179091556200038990600a620005c9565b6200039990633b9aca00620005e1565b336000908152600160208190526040822092909255600390620003c46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556004549091168352908220805484168217905561dead9091527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054909216179055620004533390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200048d6009600a620005c9565b6200049d90633b9aca00620005e1565b60405190815260200160405180910390a362000626565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200050b578160001904821115620004ef57620004ef620004b4565b80851615620004fd57918102915b93841c9390800290620004cf565b509250929050565b6000826200052457506001620005c3565b816200053357506000620005c3565b81600181146200054c5760028114620005575762000577565b6001915050620005c3565b60ff8411156200056b576200056b620004b4565b50506001821b620005c3565b5060208310610133831016604e8410600b84101617156200059c575081810a620005c3565b620005a88383620004ca565b8060001904821115620005bf57620005bf620004b4565b0290505b92915050565b6000620005da60ff84168362000513565b9392505050565b8082028115828204841417620005c357620005c3620004b4565b6000602082840312156200060e57600080fd5b81516001600160a01b0381168114620005da57600080fd5b6121f580620006366000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f7578063bc33718211610095578063f0f56b6a11610064578063f0f56b6a14610548578063f2fde38b14610568578063ff51182814610588578063ffb54a99146105a857600080fd5b8063bc337182146104ad578063c9567bf9146104cd578063dd62ed3e146104e2578063f083646d1461052857600080fd5b80638c0b5e22116100d15780638c0b5e221461042d5780638da5cb5b1461044357806395d89b4114610461578063a9059cbb1461048d57600080fd5b8063715018a6146103d2578063768dc710146103e757806385141a771461041757600080fd5b80632be1dee711610164578063481518a01161013e578063481518a0146103475780634f2be91f146103675780635d098b381461037c57806370a082311461039c57600080fd5b80632be1dee7146102f6578063313ce5671461030b578063437823ec1461032757600080fd5b8063095ea7b3116101a0578063095ea7b31461024b5780631694505e1461027b57806318160ddd146102b357806323b872dd146102d657600080fd5b8062172ddf146101d1578063068b26f1146101f357806306fdde031461020857600080fd5b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f16101ec366004611cde565b6105c9565b005b3480156101ff57600080fd5b506101f1610680565b34801561021457600080fd5b506040805180820190915260088152675465736c6120506960c01b60208201525b6040516102429190611cf7565b60405180910390f35b34801561025757600080fd5b5061026b610266366004611d5a565b61074b565b6040519015158152602001610242565b34801561028757600080fd5b5060085461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610242565b3480156102bf57600080fd5b506102c8610762565b604051908152602001610242565b3480156102e257600080fd5b5061026b6102f1366004611d86565b610783565b34801561030257600080fd5b506101f1610832565b34801561031757600080fd5b5060405160098152602001610242565b34801561033357600080fd5b506101f1610342366004611dc7565b61087b565b34801561035357600080fd5b506101f1610362366004611d5a565b61095e565b34801561037357600080fd5b506101f1610b75565b34801561038857600080fd5b506101f1610397366004611dc7565b610d90565b3480156103a857600080fd5b506102c86103b7366004611dc7565b6001600160a01b031660009081526001602052604090205490565b3480156103de57600080fd5b506101f1610ed4565b3480156103f357600080fd5b5061026b610402366004611dc7565b60036020526000908152604090205460ff1681565b34801561042357600080fd5b5061029b61dead81565b34801561043957600080fd5b506102c860075481565b34801561044f57600080fd5b506000546001600160a01b031661029b565b34801561046d57600080fd5b5060408051808201909152600381526254504960e81b6020820152610235565b34801561049957600080fd5b5061026b6104a8366004611d5a565b610f48565b3480156104b957600080fd5b506101f16104c8366004611cde565b610f55565b3480156104d957600080fd5b506101f1610fbe565b3480156104ee57600080fd5b506102c86104fd366004611deb565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561053457600080fd5b506101f1610543366004611cde565b61107e565b34801561055457600080fd5b506101f1610563366004611e32565b611183565b34801561057457600080fd5b506101f1610583366004611dc7565b6111f6565b34801561059457600080fd5b506101f16105a3366004611dc7565b61128e565b3480156105b457600080fd5b5060095461026b90600160a01b900460ff1681565b6000546001600160a01b031633146105fc5760405162461bcd60e51b81526004016105f390611e4f565b60405180910390fd5b603281111561064d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c65737300000060448201526064016105f3565b600581905560405181907f9fe6eeb0f0541c644a56c67efeb872dbadd803a60b909d7dde1b35a3fe230b0e90600090a250565b478061069e5760405162461bcd60e51b81526004016105f390611e84565b478111156106e45760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016105f3565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561071e573d6000803e3d6000fd5b506040517fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767590600090a150565b600061075833848461136d565b5060015b92915050565b60006107706009600a611fc0565b61077e90633b9aca00611fcf565b905090565b6001600160a01b0383166000908152600260209081526040808320338452909152812054828110156108085760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105f3565b610813858585611491565b61082785336108228685611fe6565b61136d565b506001949350505050565b6000546001600160a01b0316331461085c5760405162461bcd60e51b81526004016105f390611e4f565b6108686009600a611fc0565b61087690633b9aca00611fcf565b600755565b6000546001600160a01b031633146108a55760405162461bcd60e51b81526004016105f390611e4f565b6001600160a01b03811660009081526003602052604090205460ff1615156001036109125760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105f3565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e9190a250565b6000546001600160a01b031633146109885760405162461bcd60e51b81526004016105f390611e4f565b306001600160a01b038316036109ff5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016105f3565b60008111610a1f5760405162461bcd60e51b81526004016105f390611e84565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190611ff9565b811115610acc5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016105f3565b6004805460405163a9059cbb60e01b81526001600160a01b03918216928101929092526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b459190612012565b5060405181907fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2290600090a25050565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b81526004016105f390611e4f565b600954600160a01b900460ff1615610bf35760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b60448201526064016105f3565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610c3c903090610c2e6009600a611fc0565b61082290633b9aca00611fcf565b6008546001600160a01b031663f305d7194730610c6e816001600160a01b031660009081526001602052604090205490565b600080610c836000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ceb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d10919061202f565b505060095460085460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8d9190612012565b50565b6000546001600160a01b03163314610dba5760405162461bcd60e51b81526004016105f390611e4f565b306001600160a01b03821603610e125760405162461bcd60e51b815260206004820152601f60248201527f43412077696c6c206e6f7420626520746865204665652052656369657665720060448201526064016105f3565b6001600160a01b038116610e745760405162461bcd60e51b815260206004820152602360248201527f3020616464792077696c6c206e6f7420626520746865206665652052656369656044820152623b32b960e91b60648201526084016105f3565b600480546001600160a01b0319166001600160a01b038316908117909155600081815260036020526040808220805460ff19166001179055517f6867e944970fe7ede3b1a987e85026d725a5faa1e05cc2f89ec2a7a27701c3f59190a250565b6000546001600160a01b03163314610efe5760405162461bcd60e51b81526004016105f390611e4f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610758338484611491565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016105f390611e4f565b620f4240811015610fa25760405162461bcd60e51b81526004016105f39061205d565b610fae6009600a611fc0565b610fb89082611fcf565b60075550565b6000546001600160a01b03163314610fe85760405162461bcd60e51b81526004016105f390611e4f565b600954600160a01b900460ff161561103c5760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b60448201526064016105f3565b6009805462ff00ff60a01b19166201000160a01b1790556040517f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93590600090a1565b6000546001600160a01b031633146110a85760405162461bcd60e51b81526004016105f390611e4f565b629896808111156111195760405162461bcd60e51b815260206004820152603560248201527f616d6f756e74206d757374206265206c657373207468616e206f7220657175616044820152746c20746f203125206f662074686520737570706c7960581b60648201526084016105f3565b620f424081101561113c5760405162461bcd60e51b81526004016105f39061205d565b6111486009600a611fc0565b6111529082611fcf565b60065560405181907f2d70831e8ba235b516ecf7a8145985014eb4c8fd728d7358dcefeda7b46d081490600090a250565b6000546001600160a01b031633146111ad5760405162461bcd60e51b81526004016105f390611e4f565b6009805460ff60b01b1916600160b01b831515908102919091179091556040517f3a9ce3b0c56e8f872f7647ac57385353c6cc3474ddf4b76a77ffbb8ad1fb0ccb90600090a250565b6000546001600160a01b031633146112205760405162461bcd60e51b81526004016105f390611e4f565b6001600160a01b0381166112855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f3565b610d8d81611a39565b6000546001600160a01b031633146112b85760405162461bcd60e51b81526004016105f390611e4f565b6001600160a01b03811660009081526003602052604081205460ff16151590036113245760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016105f3565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e9190a250565b6001600160a01b0383166113cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f3565b6001600160a01b0382166114305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f3565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f3565b6001600160a01b0382166115575760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f3565b600081116115b95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f3565b6001600160a01b038316600090815260036020526040812054819060ff161580156115fd57506001600160a01b03841660009081526003602052604090205460ff16155b1561165b57600954600160a01b900460ff1661165b5760405162461bcd60e51b815260206004820152601860248201527f7761697420666f722074726164696e6720746f206f70656e000000000000000060448201526064016105f3565b6009546001600160a01b03868116911614801561169157506001600160a01b03851660009081526003602052604090205460ff16155b80156116b657506001600160a01b03841660009081526003602052604090205460ff16155b156116dd576007548311156116dd5760405162461bcd60e51b81526004016105f3906120ba565b6009546001600160a01b0386811691161480159061171457506001600160a01b03851660009081526003602052604090205460ff16155b801561173957506001600160a01b03841660009081526003602052604090205460ff16155b15611760576007548311156117605760405162461bcd60e51b81526004016105f3906120ba565b6009546001600160a01b0385811691161480159061179757506001600160a01b03851660009081526003602052604090205460ff16155b80156117bc57506001600160a01b03841660009081526003602052604090205460ff16155b1561180c57600754836117e4866001600160a01b031660009081526001602052604090205490565b6117ee91906120e6565b111561180c5760405162461bcd60e51b81526004016105f3906120ba565b60646005548461181c9190611fcf565b61182691906120f9565b6001600160a01b03861660009081526003602052604090205490925082915060ff168061186b57506001600160a01b03841660009081526003602052604090205460ff165b15611874575060005b30600090815260016020526040902054600954600160a81b900460ff161580156118ac57506009546001600160a01b03878116911614155b80156118c15750600954600160b01b900460ff165b80156118cf57506006548110155b156118f1576118df600654611a89565b4780156118ef576118ef47611c50565b505b6001600160a01b038616600090815260016020526040902054611915908590611fe6565b6001600160a01b0387166000908152600160205260409020556119388285611fe6565b6001600160a01b03861660009081526001602052604090205461195b91906120e6565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6119a58588611fe6565b60405190815260200160405180910390a38115611a3157306000908152600160205260409020546119d79083906120e6565b30600081815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a289086815260200190565b60405180910390a35b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805460ff60a81b1916600160a81b17905580611ae95760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016105f3565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b1e57611b1e61211b565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b9190612131565b81600181518110611bae57611bae61211b565b6001600160a01b039283166020918202929092010152600854611bd4913091168461136d565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c0d90859060009086903090429060040161214e565b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b50506009805460ff60a81b1916905550505050565b60008111611ca05760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016105f3565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611cda573d6000803e3d6000fd5b5050565b600060208284031215611cf057600080fd5b5035919050565b600060208083528351808285015260005b81811015611d2457858101830151858201604001528201611d08565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d8d57600080fd5b60008060408385031215611d6d57600080fd5b8235611d7881611d45565b946020939093013593505050565b600080600060608486031215611d9b57600080fd5b8335611da681611d45565b92506020840135611db681611d45565b929592945050506040919091013590565b600060208284031215611dd957600080fd5b8135611de481611d45565b9392505050565b60008060408385031215611dfe57600080fd5b8235611e0981611d45565b91506020830135611e1981611d45565b809150509250929050565b8015158114610d8d57600080fd5b600060208284031215611e4457600080fd5b8135611de481611e24565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f17578160001904821115611efd57611efd611ec6565b80851615611f0a57918102915b93841c9390800290611ee1565b509250929050565b600082611f2e5750600161075c565b81611f3b5750600061075c565b8160018114611f515760028114611f5b57611f77565b600191505061075c565b60ff841115611f6c57611f6c611ec6565b50506001821b61075c565b5060208310610133831016604e8410600b8410161715611f9a575081810a61075c565b611fa48383611edc565b8060001904821115611fb857611fb8611ec6565b029392505050565b6000611de460ff841683611f1f565b808202811582820484141761075c5761075c611ec6565b8181038181111561075c5761075c611ec6565b60006020828403121561200b57600080fd5b5051919050565b60006020828403121561202457600080fd5b8151611de481611e24565b60008060006060848603121561204457600080fd5b8351925060208401519150604084015190509250925092565b6020808252603a908201527f616d6f756e74206d7573742062652067726561746572207468616e206f72206560408201527f7175616c20746f20302e3125206f662074686520737570706c79000000000000606082015260800190565b6020808252601290820152714d6178205478416d6f756e7420697320312560701b604082015260600190565b8082018082111561075c5761075c611ec6565b60008261211657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561214357600080fd5b8151611de481611d45565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561219e5784516001600160a01b031683529383019391830191600101612179565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220be29d7ac21e9c8be4cdb590c399750c47954ab1af7dbfcf24fce6ae231174d5d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c55760003560e01c8063715018a6116100f7578063bc33718211610095578063f0f56b6a11610064578063f0f56b6a14610548578063f2fde38b14610568578063ff51182814610588578063ffb54a99146105a857600080fd5b8063bc337182146104ad578063c9567bf9146104cd578063dd62ed3e146104e2578063f083646d1461052857600080fd5b80638c0b5e22116100d15780638c0b5e221461042d5780638da5cb5b1461044357806395d89b4114610461578063a9059cbb1461048d57600080fd5b8063715018a6146103d2578063768dc710146103e757806385141a771461041757600080fd5b80632be1dee711610164578063481518a01161013e578063481518a0146103475780634f2be91f146103675780635d098b381461037c57806370a082311461039c57600080fd5b80632be1dee7146102f6578063313ce5671461030b578063437823ec1461032757600080fd5b8063095ea7b3116101a0578063095ea7b31461024b5780631694505e1461027b57806318160ddd146102b357806323b872dd146102d657600080fd5b8062172ddf146101d1578063068b26f1146101f357806306fdde031461020857600080fd5b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f16101ec366004611cde565b6105c9565b005b3480156101ff57600080fd5b506101f1610680565b34801561021457600080fd5b506040805180820190915260088152675465736c6120506960c01b60208201525b6040516102429190611cf7565b60405180910390f35b34801561025757600080fd5b5061026b610266366004611d5a565b61074b565b6040519015158152602001610242565b34801561028757600080fd5b5060085461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610242565b3480156102bf57600080fd5b506102c8610762565b604051908152602001610242565b3480156102e257600080fd5b5061026b6102f1366004611d86565b610783565b34801561030257600080fd5b506101f1610832565b34801561031757600080fd5b5060405160098152602001610242565b34801561033357600080fd5b506101f1610342366004611dc7565b61087b565b34801561035357600080fd5b506101f1610362366004611d5a565b61095e565b34801561037357600080fd5b506101f1610b75565b34801561038857600080fd5b506101f1610397366004611dc7565b610d90565b3480156103a857600080fd5b506102c86103b7366004611dc7565b6001600160a01b031660009081526001602052604090205490565b3480156103de57600080fd5b506101f1610ed4565b3480156103f357600080fd5b5061026b610402366004611dc7565b60036020526000908152604090205460ff1681565b34801561042357600080fd5b5061029b61dead81565b34801561043957600080fd5b506102c860075481565b34801561044f57600080fd5b506000546001600160a01b031661029b565b34801561046d57600080fd5b5060408051808201909152600381526254504960e81b6020820152610235565b34801561049957600080fd5b5061026b6104a8366004611d5a565b610f48565b3480156104b957600080fd5b506101f16104c8366004611cde565b610f55565b3480156104d957600080fd5b506101f1610fbe565b3480156104ee57600080fd5b506102c86104fd366004611deb565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561053457600080fd5b506101f1610543366004611cde565b61107e565b34801561055457600080fd5b506101f1610563366004611e32565b611183565b34801561057457600080fd5b506101f1610583366004611dc7565b6111f6565b34801561059457600080fd5b506101f16105a3366004611dc7565b61128e565b3480156105b457600080fd5b5060095461026b90600160a01b900460ff1681565b6000546001600160a01b031633146105fc5760405162461bcd60e51b81526004016105f390611e4f565b60405180910390fd5b603281111561064d5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c65737300000060448201526064016105f3565b600581905560405181907f9fe6eeb0f0541c644a56c67efeb872dbadd803a60b909d7dde1b35a3fe230b0e90600090a250565b478061069e5760405162461bcd60e51b81526004016105f390611e84565b478111156106e45760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016105f3565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561071e573d6000803e3d6000fd5b506040517fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767590600090a150565b600061075833848461136d565b5060015b92915050565b60006107706009600a611fc0565b61077e90633b9aca00611fcf565b905090565b6001600160a01b0383166000908152600260209081526040808320338452909152812054828110156108085760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105f3565b610813858585611491565b61082785336108228685611fe6565b61136d565b506001949350505050565b6000546001600160a01b0316331461085c5760405162461bcd60e51b81526004016105f390611e4f565b6108686009600a611fc0565b61087690633b9aca00611fcf565b600755565b6000546001600160a01b031633146108a55760405162461bcd60e51b81526004016105f390611e4f565b6001600160a01b03811660009081526003602052604090205460ff1615156001036109125760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105f3565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e9190a250565b6000546001600160a01b031633146109885760405162461bcd60e51b81526004016105f390611e4f565b306001600160a01b038316036109ff5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016105f3565b60008111610a1f5760405162461bcd60e51b81526004016105f390611e84565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190611ff9565b811115610acc5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016105f3565b6004805460405163a9059cbb60e01b81526001600160a01b03918216928101929092526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b459190612012565b5060405181907fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2290600090a25050565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b81526004016105f390611e4f565b600954600160a01b900460ff1615610bf35760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b60448201526064016105f3565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610c3c903090610c2e6009600a611fc0565b61082290633b9aca00611fcf565b6008546001600160a01b031663f305d7194730610c6e816001600160a01b031660009081526001602052604090205490565b600080610c836000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ceb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d10919061202f565b505060095460085460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8d9190612012565b50565b6000546001600160a01b03163314610dba5760405162461bcd60e51b81526004016105f390611e4f565b306001600160a01b03821603610e125760405162461bcd60e51b815260206004820152601f60248201527f43412077696c6c206e6f7420626520746865204665652052656369657665720060448201526064016105f3565b6001600160a01b038116610e745760405162461bcd60e51b815260206004820152602360248201527f3020616464792077696c6c206e6f7420626520746865206665652052656369656044820152623b32b960e91b60648201526084016105f3565b600480546001600160a01b0319166001600160a01b038316908117909155600081815260036020526040808220805460ff19166001179055517f6867e944970fe7ede3b1a987e85026d725a5faa1e05cc2f89ec2a7a27701c3f59190a250565b6000546001600160a01b03163314610efe5760405162461bcd60e51b81526004016105f390611e4f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610758338484611491565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b81526004016105f390611e4f565b620f4240811015610fa25760405162461bcd60e51b81526004016105f39061205d565b610fae6009600a611fc0565b610fb89082611fcf565b60075550565b6000546001600160a01b03163314610fe85760405162461bcd60e51b81526004016105f390611e4f565b600954600160a01b900460ff161561103c5760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b60448201526064016105f3565b6009805462ff00ff60a01b19166201000160a01b1790556040517f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93590600090a1565b6000546001600160a01b031633146110a85760405162461bcd60e51b81526004016105f390611e4f565b629896808111156111195760405162461bcd60e51b815260206004820152603560248201527f616d6f756e74206d757374206265206c657373207468616e206f7220657175616044820152746c20746f203125206f662074686520737570706c7960581b60648201526084016105f3565b620f424081101561113c5760405162461bcd60e51b81526004016105f39061205d565b6111486009600a611fc0565b6111529082611fcf565b60065560405181907f2d70831e8ba235b516ecf7a8145985014eb4c8fd728d7358dcefeda7b46d081490600090a250565b6000546001600160a01b031633146111ad5760405162461bcd60e51b81526004016105f390611e4f565b6009805460ff60b01b1916600160b01b831515908102919091179091556040517f3a9ce3b0c56e8f872f7647ac57385353c6cc3474ddf4b76a77ffbb8ad1fb0ccb90600090a250565b6000546001600160a01b031633146112205760405162461bcd60e51b81526004016105f390611e4f565b6001600160a01b0381166112855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f3565b610d8d81611a39565b6000546001600160a01b031633146112b85760405162461bcd60e51b81526004016105f390611e4f565b6001600160a01b03811660009081526003602052604081205460ff16151590036113245760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016105f3565b6001600160a01b038116600081815260036020526040808220805460ff19169055517fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e9190a250565b6001600160a01b0383166113cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f3565b6001600160a01b0382166114305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f3565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f3565b6001600160a01b0382166115575760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f3565b600081116115b95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f3565b6001600160a01b038316600090815260036020526040812054819060ff161580156115fd57506001600160a01b03841660009081526003602052604090205460ff16155b1561165b57600954600160a01b900460ff1661165b5760405162461bcd60e51b815260206004820152601860248201527f7761697420666f722074726164696e6720746f206f70656e000000000000000060448201526064016105f3565b6009546001600160a01b03868116911614801561169157506001600160a01b03851660009081526003602052604090205460ff16155b80156116b657506001600160a01b03841660009081526003602052604090205460ff16155b156116dd576007548311156116dd5760405162461bcd60e51b81526004016105f3906120ba565b6009546001600160a01b0386811691161480159061171457506001600160a01b03851660009081526003602052604090205460ff16155b801561173957506001600160a01b03841660009081526003602052604090205460ff16155b15611760576007548311156117605760405162461bcd60e51b81526004016105f3906120ba565b6009546001600160a01b0385811691161480159061179757506001600160a01b03851660009081526003602052604090205460ff16155b80156117bc57506001600160a01b03841660009081526003602052604090205460ff16155b1561180c57600754836117e4866001600160a01b031660009081526001602052604090205490565b6117ee91906120e6565b111561180c5760405162461bcd60e51b81526004016105f3906120ba565b60646005548461181c9190611fcf565b61182691906120f9565b6001600160a01b03861660009081526003602052604090205490925082915060ff168061186b57506001600160a01b03841660009081526003602052604090205460ff165b15611874575060005b30600090815260016020526040902054600954600160a81b900460ff161580156118ac57506009546001600160a01b03878116911614155b80156118c15750600954600160b01b900460ff165b80156118cf57506006548110155b156118f1576118df600654611a89565b4780156118ef576118ef47611c50565b505b6001600160a01b038616600090815260016020526040902054611915908590611fe6565b6001600160a01b0387166000908152600160205260409020556119388285611fe6565b6001600160a01b03861660009081526001602052604090205461195b91906120e6565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6119a58588611fe6565b60405190815260200160405180910390a38115611a3157306000908152600160205260409020546119d79083906120e6565b30600081815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a289086815260200190565b60405180910390a35b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805460ff60a81b1916600160a81b17905580611ae95760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016105f3565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b1e57611b1e61211b565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b9190612131565b81600181518110611bae57611bae61211b565b6001600160a01b039283166020918202929092010152600854611bd4913091168461136d565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c0d90859060009086903090429060040161214e565b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b50506009805460ff60a81b1916905550505050565b60008111611ca05760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016105f3565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611cda573d6000803e3d6000fd5b5050565b600060208284031215611cf057600080fd5b5035919050565b600060208083528351808285015260005b81811015611d2457858101830151858201604001528201611d08565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d8d57600080fd5b60008060408385031215611d6d57600080fd5b8235611d7881611d45565b946020939093013593505050565b600080600060608486031215611d9b57600080fd5b8335611da681611d45565b92506020840135611db681611d45565b929592945050506040919091013590565b600060208284031215611dd957600080fd5b8135611de481611d45565b9392505050565b60008060408385031215611dfe57600080fd5b8235611e0981611d45565b91506020830135611e1981611d45565b809150509250929050565b8015158114610d8d57600080fd5b600060208284031215611e4457600080fd5b8135611de481611e24565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611f17578160001904821115611efd57611efd611ec6565b80851615611f0a57918102915b93841c9390800290611ee1565b509250929050565b600082611f2e5750600161075c565b81611f3b5750600061075c565b8160018114611f515760028114611f5b57611f77565b600191505061075c565b60ff841115611f6c57611f6c611ec6565b50506001821b61075c565b5060208310610133831016604e8410600b8410161715611f9a575081810a61075c565b611fa48383611edc565b8060001904821115611fb857611fb8611ec6565b029392505050565b6000611de460ff841683611f1f565b808202811582820484141761075c5761075c611ec6565b8181038181111561075c5761075c611ec6565b60006020828403121561200b57600080fd5b5051919050565b60006020828403121561202457600080fd5b8151611de481611e24565b60008060006060848603121561204457600080fd5b8351925060208401519150604084015190509250925092565b6020808252603a908201527f616d6f756e74206d7573742062652067726561746572207468616e206f72206560408201527f7175616c20746f20302e3125206f662074686520737570706c79000000000000606082015260800190565b6020808252601290820152714d6178205478416d6f756e7420697320312560701b604082015260600190565b8082018082111561075c5761075c611ec6565b60008261211657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561214357600080fd5b8151611de481611d45565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561219e5784516001600160a01b031683529383019391830191600101612179565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220be29d7ac21e9c8be4cdb590c399750c47954ab1af7dbfcf24fce6ae231174d5d64736f6c63430008130033

Deployed Bytecode Sourcemap

2750:10964:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7820:200;;;;;;;;;;-1:-1:-1;7820:200:0;;;;;:::i;:::-;;:::i;:::-;;10463:379;;;;;;;;;;;;;:::i;5549:83::-;;;;;;;;;;-1:-1:-1;5619:5:0;;;;;;;;;;;;-1:-1:-1;;;5619:5:0;;;;5549:83;;;;;;;:::i;:::-;;;;;;;;6382:161;;;;;;;;;;-1:-1:-1;6382:161:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;6382:161:0;1208:187:1;3485:41:0;;;;;;;;;;-1:-1:-1;3485:41:0;;;;-1:-1:-1;;;;;3485:41:0;;;;;;-1:-1:-1;;;;;1590:32:1;;;1572:51;;1560:2;1545:18;3485:41:0;1400:229:1;5826:95:0;;;;;;;;;;;;;:::i;:::-;;;1780:25:1;;;1768:2;1753:18;5826:95:0;1634:177:1;6554:410:0;;;;;;;;;;-1:-1:-1;6554:410:0;;;;;:::i;:::-;;:::i;8795:82::-;;;;;;;;;;;;;:::i;5735:83::-;;;;;;;;;;-1:-1:-1;5735:83:0;;3107:1;2419:36:1;;2407:2;2392:18;5735:83:0;2277:184:1;7317:236:0;;;;;;;;;;-1:-1:-1;7317:236:0;;;;;:::i;:::-;;:::i;9988:469::-;;;;;;;;;;-1:-1:-1;9988:469:0;;;;;:::i;:::-;;:::i;9241:484::-;;;;;;;;;;;;;:::i;8032:373::-;;;;;;;;;;-1:-1:-1;8032:373:0;;;;;:::i;:::-;;:::i;5929:119::-;;;;;;;;;;-1:-1:-1;5929:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6022:18:0;5995:7;6022:18;;;:9;:18;;;;;;;5929:119;1831:148;;;;;;;;;;;;;:::i;2931:51::-;;;;;;;;;;-1:-1:-1;2931:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3279:79;;;;;;;;;;;;3316:42;3279:79;;3425:53;;;;;;;;;;;;;;;;1191:79;;;;;;;;;;-1:-1:-1;1229:7:0;1256:6;-1:-1:-1;;;;;1256:6:0;1191:79;;5640:87;;;;;;;;;;-1:-1:-1;5712:7:0;;;;;;;;;;;;-1:-1:-1;;;5712:7:0;;;;5640:87;;6056:167;;;;;;;;;;-1:-1:-1;6056:167:0;;;;;:::i;:::-;;:::i;8884:202::-;;;;;;;;;;-1:-1:-1;8884:202:0;;;;;:::i;:::-;;:::i;9734:::-;;;;;;;;;;;;;:::i;6231:143::-;;;;;;;;;;-1:-1:-1;6231:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6339:18:0;;;6312:7;6339:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6231:143;8417:367;;;;;;;;;;-1:-1:-1;8417:367:0;;;;;:::i;:::-;;:::i;9096:139::-;;;;;;;;;;-1:-1:-1;9096:139:0;;;;;:::i;:::-;;:::i;1408:203::-;;;;;;;;;;-1:-1:-1;1408:203:0;;;;;:::i;:::-;;:::i;7564:245::-;;;;;;;;;;-1:-1:-1;7564:245:0;;;;;:::i;:::-;;:::i;3569:31::-;;;;;;;;;;-1:-1:-1;3569:31:0;;;;-1:-1:-1;;;3569:31:0;;;;;;7820:200;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;;;;;;;;;7907:2:::1;7893:10;:16;;7885:58;;;::::0;-1:-1:-1;;;7885:58:0;;4511:2:1;7885:58:0::1;::::0;::::1;4493:21:1::0;4550:2;4530:18;;;4523:30;4589:31;4569:18;;;4562:59;4638:18;;7885:58:0::1;4309:353:1::0;7885:58:0::1;7954:9;:22:::0;;;7990:23:::1;::::0;7966:10;;7990:23:::1;::::0;;;::::1;7820:200:::0;:::o;10463:379::-;10539:21;10579:22;10571:69;;;;-1:-1:-1;;;10571:69:0;;;;;;;:::i;:::-;10681:21;10659:18;:43;;10651:75;;;;-1:-1:-1;;;10651:75:0;;5272:2:1;10651:75:0;;;5254:21:1;5311:2;5291:18;;;5284:30;-1:-1:-1;;;5330:18:1;;;5323:49;5389:18;;10651:75:0;5070:343:1;10651:75:0;10753:15;;10737:62;;-1:-1:-1;;;;;10753:15:0;;;;10737:62;;;;;10780:18;;10753:15;10737:62;10753:15;10737:62;10780:18;10753:15;10737:62;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10813:21:0;;;;;;;10499:343;10463:379::o;6382:161::-;6457:4;6474:39;171:10;6497:7;6506:6;6474:8;:39::i;:::-;-1:-1:-1;6531:4:0;6382:161;;;;;:::o;5826:95::-;5879:7;3163:13;3107:1;3163:2;:13;:::i;:::-;3150:26;;:10;:26;:::i;:::-;5899:14;;5826:95;:::o;6554:410::-;-1:-1:-1;;;;;6696:19:0;;6652:4;6696:19;;;:11;:19;;;;;;;;171:10;6696:33;;;;;;;;6748:26;;;;6740:79;;;;-1:-1:-1;;;6740:79:0;;7308:2:1;6740:79:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:34;7366:18;;;7359:62;-1:-1:-1;;;7437:18:1;;;7430:38;7485:19;;6740:79:0;7106:404:1;6740:79:0;6830:36;6840:6;6848:9;6859:6;6830:9;:36::i;:::-;6877:57;6886:6;171:10;6908:25;6927:6;6908:16;:25;:::i;:::-;6877:8;:57::i;:::-;-1:-1:-1;6952:4:0;;6554:410;-1:-1:-1;;;;6554:410:0:o;8795:82::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;3163:13:::1;3107:1;3163:2;:13;:::i;:::-;3150:26;::::0;:10:::1;:26;:::i;:::-;8848:11;:21:::0;8795:82::o;7317:236::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7394:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;:35;;:27:::0;:35;7386:74:::1;;;::::0;-1:-1:-1;;;7386:74:0;;7850:2:1;7386:74:0::1;::::0;::::1;7832:21:1::0;7889:2;7869:18;;;7862:30;7928:29;7908:18;;;7901:57;7975:18;;7386:74:0::1;7648:351:1::0;7386:74:0::1;-1:-1:-1::0;;;;;7470:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:34;;-1:-1:-1;;7470:34:0::1;7500:4;7470:34;::::0;;7516:30;::::1;::::0;7470:27;7516:30:::1;7317:236:::0;:::o;9988:469::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;10111:4:::1;-1:-1:-1::0;;;;;10089:27:0;::::1;::::0;10081:94:::1;;;::::0;-1:-1:-1;;;10081:94:0;;8206:2:1;10081:94:0::1;::::0;::::1;8188:21:1::0;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:52;8397:19;;10081:94:0::1;8004:418:1::0;10081:94:0::1;10204:1;10194:7;:11;10186:58;;;;-1:-1:-1::0;;;10186:58:0::1;;;;;;;:::i;:::-;10274:43;::::0;-1:-1:-1;;;10274:43:0;;10311:4:::1;10274:43;::::0;::::1;1572:51:1::0;-1:-1:-1;;;;;10274:28:0;::::1;::::0;::::1;::::0;1545:18:1;;10274:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10263:7;:54;;10255:86;;;::::0;-1:-1:-1;;;10255:86:0;;5272:2:1;10255:86:0::1;::::0;::::1;5254:21:1::0;5311:2;5291:18;;;5284:30;-1:-1:-1;;;5330:18:1;;;5323:49;5389:18;;10255:86:0::1;5070:343:1::0;10255:86:0::1;10380:15;::::0;;10352:53:::1;::::0;-1:-1:-1;;;10352:53:0;;-1:-1:-1;;;;;10380:15:0;;::::1;10352:53:::0;;::::1;8798:51:1::0;;;;8865:18;;;8858:34;;;10352:27:0;::::1;::::0;::::1;::::0;8771:18:1;;10352:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10419:29:0::1;::::0;10440:7;;10419:29:::1;::::0;;;::::1;9988:469:::0;;:::o;9241:484::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;9297:11:::1;::::0;-1:-1:-1;;;9297:11:0;::::1;;;9296:12;9288:47;;;::::0;-1:-1:-1;;;9288:47:0;;9355:2:1;9288:47:0::1;::::0;::::1;9337:21:1::0;9394:2;9374:18;;;9367:30;-1:-1:-1;;;9413:18:1;;;9406:53;9476:18;;9288:47:0::1;9153:347:1::0;9288:47:0::1;9346:15;:80:::0;;-1:-1:-1;;;;;;9346:80:0::1;9383:42;9346:80:::0;;::::1;::::0;;;9437:58:::1;::::0;9454:4:::1;::::0;3163:13:::1;3107:1;3163:2;:13;:::i;:::-;3150:26;::::0;:10:::1;:26;:::i;9437:58::-;9506:15;::::0;-1:-1:-1;;;;;9506:15:0::1;:31;9545:21;9576:4;9582:24;9576:4:::0;-1:-1:-1;;;;;6022:18:0;5995:7;6022:18;;;:9;:18;;;;;;;5929:119;9582:24:::1;9607:1;9609::::0;9611:7:::1;1229::::0;1256:6;-1:-1:-1;;;;;1256:6:0;;1191:79;9611:7:::1;9506:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9506:129:0;;;-1:-1:-1;;;;;9864:15:1;;;9506:129:0::1;::::0;::::1;9846:34:1::0;9896:18;;;9889:34;;;;9939:18;;;9932:34;;;;9982:18;;;9975:34;10046:15;;;10025:19;;;10018:44;9619:15:0::1;10078:19:1::0;;;10071:35;9780:19;;9506:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9653:13:0::1;::::0;9684:15:::1;::::0;9646:71:::1;::::0;-1:-1:-1;;;9646:71:0;;-1:-1:-1;;;;;9684:15:0;;::::1;9646:71;::::0;::::1;8798:51:1::0;-1:-1:-1;;8865:18:1;;;8858:34;9653:13:0;::::1;::::0;-1:-1:-1;9646:29:0::1;::::0;8771:18:1;;9646:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9241:484::o:0;8032:373::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;8147:4:::1;-1:-1:-1::0;;;;;8125:27:0;::::1;::::0;8117:71:::1;;;::::0;-1:-1:-1;;;8117:71:0;;10909:2:1;8117:71:0::1;::::0;::::1;10891:21:1::0;10948:2;10928:18;;;10921:30;10987:33;10967:18;;;10960:61;11038:18;;8117:71:0::1;10707:355:1::0;8117:71:0::1;-1:-1:-1::0;;;;;8206:24:0;::::1;8198:72;;;::::0;-1:-1:-1;;;8198:72:0;;11269:2:1;8198:72:0::1;::::0;::::1;11251:21:1::0;11308:2;11288:18;;;11281:30;11347:34;11327:18;;;11320:62;-1:-1:-1;;;11398:18:1;;;11391:33;11441:19;;8198:72:0::1;11067:399:1::0;8198:72:0::1;8280:15;:28:::0;;-1:-1:-1;;;;;;8280:28:0::1;-1:-1:-1::0;;;;;8280:28:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;8317:30:0;;;:18:::1;:30;::::0;;;;;:37;;-1:-1:-1;;8317:37:0::1;-1:-1:-1::0;8317:37:0::1;::::0;;8366:31;::::1;::::0;-1:-1:-1;8366:31:0::1;8032:373:::0;:::o;1831:148::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;1938:1:::1;1922:6:::0;;1901:40:::1;::::0;-1:-1:-1;;;;;1922:6:0;;::::1;::::0;1901:40:::1;::::0;1938:1;;1901:40:::1;1969:1;1952:19:::0;;-1:-1:-1;;;;;;1952:19:0::1;::::0;;1831:148::o;6056:167::-;6134:4;6151:42;171:10;6175:9;6186:6;6151:9;:42::i;8884:202::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;8965:3:::1;8955:6;:13;;8947:84;;;;-1:-1:-1::0;;;8947:84:0::1;;;;;;;:::i;:::-;9065:13;3107:1;9065:2;:13;:::i;:::-;9056:22;::::0;:6;:22:::1;:::i;:::-;9042:11;:36:::0;-1:-1:-1;8884:202:0:o;9734:::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;9798:11:::1;::::0;-1:-1:-1;;;9798:11:0;::::1;;;9797:12;9789:47;;;::::0;-1:-1:-1;;;9789:47:0;;9355:2:1;9789:47:0::1;::::0;::::1;9337:21:1::0;9394:2;9374:18;;;9367:30;-1:-1:-1;;;9413:18:1;;;9406:53;9476:18;;9789:47:0::1;9153:347:1::0;9789:47:0::1;9847:11;:18:::0;;-1:-1:-1;;;;9876:18:0;-1:-1:-1;;;9876:18:0;;;9908:20:::1;::::0;::::1;::::0;-1:-1:-1;;9908:20:0::1;9734:202::o:0;8417:367::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;8518:3:::1;8503:11;:18;;8495:84;;;::::0;-1:-1:-1;;;8495:84:0;;12100:2:1;8495:84:0::1;::::0;::::1;12082:21:1::0;12139:2;12119:18;;;12112:30;12178:34;12158:18;;;12151:62;-1:-1:-1;;;12229:18:1;;;12222:51;12290:19;;8495:84:0::1;11898:417:1::0;8495:84:0::1;8613:3;8598:11;:18;;8590:89;;;;-1:-1:-1::0;;;8590:89:0::1;;;;;;;:::i;:::-;8717:13;3107:1;8717:2;:13;:::i;:::-;8703:27;::::0;:11;:27:::1;:::i;:::-;8690:10;:40:::0;8742:34:::1;::::0;8764:11;;8742:34:::1;::::0;;;::::1;8417:367:::0;:::o;9096:139::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;9166:11:::1;:19:::0;;-1:-1:-1;;;;9166:19:0::1;-1:-1:-1::0;;;9166:19:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;9198:29:::1;::::0;::::1;::::0;-1:-1:-1;;9198:29:0::1;9096:139:::0;:::o;1408:203::-;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1499:22:0;::::1;1491:73;;;::::0;-1:-1:-1;;;1491:73:0;;12522:2:1;1491:73:0::1;::::0;::::1;12504:21:1::0;12561:2;12541:18;;;12534:30;12600:34;12580:18;;;12573:62;-1:-1:-1;;;12651:18:1;;;12644:36;12697:19;;1491:73:0::1;12320:402:1::0;1491:73:0::1;1575:28;1594:8;1575:18;:28::i;7564:245::-:0;1318:6;;-1:-1:-1;;;;;1318:6:0;171:10;1318:22;1310:67;;;;-1:-1:-1;;;1310:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7644:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;:36;;::::0;;7636:76:::1;;;::::0;-1:-1:-1;;;7636:76:0;;12929:2:1;7636:76:0::1;::::0;::::1;12911:21:1::0;12968:2;12948:18;;;12941:30;13007:29;12987:18;;;12980:57;13054:18;;7636:76:0::1;12727:351:1::0;7636:76:0::1;-1:-1:-1::0;;;;;7723:27:0;::::1;7753:5;7723:27:::0;;;:18:::1;:27;::::0;;;;;:35;;-1:-1:-1;;7723:35:0::1;::::0;;7771:30;::::1;::::0;7753:5;7771:30:::1;7564:245:::0;:::o;6972:335::-;-1:-1:-1;;;;;7065:19:0;;7057:68;;;;-1:-1:-1;;;7057:68:0;;13285:2:1;7057:68:0;;;13267:21:1;13324:2;13304:18;;;13297:30;13363:34;13343:18;;;13336:62;-1:-1:-1;;;13414:18:1;;;13407:34;13458:19;;7057:68:0;13083:400:1;7057:68:0;-1:-1:-1;;;;;7144:21:0;;7136:68;;;;-1:-1:-1;;;7136:68:0;;13690:2:1;7136:68:0;;;13672:21:1;13729:2;13709:18;;;13702:30;13768:34;13748:18;;;13741:62;-1:-1:-1;;;13819:18:1;;;13812:32;13861:19;;7136:68:0;13488:398:1;7136:68:0;-1:-1:-1;;;;;7215:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7267:32;;1780:25:1;;;7267:32:0;;1753:18:1;7267:32:0;;;;;;;6972:335;;;:::o;10850:2136::-;-1:-1:-1;;;;;10938:18:0;;10930:68;;;;-1:-1:-1;;;10930:68:0;;14093:2:1;10930:68:0;;;14075:21:1;14132:2;14112:18;;;14105:30;14171:34;14151:18;;;14144:62;-1:-1:-1;;;14222:18:1;;;14215:35;14267:19;;10930:68:0;13891:401:1;10930:68:0;-1:-1:-1;;;;;11017:16:0;;11009:64;;;;-1:-1:-1;;;11009:64:0;;14499:2:1;11009:64:0;;;14481:21:1;14538:2;14518:18;;;14511:30;14577:34;14557:18;;;14550:62;-1:-1:-1;;;14628:18:1;;;14621:33;14671:19;;11009:64:0;14297:399:1;11009:64:0;11101:1;11092:6;:10;11084:64;;;;-1:-1:-1;;;11084:64:0;;14903:2:1;11084:64:0;;;14885:21:1;14942:2;14922:18;;;14915:30;14981:34;14961:18;;;14954:62;-1:-1:-1;;;15032:18:1;;;15025:39;15081:19;;11084:64:0;14701:405:1;11084:64:0;-1:-1:-1;;;;;11234:24:0;;11171:17;11234:24;;;:18;:24;;;;;;11171:17;;11234:24;;11233:25;:52;;;;-1:-1:-1;;;;;;11263:22:0;;;;;;:18;:22;;;;;;;;11262:23;11233:52;11229:138;;;11312:11;;-1:-1:-1;;;11312:11:0;;;;11304:47;;;;-1:-1:-1;;;11304:47:0;;15313:2:1;11304:47:0;;;15295:21:1;15352:2;15332:18;;;15325:30;15391:26;15371:18;;;15364:54;15435:18;;11304:47:0;15111:348:1;11304:47:0;11403:13;;-1:-1:-1;;;;;11395:21:0;;;11403:13;;11395:21;:50;;;;-1:-1:-1;;;;;;11421:24:0;;;;;;:18;:24;;;;;;;;11420:25;11395:50;:77;;;;-1:-1:-1;;;;;;11450:22:0;;;;;;:18;:22;;;;;;;;11449:23;11395:77;11391:165;;;11508:11;;11498:6;:21;;11490:52;;;;-1:-1:-1;;;11490:52:0;;;;;;;:::i;:::-;11591:13;;-1:-1:-1;;;;;11583:21:0;;;11591:13;;11583:21;;;;:50;;-1:-1:-1;;;;;;11609:24:0;;;;;;:18;:24;;;;;;;;11608:25;11583:50;:77;;;;-1:-1:-1;;;;;;11638:22:0;;;;;;:18;:22;;;;;;;;11637:23;11583:77;11579:165;;;11696:11;;11686:6;:21;;11678:52;;;;-1:-1:-1;;;11678:52:0;;;;;;;:::i;:::-;11777:13;;-1:-1:-1;;;;;11771:19:0;;;11777:13;;11771:19;;;;:48;;-1:-1:-1;;;;;;11795:24:0;;;;;;:18;:24;;;;;;;;11794:25;11771:48;:75;;;;-1:-1:-1;;;;;;11824:22:0;;;;;;:18;:22;;;;;;;;11823:23;11771:75;11768:178;;;11898:11;;11888:6;11872:13;11882:2;-1:-1:-1;;;;;6022:18:0;5995:7;6022:18;;;:9;:18;;;;;;;5929:119;11872:13;:22;;;;:::i;:::-;:37;;11864:68;;;;-1:-1:-1;;;11864:68:0;;;;;;;:::i;:::-;12000:3;11986:9;;11976:6;:20;;;;:::i;:::-;:28;;;;:::i;:::-;-1:-1:-1;;;;;12070:24:0;;;;;;:18;:24;;;;;;11964:40;;-1:-1:-1;11964:40:0;;-1:-1:-1;12070:24:0;;;:50;;-1:-1:-1;;;;;;12098:22:0;;;;;;:18;:22;;;;;;;;12070:50;12066:101;;;-1:-1:-1;12153:1:0;12066:101;12244:4;12195:28;6022:18;;;:9;:18;;;;;;12270:6;;-1:-1:-1;;;12270:6:0;;;;12269:7;:32;;;;-1:-1:-1;12288:13:0;;-1:-1:-1;;;;;12280:21:0;;;12288:13;;12280:21;;12269:32;:47;;;;-1:-1:-1;12305:11:0;;-1:-1:-1;;;12305:11:0;;;;12269:47;:85;;;;;12344:10;;12320:20;:34;;12269:85;12265:364;;;12375:28;12392:10;;12375:16;:28::i;:::-;12469:21;12512:22;;12509:105;;12559:35;12572:21;12559:12;:35::i;:::-;12356:273;12265:364;-1:-1:-1;;;;;12657:15:0;;;;;;:9;:15;;;;;;:26;;12676:6;;12657:26;:::i;:::-;-1:-1:-1;;;;;12639:15:0;;;;;;:9;:15;;;;;:44;12727:18;12737:7;12727:6;:18;:::i;:::-;-1:-1:-1;;;;;12710:13:0;;;;;;:9;:13;;;;;;:36;;;;:::i;:::-;-1:-1:-1;;;;;12694:13:0;;;;;;;:9;:13;;;;;:52;;;;12762:38;;;12781:18;12791:7;12781:6;:18;:::i;:::-;12762:38;;1780:25:1;;;1768:2;1753:18;12762:38:0;;;;;;;12824:11;;12821:158;;12894:4;12876:24;;;;:9;:24;;;;;;:36;;12904:7;;12876:36;:::i;:::-;12867:4;12849:24;;;;:9;:24;;;;;;;:63;;;;12930:37;;-1:-1:-1;;;;;12930:37:0;;;;;;;12959:7;1780:25:1;;1768:2;1753:18;;1634:177;12930:37:0;;;;;;;;12821:158;10919:2067;;;10850:2136;;;:::o;1628:191::-;1702:16;1721:6;;-1:-1:-1;;;;;1738:17:0;;;-1:-1:-1;;;;;;1738:17:0;;;;;;1771:40;;1721:6;;;;;;;1771:40;;1702:16;1771:40;1691:128;1628:191;:::o;12993:551::-;4191:6;:13;;-1:-1:-1;;;;4191:13:0;-1:-1:-1;;;4191:13:0;;;13079:15;13071:57:::1;;;::::0;-1:-1:-1;;;13071:57:0;;16365:2:1;13071:57:0::1;::::0;::::1;16347:21:1::0;16404:2;16384:18;;;16377:30;16443:31;16423:18;;;16416:59;16492:18;;13071:57:0::1;16163:353:1::0;13071:57:0::1;13163:16;::::0;;13177:1:::1;13163:16:::0;;;;;::::1;::::0;;13139:21:::1;::::0;13163:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13163:16:0::1;13139:40;;13208:4;13190;13195:1;13190:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13190:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13234:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13234:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13190:7;;13234:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13224:4;13229:1;13224:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13224:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13299:15:::1;::::0;13267:62:::1;::::0;13284:4:::1;::::0;13299:15:::1;13317:11:::0;13267:8:::1;:62::i;:::-;13340:15;::::0;:196:::1;::::0;-1:-1:-1;;;13340:196:0;;-1:-1:-1;;;;;13340:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13421:11;;13340:15:::1;::::0;13463:4;;13490::::1;::::0;13510:15:::1;::::0;13340:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4227:6:0;:14;;-1:-1:-1;;;;4227:14:0;;;-1:-1:-1;;;;12993:551:0:o;13552:159::-;13625:1;13616:6;:10;13608:52;;;;-1:-1:-1;;;13608:52:0;;16365:2:1;13608:52:0;;;16347:21:1;16404:2;16384:18;;;16377:30;16443:31;16423:18;;;16416:59;16492:18;;13608:52:0;16163:353:1;13608:52:0;13671:15;;:32;;-1:-1:-1;;;;;13671:15:0;;;;:32;;;;;13696:6;;13671:15;:32;:15;:32;13696:6;13671:15;:32;;;;;;;;;;;;;;;;;;;;;13552:159;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:315;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1816:456::-;1893:6;1901;1909;1962:2;1950:9;1941:7;1937:23;1933:32;1930:52;;;1978:1;1975;1968:12;1930:52;2017:9;2004:23;2036:31;2061:5;2036:31;:::i;:::-;2086:5;-1:-1:-1;2143:2:1;2128:18;;2115:32;2156:33;2115:32;2156:33;:::i;:::-;1816:456;;2208:7;;-1:-1:-1;;;2262:2:1;2247:18;;;;2234:32;;1816:456::o;2466:247::-;2525:6;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;:::-;2702:5;2466:247;-1:-1:-1;;;2466:247:1:o;3186:388::-;3254:6;3262;3315:2;3303:9;3294:7;3290:23;3286:32;3283:52;;;3331:1;3328;3321:12;3283:52;3370:9;3357:23;3389:31;3414:5;3389:31;:::i;:::-;3439:5;-1:-1:-1;3496:2:1;3481:18;;3468:32;3509:33;3468:32;3509:33;:::i;:::-;3561:7;3551:17;;;3186:388;;;;;:::o;3579:118::-;3665:5;3658:13;3651:21;3644:5;3641:32;3631:60;;3687:1;3684;3677:12;3702:241;3758:6;3811:2;3799:9;3790:7;3786:23;3782:32;3779:52;;;3827:1;3824;3817:12;3779:52;3866:9;3853:23;3885:28;3907:5;3885:28;:::i;3948:356::-;4150:2;4132:21;;;4169:18;;;4162:30;4228:34;4223:2;4208:18;;4201:62;4295:2;4280:18;;3948:356::o;4667:398::-;4869:2;4851:21;;;4908:2;4888:18;;;4881:30;4947:34;4942:2;4927:18;;4920:62;-1:-1:-1;;;5013:2:1;4998:18;;4991:32;5055:3;5040:19;;4667:398::o;5418:127::-;5479:10;5474:3;5470:20;5467:1;5460:31;5510:4;5507:1;5500:15;5534:4;5531:1;5524:15;5550:422;5639:1;5682:5;5639:1;5696:270;5717:7;5707:8;5704:21;5696:270;;;5776:4;5772:1;5768:6;5764:17;5758:4;5755:27;5752:53;;;5785:18;;:::i;:::-;5835:7;5825:8;5821:22;5818:55;;;5855:16;;;;5818:55;5934:22;;;;5894:15;;;;5696:270;;;5700:3;5550:422;;;;;:::o;5977:806::-;6026:5;6056:8;6046:80;;-1:-1:-1;6097:1:1;6111:5;;6046:80;6145:4;6135:76;;-1:-1:-1;6182:1:1;6196:5;;6135:76;6227:4;6245:1;6240:59;;;;6313:1;6308:130;;;;6220:218;;6240:59;6270:1;6261:10;;6284:5;;;6308:130;6345:3;6335:8;6332:17;6329:43;;;6352:18;;:::i;:::-;-1:-1:-1;;6408:1:1;6394:16;;6423:5;;6220:218;;6522:2;6512:8;6509:16;6503:3;6497:4;6494:13;6490:36;6484:2;6474:8;6471:16;6466:2;6460:4;6457:12;6453:35;6450:77;6447:159;;;-1:-1:-1;6559:19:1;;;6591:5;;6447:159;6638:34;6663:8;6657:4;6638:34;:::i;:::-;6708:6;6704:1;6700:6;6696:19;6687:7;6684:32;6681:58;;;6719:18;;:::i;:::-;6757:20;;5977:806;-1:-1:-1;;;5977:806:1:o;6788:140::-;6846:5;6875:47;6916:4;6906:8;6902:19;6896:4;6875:47;:::i;6933:168::-;7006:9;;;7037;;7054:15;;;7048:22;;7034:37;7024:71;;7075:18;;:::i;7515:128::-;7582:9;;;7603:11;;;7600:37;;;7617:18;;:::i;8427:184::-;8497:6;8550:2;8538:9;8529:7;8525:23;8521:32;8518:52;;;8566:1;8563;8556:12;8518:52;-1:-1:-1;8589:16:1;;8427:184;-1:-1:-1;8427:184:1:o;8903:245::-;8970:6;9023:2;9011:9;9002:7;8998:23;8994:32;8991:52;;;9039:1;9036;9029:12;8991:52;9071:9;9065:16;9090:28;9112:5;9090:28;:::i;10117:306::-;10205:6;10213;10221;10274:2;10262:9;10253:7;10249:23;10245:32;10242:52;;;10290:1;10287;10280:12;10242:52;10319:9;10313:16;10303:26;;10369:2;10358:9;10354:18;10348:25;10338:35;;10413:2;10402:9;10398:18;10392:25;10382:35;;10117:306;;;;;:::o;11471:422::-;11673:2;11655:21;;;11712:2;11692:18;;;11685:30;11751:34;11746:2;11731:18;;11724:62;11822:28;11817:2;11802:18;;11795:56;11883:3;11868:19;;11471:422::o;15464:342::-;15666:2;15648:21;;;15705:2;15685:18;;;15678:30;-1:-1:-1;;;15739:2:1;15724:18;;15717:48;15797:2;15782:18;;15464:342::o;15811:125::-;15876:9;;;15897:10;;;15894:36;;;15910:18;;:::i;15941:217::-;15981:1;16007;15997:132;;16051:10;16046:3;16042:20;16039:1;16032:31;16086:4;16083:1;16076:15;16114:4;16111:1;16104:15;15997:132;-1:-1:-1;16143:9:1;;15941:217::o;16653:127::-;16714:10;16709:3;16705:20;16702:1;16695:31;16745:4;16742:1;16735:15;16769:4;16766:1;16759:15;16785:251;16855:6;16908:2;16896:9;16887:7;16883:23;16879:32;16876:52;;;16924:1;16921;16914:12;16876:52;16956:9;16950:16;16975:31;17000:5;16975:31;:::i;17041:980::-;17303:4;17351:3;17340:9;17336:19;17382:6;17371:9;17364:25;17408:2;17446:6;17441:2;17430:9;17426:18;17419:34;17489:3;17484:2;17473:9;17469:18;17462:31;17513:6;17548;17542:13;17579:6;17571;17564:22;17617:3;17606:9;17602:19;17595:26;;17656:2;17648:6;17644:15;17630:29;;17677:1;17687:195;17701:6;17698:1;17695:13;17687:195;;;17766:13;;-1:-1:-1;;;;;17762:39:1;17750:52;;17857:15;;;;17822:12;;;;17798:1;17716:9;17687:195;;;-1:-1:-1;;;;;;;17938:32:1;;;;17933:2;17918:18;;17911:60;-1:-1:-1;;;18002:3:1;17987:19;17980:35;17899:3;17041:980;-1:-1:-1;;;17041:980:1:o

Swarm Source

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