ETH Price: $2,922.39 (-7.74%)
Gas: 8 Gwei

Token

COMPODE (COM)
 

Overview

Max Total Supply

1,000,000,000 COM

Holders

157

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 COM

Value
$0.00
0x01ac65c3f06ab638e872ff7fb40f7a61ba6b1f6a
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:
compode

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-12
*/

// SPDX-License-Identifier: MIT     
/*
WEBSITE: https://www.compode.dev/
TELEGRAM: https://t.me/compode
TWITTER: https://twitter.com/compodeproject 
DOCS: https://docs.compode.dev/
*/

pragma solidity 0.8.20;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
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 compode is Context, IERC20, Ownable {
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isBlacklisted;
    mapping (address => bool) private _isExcludedFromFee;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address payable private MarketingWallet;
    address payable private DevWallet;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal =  1000000000 * 10**_decimals; 
    string private constant _name = "COMPODE";
    string private constant _symbol = "COM";
    uint256 private SwapTokens = 1000000 * 10**_decimals; 
    uint256 private maxSwapTokens = 16000000 * 10**_decimals;
    uint256 public maxTxAmount = 16000000 * 10**_decimals; 
    uint256 private buyTaxes = 30;
    uint256 private sellTaxes = 40;
    uint256 private _Buys_In = 0;
   
    IUniswapV2Router02 public uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradeEnable = false;
    bool private _SwapBackEnable = false;
    bool private inSwap = false;
    
    
    event FeesRecieverUpdated(address indexed _newWallet);
    event ExcludeFromFeeUpdated(address indexed account);
    event includeFromFeeUpdated(address indexed account);
    event SwapThreshouldUpdated(uint256 indexed minToken, uint256 indexed maxToken);
    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(0xF6f679B46ACc13353e3948e5bBFB1EBcCc34CA00);
         DevWallet = payable (0x9Da5bD4794C58DBB8c1ed0f7383F7B260530b94a);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[MarketingWallet] = true;
        _isExcludedFromFee[DevWallet] = 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 min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
    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 _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");
        require(!isBlacklisted[from] && !isBlacklisted[to],"You can't transfer tokens");
        uint256 TaxSwap=0;

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradeEnable, "Trading not enabled");       
               TaxSwap = amount * (buyTaxes) / (100);
        }
        
         if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            TaxSwap = 0;
        } 
         
          if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
             require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
             require(balanceOf(to) + amount <= maxTxAmount, "Exceeds the maxWalletSize.");
              _Buys_In++;
          } 
        
          if (from != uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
             require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
          }
        
          if (to == uniswapV2Pair && from != address(this) && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                   TaxSwap = amount * (sellTaxes) / (100);
                
                } 
       
             uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && _SwapBackEnable && contractTokenBalance > SwapTokens && _Buys_In > 1) {
                swapTokensForEth(min(amount, min(contractTokenBalance, maxSwapTokens)));
               uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        _balances[from] = _balances[from] - amount; 
        _balances[to] = _balances[to] + (amount - (TaxSwap));
        emit Transfer(from, to, amount - (TaxSwap));
         if(TaxSwap > 0){
          _balances[address(this)] = _balances[address(this)] + (TaxSwap);
          emit Transfer(from, address(this),TaxSwap);
        }
    }
   
    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");
        uint256 DevFeeAmount;
        if (balanceOf(address(this)) >= maxSwapTokens) {
            DevFeeAmount = amount * (1) / (2);
        } else {DevFeeAmount = amount * (1) / (2);
        }
        DevWallet.transfer(DevFeeAmount);
        MarketingWallet.transfer(amount - (DevFeeAmount));
    }
  
   function removeMaxTxLimit() external onlyOwner {
       maxTxAmount = _tTotal;
       }
  
   function changeFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 40 && _sellFee <= 40, "revert wrong fee settings");
        buyTaxes = _buyFee;
        sellTaxes = _sellFee;
     }
   
    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 setBlacklist(address _address, bool _status) external onlyOwner {
        isBlacklisted[_address] = _status;
    }
    
    function setTrading() external onlyOwner() {
        require(!tradeEnable,"trading is already open");
        _SwapBackEnable = true;
         tradeEnable = true;
       emit TradingOpenUpdated();
    }
    
    receive() external payable {}
   
    function recoverERC20FromContract(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 recoverETHfromContract() 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();
    }
}

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":"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":"minToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxToken","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverERC20FromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","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":"tradeEnable","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"}]

60806040526009600a62000014919062000a86565b620f424062000024919062000ad6565b6007556009600a62000037919062000a86565b62f4240062000047919062000ad6565b6008556009600a6200005a919062000a86565b62f424006200006a919062000ad6565b600955601e600a556028600b555f600c555f600e60146101000a81548160ff0219169083151502179055505f600e60156101000a81548160ff0219169083151502179055505f600e60166101000a81548160ff021916908315150217905550348015620000d5575f80fd5b505f620000e7620008ed60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060384603620001e6577310ed43c718714eb63d5aa57b78b54704e256024e600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035d565b6001461480620001f65750600546145b156200025657737a250d5630b4cf539739df2c5dacb4c659f2488d600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035c565b61a4b14603620002ba57731b02da8cb0d097eb8d57a175b88c7d8b47997506600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035b565b606146036200031d5773d99d1c33f9fc3444f8101754abc46c52416550d1600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003519062000b7e565b60405180910390fd5b5b5b5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000c03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000475573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200049b919062000c03565b6040518363ffffffff1660e01b8152600401620004ba92919062000c44565b6020604051808303815f875af1158015620004d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c03565b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f6f679b46acc13353e3948e5bbfb1ebccc34ca0060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739da5bd4794c58dbb8c1ed0f7383f7b260530b94a60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620005f4919062000a86565b633b9aca0062000605919062000ad6565b60015f62000618620008ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160045f6200066a620008ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000861620008ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620008bf919062000a86565b633b9aca00620008d0919062000ad6565b604051620008df919062000c80565b60405180910390a362000c9b565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200097e57808604811115620009565762000955620008f4565b5b6001851615620009665780820291505b8081029050620009768562000921565b945062000936565b94509492505050565b5f8262000998576001905062000a6a565b81620009a7575f905062000a6a565b8160018114620009c05760028114620009cb5762000a01565b600191505062000a6a565b60ff841115620009e057620009df620008f4565b5b8360020a915084821115620009fa57620009f9620008f4565b5b5062000a6a565b5060208310610133831016604e8410600b841016171562000a3b5782820a90508381111562000a355762000a34620008f4565b5b62000a6a565b62000a4a84848460016200092d565b9250905081840481111562000a645762000a63620008f4565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000a928262000a71565b915062000a9f8362000a7a565b925062000ace7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000987565b905092915050565b5f62000ae28262000a71565b915062000aef8362000a71565b925082820262000aff8162000a71565b9150828204841483151762000b195762000b18620008f4565b5b5092915050565b5f82825260208201905092915050565b7f57726f6e6720436861696e2049640000000000000000000000000000000000005f82015250565b5f62000b66600e8362000b20565b915062000b738262000b30565b602082019050919050565b5f6020820190508181035f83015262000b978162000b58565b9050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bcd8262000ba2565b9050919050565b62000bdf8162000bc1565b811462000bea575f80fd5b50565b5f8151905062000bfd8162000bd4565b92915050565b5f6020828403121562000c1b5762000c1a62000b9e565b5b5f62000c2a8482850162000bed565b91505092915050565b62000c3e8162000bc1565b82525050565b5f60408201905062000c595f83018562000c33565b62000c68602083018462000c33565b9392505050565b62000c7a8162000a71565b82525050565b5f60208201905062000c955f83018462000c6f565b92915050565b613b608062000ca95f395ff3fe60806040526004361061014e575f3560e01c80637c519ffb116100b5578063ce831ed51161006e578063ce831ed514610453578063dd62ed3e14610469578063e3ca2d65146104a5578063f2fde38b146104cd578063f87dc2c6146104f5578063ff5118281461051f57610155565b80637c519ffb1461035957806385141a771461036f5780638c0b5e22146103995780638da5cb5b146103c357806395d89b41146103ed578063a9059cbb1461041757610155565b8063313ce56711610107578063313ce56714610277578063437823ec146102a15780634415fb61146102c95780636dff2eeb146102df57806370a0823114610307578063715018a61461034357610155565b806306fdde0314610159578063095ea7b314610183578063153b0d1e146101bf5780631694505e146101e757806318160ddd1461021157806323b872dd1461023b57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610547565b60405161017a91906128a4565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612955565b610584565b6040516101b691906129ad565b60405180910390f35b3480156101ca575f80fd5b506101e560048036038101906101e091906129f0565b6105a1565b005b3480156101f2575f80fd5b506101fb61068d565b6040516102089190612a89565b60405180910390f35b34801561021c575f80fd5b506102256106b2565b6040516102329190612ab1565b60405180910390f35b348015610246575f80fd5b50610261600480360381019061025c9190612aca565b6106d5565b60405161026e91906129ad565b60405180910390f35b348015610282575f80fd5b5061028b6107d0565b6040516102989190612b35565b60405180910390f35b3480156102ac575f80fd5b506102c760048036038101906102c29190612b4e565b6107d8565b005b3480156102d4575f80fd5b506102dd610997565b005b3480156102ea575f80fd5b5061030560048036038101906103009190612955565b610a50565b005b348015610312575f80fd5b5061032d60048036038101906103289190612b4e565b610d1c565b60405161033a9190612ab1565b60405180910390f35b34801561034e575f80fd5b50610357610d62565b005b348015610364575f80fd5b5061036d610eb0565b005b34801561037a575f80fd5b50610383610ff8565b6040516103909190612b88565b60405180910390f35b3480156103a4575f80fd5b506103ad610ffe565b6040516103ba9190612ab1565b60405180910390f35b3480156103ce575f80fd5b506103d7611004565b6040516103e49190612b88565b60405180910390f35b3480156103f8575f80fd5b5061040161102b565b60405161040e91906128a4565b60405180910390f35b348015610422575f80fd5b5061043d60048036038101906104389190612955565b611068565b60405161044a91906129ad565b60405180910390f35b34801561045e575f80fd5b50610467611085565b005b348015610474575f80fd5b5061048f600480360381019061048a9190612ba1565b6111a2565b60405161049c9190612ab1565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612bdf565b611224565b005b3480156104d8575f80fd5b506104f360048036038101906104ee9190612b4e565b61131b565b005b348015610500575f80fd5b50610509611429565b60405161051691906129ad565b60405180910390f35b34801561052a575f80fd5b5061054560048036038101906105409190612b4e565b61143c565b005b60606040518060400160405280600781526020017f434f4d504f444500000000000000000000000000000000000000000000000000815250905090565b5f6105976105906115f9565b8484611600565b6001905092915050565b6105a96115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c90612c67565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009600a6106c19190612de1565b633b9aca006106d09190612e2b565b905090565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61071d6115f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612edc565b60405180910390fd5b6107a78585856117c3565b6107c4856107b36115f9565b85846107bf9190612efa565b611600565b60019150509392505050565b5f6009905090565b6107e06115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086390612c67565b60405180910390fd5b6001151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036108fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f390612f77565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b61099f6115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290612c67565b60405180910390fd5b6009600a610a399190612de1565b633b9aca00610a489190612e2b565b600981905550565b610a586115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90612c67565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990613005565b60405180910390fd5b5f8111610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b90613093565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bcd9190612b88565b602060405180830381865afa158015610be8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0c91906130c5565b811115610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c459061313a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610caa929190613178565b6020604051808303815f875af1158015610cc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cea91906131b3565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d6a6115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90612c67565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610eb86115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90612c67565b60405180910390fd5b600e60149054906101000a900460ff1615610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90613228565b60405180910390fd5b6001600e60156101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b61dead81565b60095481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f434f4d0000000000000000000000000000000000000000000000000000000000815250905090565b5f61107b6110746115f9565b84846117c3565b6001905092915050565b5f4790505f81116110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613093565b60405180910390fd5b4781111561110e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111059061313a565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611172573d5f803e3d5ffd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61122c6115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90612c67565b60405180910390fd5b602882111580156112ca575060288111155b611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130090613290565b60405180910390fd5b81600a8190555080600b819055505050565b6113236115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612c67565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061331e565b60405180910390fd5b6114268161232b565b50565b600e60149054906101000a900460ff1681565b6114446115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790612c67565b60405180910390fd5b5f151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155690613386565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590613414565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d3906134a2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b69190612ab1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890613530565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361189f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611896906135be565b60405180910390fd5b5f81116118e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d89061364c565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561197f575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b5906136b4565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a5d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ace57600e60149054906101000a900460ff16611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa89061371c565b60405180910390fd5b6064600a5483611ac19190612e2b565b611acb9190613767565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b69575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611b72575f90505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c1b5750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c6e575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2857600954821115611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf906137e1565b60405180910390fd5b60095482611cc585610d1c565b611ccf91906137ff565b1115611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d079061387c565b60405180910390fd5b600c5f815480929190611d229061389a565b91905055505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dcc575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e1f575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e6a57600954821115611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e60906137e1565b60405180910390fd5b5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ef257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f45575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f98575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fba576064600b5483611fad9190612e2b565b611fb79190613767565b90505b5f611fc430610d1c565b9050600e60169054906101000a900460ff161580156120305750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156120485750600e60159054906101000a900460ff165b8015612055575060075481115b801561206357506001600c54115b1561209d576120856120808461207b846008546123ec565b6123ec565b612404565b5f4790505f81111561209b5761209a476126b1565b5b505b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e69190612efa565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081836121339190612efa565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461217b91906137ff565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866122179190612efa565b6040516122249190612ab1565b60405180910390a35f821115612324578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227d91906137ff565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161231b9190612ab1565b60405180910390a35b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183116123fa57826123fc565b815b905092915050565b6001600e60166101000a81548160ff0219169083151502179055505f8111612461576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124589061392b565b60405180910390fd5b5f600267ffffffffffffffff81111561247d5761247c613949565b5b6040519080825280602002602001820160405280156124ab5781602001602082028036833780820191505090505b50905030815f815181106124c2576124c1613976565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612566573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258a91906139b7565b8160018151811061259e5761259d613976565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061260430600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611600565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612666959493929190613ad2565b5f604051808303815f87803b15801561267d575f80fd5b505af115801561268f573d5f803e3d5ffd5b50505050505f600e60166101000a81548160ff02191690831515021790555050565b5f81116126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061392b565b60405180910390fd5b5f60085461270030610d1c565b106127255760026001836127149190612e2b565b61271e9190613767565b9050612741565b60026001836127349190612e2b565b61273e9190613767565b90505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156127a5573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82846127ed9190612efa565b90811502906040515f60405180830381858888f19350505050158015612815573d5f803e3d5ffd5b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612851578082015181840152602081019050612836565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128768261281a565b6128808185612824565b9350612890818560208601612834565b6128998161285c565b840191505092915050565b5f6020820190508181035f8301526128bc818461286c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128f1826128c8565b9050919050565b612901816128e7565b811461290b575f80fd5b50565b5f8135905061291c816128f8565b92915050565b5f819050919050565b61293481612922565b811461293e575f80fd5b50565b5f8135905061294f8161292b565b92915050565b5f806040838503121561296b5761296a6128c4565b5b5f6129788582860161290e565b925050602061298985828601612941565b9150509250929050565b5f8115159050919050565b6129a781612993565b82525050565b5f6020820190506129c05f83018461299e565b92915050565b6129cf81612993565b81146129d9575f80fd5b50565b5f813590506129ea816129c6565b92915050565b5f8060408385031215612a0657612a056128c4565b5b5f612a138582860161290e565b9250506020612a24858286016129dc565b9150509250929050565b5f819050919050565b5f612a51612a4c612a47846128c8565b612a2e565b6128c8565b9050919050565b5f612a6282612a37565b9050919050565b5f612a7382612a58565b9050919050565b612a8381612a69565b82525050565b5f602082019050612a9c5f830184612a7a565b92915050565b612aab81612922565b82525050565b5f602082019050612ac45f830184612aa2565b92915050565b5f805f60608486031215612ae157612ae06128c4565b5b5f612aee8682870161290e565b9350506020612aff8682870161290e565b9250506040612b1086828701612941565b9150509250925092565b5f60ff82169050919050565b612b2f81612b1a565b82525050565b5f602082019050612b485f830184612b26565b92915050565b5f60208284031215612b6357612b626128c4565b5b5f612b708482850161290e565b91505092915050565b612b82816128e7565b82525050565b5f602082019050612b9b5f830184612b79565b92915050565b5f8060408385031215612bb757612bb66128c4565b5b5f612bc48582860161290e565b9250506020612bd58582860161290e565b9150509250929050565b5f8060408385031215612bf557612bf46128c4565b5b5f612c0285828601612941565b9250506020612c1385828601612941565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c51602083612824565b9150612c5c82612c1d565b602082019050919050565b5f6020820190508181035f830152612c7e81612c45565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d0757808604811115612ce357612ce2612c85565b5b6001851615612cf25780820291505b8081029050612d0085612cb2565b9450612cc7565b94509492505050565b5f82612d1f5760019050612dda565b81612d2c575f9050612dda565b8160018114612d425760028114612d4c57612d7b565b6001915050612dda565b60ff841115612d5e57612d5d612c85565b5b8360020a915084821115612d7557612d74612c85565b5b50612dda565b5060208310610133831016604e8410600b8410161715612db05782820a905083811115612dab57612daa612c85565b5b612dda565b612dbd8484846001612cbe565b92509050818404811115612dd457612dd3612c85565b5b81810290505b9392505050565b5f612deb82612922565b9150612df683612b1a565b9250612e237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d10565b905092915050565b5f612e3582612922565b9150612e4083612922565b9250828202612e4e81612922565b91508282048414831517612e6557612e64612c85565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612ec6602883612824565b9150612ed182612e6c565b604082019050919050565b5f6020820190508181035f830152612ef381612eba565b9050919050565b5f612f0482612922565b9150612f0f83612922565b9250828203905081811115612f2757612f26612c85565b5b92915050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f612f61601b83612824565b9150612f6c82612f2d565b602082019050919050565b5f6020820190508181035f830152612f8e81612f55565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f612fef603683612824565b9150612ffa82612f95565b604082019050919050565b5f6020820190508181035f83015261301c81612fe3565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f61307d602283612824565b915061308882613023565b604082019050919050565b5f6020820190508181035f8301526130aa81613071565b9050919050565b5f815190506130bf8161292b565b92915050565b5f602082840312156130da576130d96128c4565b5b5f6130e7848285016130b1565b91505092915050565b7f496e73756666696369656e7420416d6f756e74000000000000000000000000005f82015250565b5f613124601383612824565b915061312f826130f0565b602082019050919050565b5f6020820190508181035f83015261315181613118565b9050919050565b5f61316282612a58565b9050919050565b61317281613158565b82525050565b5f60408201905061318b5f830185613169565b6131986020830184612aa2565b9392505050565b5f815190506131ad816129c6565b92915050565b5f602082840312156131c8576131c76128c4565b5b5f6131d58482850161319f565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613212601783612824565b915061321d826131de565b602082019050919050565b5f6020820190508181035f83015261323f81613206565b9050919050565b7f7265766572742077726f6e67206665652073657474696e6773000000000000005f82015250565b5f61327a601983612824565b915061328582613246565b602082019050919050565b5f6020820190508181035f8301526132a78161326e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613308602683612824565b9150613313826132ae565b604082019050919050565b5f6020820190508181035f830152613335816132fc565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c7564656400000000005f82015250565b5f613370601b83612824565b915061337b8261333c565b602082019050919050565b5f6020820190508181035f83015261339d81613364565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6133fe602483612824565b9150613409826133a4565b604082019050919050565b5f6020820190508181035f83015261342b816133f2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61348c602283612824565b915061349782613432565b604082019050919050565b5f6020820190508181035f8301526134b981613480565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61351a602583612824565b9150613525826134c0565b604082019050919050565b5f6020820190508181035f8301526135478161350e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135a8602383612824565b91506135b38261354e565b604082019050919050565b5f6020820190508181035f8301526135d58161359c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613636602983612824565b9150613641826135dc565b604082019050919050565b5f6020820190508181035f8301526136638161362a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f61369e601983612824565b91506136a98261366a565b602082019050919050565b5f6020820190508181035f8301526136cb81613692565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613706601383612824565b9150613711826136d2565b602082019050919050565b5f6020820190508181035f830152613733816136fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61377182612922565b915061377c83612922565b92508261378c5761378b61373a565b5b828204905092915050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137cb601983612824565b91506137d682613797565b602082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b5f61380982612922565b915061381483612922565b925082820190508082111561382c5761382b612c85565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613866601a83612824565b915061387182613832565b602082019050919050565b5f6020820190508181035f8301526138938161385a565b9050919050565b5f6138a482612922565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138d6576138d5612c85565b5b600182019050919050565b7f616d6f756e74206d7573742062652067726565746572207468616e20300000005f82015250565b5f613915601d83612824565b9150613920826138e1565b602082019050919050565b5f6020820190508181035f83015261394281613909565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506139b1816128f8565b92915050565b5f602082840312156139cc576139cb6128c4565b5b5f6139d9848285016139a3565b91505092915050565b5f819050919050565b5f613a05613a006139fb846139e2565b612a2e565b612922565b9050919050565b613a15816139eb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a4d816128e7565b82525050565b5f613a5e8383613a44565b60208301905092915050565b5f602082019050919050565b5f613a8082613a1b565b613a8a8185613a25565b9350613a9583613a35565b805f5b83811015613ac5578151613aac8882613a53565b9750613ab783613a6a565b925050600181019050613a98565b5085935050505092915050565b5f60a082019050613ae55f830188612aa2565b613af26020830187613a0c565b8181036040830152613b048186613a76565b9050613b136060830185612b79565b613b206080830184612aa2565b969550505050505056fea2646970667358221220adb77002ce9d545dfca4181893859da44968ca392b8c3596f2fb21da3442a06964736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c80637c519ffb116100b5578063ce831ed51161006e578063ce831ed514610453578063dd62ed3e14610469578063e3ca2d65146104a5578063f2fde38b146104cd578063f87dc2c6146104f5578063ff5118281461051f57610155565b80637c519ffb1461035957806385141a771461036f5780638c0b5e22146103995780638da5cb5b146103c357806395d89b41146103ed578063a9059cbb1461041757610155565b8063313ce56711610107578063313ce56714610277578063437823ec146102a15780634415fb61146102c95780636dff2eeb146102df57806370a0823114610307578063715018a61461034357610155565b806306fdde0314610159578063095ea7b314610183578063153b0d1e146101bf5780631694505e146101e757806318160ddd1461021157806323b872dd1461023b57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610547565b60405161017a91906128a4565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612955565b610584565b6040516101b691906129ad565b60405180910390f35b3480156101ca575f80fd5b506101e560048036038101906101e091906129f0565b6105a1565b005b3480156101f2575f80fd5b506101fb61068d565b6040516102089190612a89565b60405180910390f35b34801561021c575f80fd5b506102256106b2565b6040516102329190612ab1565b60405180910390f35b348015610246575f80fd5b50610261600480360381019061025c9190612aca565b6106d5565b60405161026e91906129ad565b60405180910390f35b348015610282575f80fd5b5061028b6107d0565b6040516102989190612b35565b60405180910390f35b3480156102ac575f80fd5b506102c760048036038101906102c29190612b4e565b6107d8565b005b3480156102d4575f80fd5b506102dd610997565b005b3480156102ea575f80fd5b5061030560048036038101906103009190612955565b610a50565b005b348015610312575f80fd5b5061032d60048036038101906103289190612b4e565b610d1c565b60405161033a9190612ab1565b60405180910390f35b34801561034e575f80fd5b50610357610d62565b005b348015610364575f80fd5b5061036d610eb0565b005b34801561037a575f80fd5b50610383610ff8565b6040516103909190612b88565b60405180910390f35b3480156103a4575f80fd5b506103ad610ffe565b6040516103ba9190612ab1565b60405180910390f35b3480156103ce575f80fd5b506103d7611004565b6040516103e49190612b88565b60405180910390f35b3480156103f8575f80fd5b5061040161102b565b60405161040e91906128a4565b60405180910390f35b348015610422575f80fd5b5061043d60048036038101906104389190612955565b611068565b60405161044a91906129ad565b60405180910390f35b34801561045e575f80fd5b50610467611085565b005b348015610474575f80fd5b5061048f600480360381019061048a9190612ba1565b6111a2565b60405161049c9190612ab1565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612bdf565b611224565b005b3480156104d8575f80fd5b506104f360048036038101906104ee9190612b4e565b61131b565b005b348015610500575f80fd5b50610509611429565b60405161051691906129ad565b60405180910390f35b34801561052a575f80fd5b5061054560048036038101906105409190612b4e565b61143c565b005b60606040518060400160405280600781526020017f434f4d504f444500000000000000000000000000000000000000000000000000815250905090565b5f6105976105906115f9565b8484611600565b6001905092915050565b6105a96115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c90612c67565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009600a6106c19190612de1565b633b9aca006106d09190612e2b565b905090565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61071d6115f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612edc565b60405180910390fd5b6107a78585856117c3565b6107c4856107b36115f9565b85846107bf9190612efa565b611600565b60019150509392505050565b5f6009905090565b6107e06115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086390612c67565b60405180910390fd5b6001151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036108fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f390612f77565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b61099f6115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290612c67565b60405180910390fd5b6009600a610a399190612de1565b633b9aca00610a489190612e2b565b600981905550565b610a586115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90612c67565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990613005565b60405180910390fd5b5f8111610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b90613093565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bcd9190612b88565b602060405180830381865afa158015610be8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0c91906130c5565b811115610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c459061313a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610caa929190613178565b6020604051808303815f875af1158015610cc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cea91906131b3565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d6a6115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90612c67565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610eb86115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90612c67565b60405180910390fd5b600e60149054906101000a900460ff1615610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90613228565b60405180910390fd5b6001600e60156101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b61dead81565b60095481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f434f4d0000000000000000000000000000000000000000000000000000000000815250905090565b5f61107b6110746115f9565b84846117c3565b6001905092915050565b5f4790505f81116110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c290613093565b60405180910390fd5b4781111561110e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111059061313a565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611172573d5f803e3d5ffd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61122c6115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90612c67565b60405180910390fd5b602882111580156112ca575060288111155b611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130090613290565b60405180910390fd5b81600a8190555080600b819055505050565b6113236115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612c67565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061331e565b60405180910390fd5b6114268161232b565b50565b600e60149054906101000a900460ff1681565b6114446115f9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790612c67565b60405180910390fd5b5f151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155690613386565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361166e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166590613414565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d3906134a2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b69190612ab1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890613530565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361189f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611896906135be565b60405180910390fd5b5f81116118e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d89061364c565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561197f575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b5906136b4565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a5d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ace57600e60149054906101000a900460ff16611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa89061371c565b60405180910390fd5b6064600a5483611ac19190612e2b565b611acb9190613767565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b69575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611b72575f90505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c1b5750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c6e575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2857600954821115611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf906137e1565b60405180910390fd5b60095482611cc585610d1c565b611ccf91906137ff565b1115611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d079061387c565b60405180910390fd5b600c5f815480929190611d229061389a565b91905055505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dcc575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e1f575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e6a57600954821115611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e60906137e1565b60405180910390fd5b5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ef257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f45575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f98575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fba576064600b5483611fad9190612e2b565b611fb79190613767565b90505b5f611fc430610d1c565b9050600e60169054906101000a900460ff161580156120305750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156120485750600e60159054906101000a900460ff165b8015612055575060075481115b801561206357506001600c54115b1561209d576120856120808461207b846008546123ec565b6123ec565b612404565b5f4790505f81111561209b5761209a476126b1565b5b505b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e69190612efa565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081836121339190612efa565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461217b91906137ff565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866122179190612efa565b6040516122249190612ab1565b60405180910390a35f821115612324578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227d91906137ff565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161231b9190612ab1565b60405180910390a35b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8183116123fa57826123fc565b815b905092915050565b6001600e60166101000a81548160ff0219169083151502179055505f8111612461576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124589061392b565b60405180910390fd5b5f600267ffffffffffffffff81111561247d5761247c613949565b5b6040519080825280602002602001820160405280156124ab5781602001602082028036833780820191505090505b50905030815f815181106124c2576124c1613976565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612566573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258a91906139b7565b8160018151811061259e5761259d613976565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061260430600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611600565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612666959493929190613ad2565b5f604051808303815f87803b15801561267d575f80fd5b505af115801561268f573d5f803e3d5ffd5b50505050505f600e60166101000a81548160ff02191690831515021790555050565b5f81116126f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ea9061392b565b60405180910390fd5b5f60085461270030610d1c565b106127255760026001836127149190612e2b565b61271e9190613767565b9050612741565b60026001836127349190612e2b565b61273e9190613767565b90505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156127a5573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82846127ed9190612efa565b90811502906040515f60405180830381858888f19350505050158015612815573d5f803e3d5ffd5b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612851578082015181840152602081019050612836565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128768261281a565b6128808185612824565b9350612890818560208601612834565b6128998161285c565b840191505092915050565b5f6020820190508181035f8301526128bc818461286c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128f1826128c8565b9050919050565b612901816128e7565b811461290b575f80fd5b50565b5f8135905061291c816128f8565b92915050565b5f819050919050565b61293481612922565b811461293e575f80fd5b50565b5f8135905061294f8161292b565b92915050565b5f806040838503121561296b5761296a6128c4565b5b5f6129788582860161290e565b925050602061298985828601612941565b9150509250929050565b5f8115159050919050565b6129a781612993565b82525050565b5f6020820190506129c05f83018461299e565b92915050565b6129cf81612993565b81146129d9575f80fd5b50565b5f813590506129ea816129c6565b92915050565b5f8060408385031215612a0657612a056128c4565b5b5f612a138582860161290e565b9250506020612a24858286016129dc565b9150509250929050565b5f819050919050565b5f612a51612a4c612a47846128c8565b612a2e565b6128c8565b9050919050565b5f612a6282612a37565b9050919050565b5f612a7382612a58565b9050919050565b612a8381612a69565b82525050565b5f602082019050612a9c5f830184612a7a565b92915050565b612aab81612922565b82525050565b5f602082019050612ac45f830184612aa2565b92915050565b5f805f60608486031215612ae157612ae06128c4565b5b5f612aee8682870161290e565b9350506020612aff8682870161290e565b9250506040612b1086828701612941565b9150509250925092565b5f60ff82169050919050565b612b2f81612b1a565b82525050565b5f602082019050612b485f830184612b26565b92915050565b5f60208284031215612b6357612b626128c4565b5b5f612b708482850161290e565b91505092915050565b612b82816128e7565b82525050565b5f602082019050612b9b5f830184612b79565b92915050565b5f8060408385031215612bb757612bb66128c4565b5b5f612bc48582860161290e565b9250506020612bd58582860161290e565b9150509250929050565b5f8060408385031215612bf557612bf46128c4565b5b5f612c0285828601612941565b9250506020612c1385828601612941565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c51602083612824565b9150612c5c82612c1d565b602082019050919050565b5f6020820190508181035f830152612c7e81612c45565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d0757808604811115612ce357612ce2612c85565b5b6001851615612cf25780820291505b8081029050612d0085612cb2565b9450612cc7565b94509492505050565b5f82612d1f5760019050612dda565b81612d2c575f9050612dda565b8160018114612d425760028114612d4c57612d7b565b6001915050612dda565b60ff841115612d5e57612d5d612c85565b5b8360020a915084821115612d7557612d74612c85565b5b50612dda565b5060208310610133831016604e8410600b8410161715612db05782820a905083811115612dab57612daa612c85565b5b612dda565b612dbd8484846001612cbe565b92509050818404811115612dd457612dd3612c85565b5b81810290505b9392505050565b5f612deb82612922565b9150612df683612b1a565b9250612e237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d10565b905092915050565b5f612e3582612922565b9150612e4083612922565b9250828202612e4e81612922565b91508282048414831517612e6557612e64612c85565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612ec6602883612824565b9150612ed182612e6c565b604082019050919050565b5f6020820190508181035f830152612ef381612eba565b9050919050565b5f612f0482612922565b9150612f0f83612922565b9250828203905081811115612f2757612f26612c85565b5b92915050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f612f61601b83612824565b9150612f6c82612f2d565b602082019050919050565b5f6020820190508181035f830152612f8e81612f55565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f612fef603683612824565b9150612ffa82612f95565b604082019050919050565b5f6020820190508181035f83015261301c81612fe3565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f61307d602283612824565b915061308882613023565b604082019050919050565b5f6020820190508181035f8301526130aa81613071565b9050919050565b5f815190506130bf8161292b565b92915050565b5f602082840312156130da576130d96128c4565b5b5f6130e7848285016130b1565b91505092915050565b7f496e73756666696369656e7420416d6f756e74000000000000000000000000005f82015250565b5f613124601383612824565b915061312f826130f0565b602082019050919050565b5f6020820190508181035f83015261315181613118565b9050919050565b5f61316282612a58565b9050919050565b61317281613158565b82525050565b5f60408201905061318b5f830185613169565b6131986020830184612aa2565b9392505050565b5f815190506131ad816129c6565b92915050565b5f602082840312156131c8576131c76128c4565b5b5f6131d58482850161319f565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613212601783612824565b915061321d826131de565b602082019050919050565b5f6020820190508181035f83015261323f81613206565b9050919050565b7f7265766572742077726f6e67206665652073657474696e6773000000000000005f82015250565b5f61327a601983612824565b915061328582613246565b602082019050919050565b5f6020820190508181035f8301526132a78161326e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613308602683612824565b9150613313826132ae565b604082019050919050565b5f6020820190508181035f830152613335816132fc565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c7564656400000000005f82015250565b5f613370601b83612824565b915061337b8261333c565b602082019050919050565b5f6020820190508181035f83015261339d81613364565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6133fe602483612824565b9150613409826133a4565b604082019050919050565b5f6020820190508181035f83015261342b816133f2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61348c602283612824565b915061349782613432565b604082019050919050565b5f6020820190508181035f8301526134b981613480565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61351a602583612824565b9150613525826134c0565b604082019050919050565b5f6020820190508181035f8301526135478161350e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135a8602383612824565b91506135b38261354e565b604082019050919050565b5f6020820190508181035f8301526135d58161359c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613636602983612824565b9150613641826135dc565b604082019050919050565b5f6020820190508181035f8301526136638161362a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f61369e601983612824565b91506136a98261366a565b602082019050919050565b5f6020820190508181035f8301526136cb81613692565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613706601383612824565b9150613711826136d2565b602082019050919050565b5f6020820190508181035f830152613733816136fa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61377182612922565b915061377c83612922565b92508261378c5761378b61373a565b5b828204905092915050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137cb601983612824565b91506137d682613797565b602082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b5f61380982612922565b915061381483612922565b925082820190508082111561382c5761382b612c85565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613866601a83612824565b915061387182613832565b602082019050919050565b5f6020820190508181035f8301526138938161385a565b9050919050565b5f6138a482612922565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138d6576138d5612c85565b5b600182019050919050565b7f616d6f756e74206d7573742062652067726565746572207468616e20300000005f82015250565b5f613915601d83612824565b9150613920826138e1565b602082019050919050565b5f6020820190508181035f83015261394281613909565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506139b1816128f8565b92915050565b5f602082840312156139cc576139cb6128c4565b5b5f6139d9848285016139a3565b91505092915050565b5f819050919050565b5f613a05613a006139fb846139e2565b612a2e565b612922565b9050919050565b613a15816139eb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a4d816128e7565b82525050565b5f613a5e8383613a44565b60208301905092915050565b5f602082019050919050565b5f613a8082613a1b565b613a8a8185613a25565b9350613a9583613a35565b805f5b83811015613ac5578151613aac8882613a53565b9750613ab783613a6a565b925050600181019050613a98565b5085935050505092915050565b5f60a082019050613ae55f830188612aa2565b613af26020830187613a0c565b8181036040830152613b048186613a76565b9050613b136060830185612b79565b613b206080830184612aa2565b969550505050505056fea2646970667358221220adb77002ce9d545dfca4181893859da44968ca392b8c3596f2fb21da3442a06964736f6c63430008140033

Deployed Bytecode Sourcemap

2877:10405:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5993:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6925:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12009:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3847:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6264:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7092:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6175:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11505:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11174:89;;;;;;;;;;;;;:::i;:::-;;12405:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6365:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:148;;;;;;;;;;;;;:::i;:::-;;12146:207;;;;;;;;;;;;;:::i;:::-;;3171:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3673:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1346:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6082:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6603:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12893:386;;;;;;;;;;;;;:::i;:::-;;6776:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11272:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1556:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3931:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11752:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5993:83;6030:13;6063:5;;;;;;;;;;;;;;;;;6056:12;;5993:83;:::o;6925:161::-;7000:4;7017:39;7026:12;:10;:12::i;:::-;7040:7;7049:6;7017:8;:39::i;:::-;7074:4;7067:11;;6925:161;;;;:::o;12009:125::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12119:7:::1;12093:13;:23;12107:8;12093:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12009:125:::0;;:::o;3847:41::-;;;;;;;;;;;;;:::o;6264:95::-;6317:7;3378:1;3435:2;:13;;;;:::i;:::-;3422:10;:26;;;;:::i;:::-;6337:14;;6264:95;:::o;7092:410::-;7190:4;7207:24;7234:11;:19;7246:6;7234:19;;;;;;;;;;;;;;;:33;7254:12;:10;:12::i;:::-;7234:33;;;;;;;;;;;;;;;;7207:60;;7306:6;7286:16;:26;;7278:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7368:36;7378:6;7386:9;7397:6;7368:9;:36::i;:::-;7415:57;7424:6;7432:12;:10;:12::i;:::-;7465:6;7446:16;:25;;;;:::i;:::-;7415:8;:57::i;:::-;7490:4;7483:11;;;7092:410;;;;;:::o;6175:83::-;6216:5;3378:1;6234:16;;6175:83;:::o;11505:236::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11613:4:::1;11582:35;;:18;:27;11601:7;11582:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;::::0;11574:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11688:4;11658:18;:27;11677:7;11658:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11726:7;11704:30;;;;;;;;;;;;11505:236:::0;:::o;11174:89::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3378:1:::1;3435:2;:13;;;;:::i;:::-;3422:10;:26;;;;:::i;:::-;11231:11;:21;;;;11174:89::o:0;12405:477::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12536:4:::1;12514:27;;:10;:27;;::::0;12506:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12629:1;12619:7;:11;12611:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12706:10;12699:28;;;12736:4;12699:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12688:7;:54;;12680:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;12784:10;12777:27;;;12805:15;;;;;;;;;;;12822:7;12777:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12865:7;12844:29;;;;;;;;;;12405:477:::0;;:::o;6365:119::-;6431:7;6458:9;:18;6468:7;6458:18;;;;;;;;;;;;;;;;6451:25;;6365:119;;;:::o;1962:148::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2069:1:::1;2032:40;;2053:6;::::0;::::1;;;;;;;;2032:40;;;;;;;;;;;;2100:1;2083:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1962:148::o:0;12146:207::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12209:11:::1;;;;;;;;;;;12208:12;12200:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12276:4;12258:15;;:22;;;;;;;;;;;;;;;;;;12306:4;12292:11;;:18;;;;;;;;;;;;;;;;;;12325:20;;;;;;;;;;12146:207::o:0;3171:79::-;3208:42;3171:79;:::o;3673:53::-;;;;:::o;1346:79::-;1384:7;1411:6;;;;;;;;;;;1404:13;;1346:79;:::o;6082:87::-;6121:13;6154:7;;;;;;;;;;;;;;;;;6147:14;;6082:87;:::o;6603:167::-;6681:4;6698:42;6708:12;:10;:12::i;:::-;6722:9;6733:6;6698:9;:42::i;:::-;6758:4;6751:11;;6603:167;;;;:::o;12893:386::-;12947:26;12976:21;12947:50;;13037:1;13016:18;:22;13008:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13118:21;13096:18;:43;;13088:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13190:15;;;;;;;;;;;13174:42;;:62;13217:18;13174:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13250:21;;;;;;;;;;12936:343;12893:386::o;6776:143::-;6857:7;6884:11;:18;6896:5;6884:18;;;;;;;;;;;;;;;:27;6903:7;6884:27;;;;;;;;;;;;;;;;6877:34;;6776:143;;;;:::o;11272:222::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11375:2:::1;11364:7;:13;;:31;;;;;11393:2;11381:8;:14;;11364:31;11356:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11447:7;11436:8;:18;;;;11477:8;11465:9;:20;;;;11272:222:::0;;:::o;1556:203::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1667:1:::1;1647:22;;:8;:22;;::::0;1639:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1723:28;1742:8;1723:18;:28::i;:::-;1556:203:::0;:::o;3931:31::-;;;;;;;;;;;;;:::o;11752:245::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11863:5:::1;11832:36;;:18;:27;11851:7;11832:27;;;;;;;;;;;;;;;;;;;;;;;;;:36;;::::0;11824:76:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11941:5;11911:18;:27;11930:7;11911:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;11981:7;11959:30;;;;;;;;;;;;11752:245:::0;:::o;252:98::-;305:7;332:10;325:17;;252:98;:::o;7508:335::-;7618:1;7601:19;;:5;:19;;;7593:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7699:1;7680:21;;:7;:21;;;7672:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7781:6;7751:11;:18;7763:5;7751:18;;;;;;;;;;;;;;;:27;7770:7;7751:27;;;;;;;;;;;;;;;:36;;;;7819:7;7803:32;;7812:5;7803:32;;;7828:6;7803:32;;;;;;:::i;:::-;;;;;;;;7508:335;;;:::o;7849:2324::-;7953:1;7937:18;;:4;:18;;;7929:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8030:1;8016:16;;:2;:16;;;8008:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8100:1;8091:6;:10;8083:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8167:13;:19;8181:4;8167:19;;;;;;;;;;;;;;;;;;;;;;;;;8166:20;:42;;;;;8191:13;:17;8205:2;8191:17;;;;;;;;;;;;;;;;;;;;;;;;;8190:18;8166:42;8158:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8248:15;8283:18;:24;8302:4;8283:24;;;;;;;;;;;;;;;;;;;;;;;;;8282:25;:52;;;;;8312:18;:22;8331:2;8312:22;;;;;;;;;;;;;;;;;;;;;;;;;8311:23;8282:52;8278:190;;;8359:11;;;;;;;;;;;8351:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8452:3;8439:8;;8429:6;:19;;;;:::i;:::-;:27;;;;:::i;:::-;8419:37;;8278:190;8493:18;:24;8512:4;8493:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8521:18;:22;8540:2;8521:22;;;;;;;;;;;;;;;;;;;;;;;;;8493:50;8489:94;;;8570:1;8560:11;;8489:94;8619:13;;;;;;;;;;;8611:21;;:4;:21;;;:55;;;;;8650:15;;;;;;;;;;;8636:30;;:2;:30;;;;8611:55;:82;;;;;8671:18;:22;8690:2;8671:22;;;;;;;;;;;;;;;;;;;;;;;;;8670:23;8611:82;8607:296;;;8729:11;;8719:6;:21;;8711:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8820:11;;8810:6;8794:13;8804:2;8794:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;8786:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8879:8;;:10;;;;;;;;;:::i;:::-;;;;;;8607:296;8938:13;;;;;;;;;;;8930:21;;:4;:21;;;;:50;;;;;8956:18;:24;8975:4;8956:24;;;;;;;;;;;;;;;;;;;;;;;;;8955:25;8930:50;:77;;;;;8985:18;:22;9004:2;8985:22;;;;;;;;;;;;;;;;;;;;;;;;;8984:23;8930:77;8926:172;;;9043:11;;9033:6;:21;;9025:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8926:172;9130:13;;;;;;;;;;;9124:19;;:2;:19;;;:44;;;;;9163:4;9147:21;;:4;:21;;;;9124:44;:73;;;;;9173:18;:24;9192:4;9173:24;;;;;;;;;;;;;;;;;;;;;;;;;9172:25;9124:73;:100;;;;;9202:18;:22;9221:2;9202:22;;;;;;;;;;;;;;;;;;;;;;;;;9201:23;9124:100;9120:204;;;9282:3;9268:9;;9258:6;:20;;;;:::i;:::-;:28;;;;:::i;:::-;9248:38;;9120:204;9349:28;9380:24;9398:4;9380:9;:24::i;:::-;9349:55;;9424:6;;;;;;;;;;;9423:7;:32;;;;;9442:13;;;;;;;;;;;9434:21;;:4;:21;;;;9423:32;:51;;;;;9459:15;;;;;;;;;;;9423:51;:88;;;;;9501:10;;9478:20;:33;9423:88;:104;;;;;9526:1;9515:8;;:12;9423:104;9419:407;;;9548:71;9565:53;9569:6;9577:40;9581:20;9603:13;;9577:3;:40::i;:::-;9565:3;:53::i;:::-;9548:16;:71::i;:::-;9637:26;9666:21;9637:50;;9730:1;9709:18;:22;9706:105;;;9756:35;9769:21;9756:12;:35::i;:::-;9706:105;9529:297;9419:407;9872:6;9854:9;:15;9864:4;9854:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;9836:9;:15;9846:4;9836:15;;;;;;;;;;;;;;;:42;;;;9933:7;9923:6;:18;;;;:::i;:::-;9906:9;:13;9916:2;9906:13;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;9890:9;:13;9900:2;9890:13;;;;;;;;;;;;;;;:52;;;;9973:2;9958:38;;9967:4;9958:38;;;9987:7;9977:6;:18;;;;:::i;:::-;9958:38;;;;;;:::i;:::-;;;;;;;;10021:1;10011:7;:11;10008:158;;;10091:7;10063:9;:24;10081:4;10063:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;10036:9;:24;10054:4;10036:24;;;;;;;;;;;;;;;:63;;;;10140:4;10117:37;;10126:4;10117:37;;;10146:7;10117:37;;;;;;:::i;:::-;;;;;;;;10008:158;7918:2255;;7849:2324;;;:::o;1765:191::-;1839:16;1858:6;;;;;;;;;;;1839:25;;1884:8;1875:6;;:17;;;;;;;;;;;;;;;;;;1939:8;1908:40;;1929:8;1908:40;;;;;;;;;;;;1828:128;1765:191;:::o;6490:107::-;6547:7;6579:1;6575;:5;6574:15;;6588:1;6574:15;;;6584:1;6574:15;6567:22;;6490:107;;;;:::o;10184:551::-;4549:4;4540:6;;:13;;;;;;;;;;;;;;;;;;10284:1:::1;10270:11;:15;10262:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10330:21;10368:1;10354:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10330:40;;10399:4;10381;10386:1;10381:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10425:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10415:4;10420:1;10415:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10458:62;10475:4;10490:15;;;;;;;;;;;10508:11;10458:8;:62::i;:::-;10531:15;;;;;;;;;;;:66;;;10612:11;10638:1;10654:4;10681;10701:15;10531:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10251:484;4585:5:::0;4576:6;;:14;;;;;;;;;;;;;;;;;;10184:551;:::o;10746:419::-;10819:1;10810:6;:10;10802:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10865:20;10928:13;;10900:24;10918:4;10900:9;:24::i;:::-;:41;10896:159;;10989:1;10983;10973:6;:12;;;;:::i;:::-;:18;;;;:::i;:::-;10958:33;;10896:159;;;11041:1;11035;11025:6;:12;;;;:::i;:::-;:18;;;;:::i;:::-;11010:33;;10896:159;11065:9;;;;;;;;;;;:18;;:32;11084:12;11065:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11108:15;;;;;;;;;;;:24;;:49;11143:12;11133:6;:23;;;;:::i;:::-;11108:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10792:373;10746:419;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:152::-;4603:9;4636:37;4667:5;4636:37;:::i;:::-;4623:50;;4527:152;;;:::o;4685:183::-;4798:63;4855:5;4798:63;:::i;:::-;4793:3;4786:76;4685:183;;:::o;4874:274::-;4993:4;5031:2;5020:9;5016:18;5008:26;;5044:97;5138:1;5127:9;5123:17;5114:6;5044:97;:::i;:::-;4874:274;;;;:::o;5154:118::-;5241:24;5259:5;5241:24;:::i;:::-;5236:3;5229:37;5154:118;;:::o;5278:222::-;5371:4;5409:2;5398:9;5394:18;5386:26;;5422:71;5490:1;5479:9;5475:17;5466:6;5422:71;:::i;:::-;5278:222;;;;:::o;5506:619::-;5583:6;5591;5599;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5901:2;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5872:118;6029:2;6055:53;6100:7;6091:6;6080:9;6076:22;6055:53;:::i;:::-;6045:63;;6000:118;5506:619;;;;;:::o;6131:86::-;6166:7;6206:4;6199:5;6195:16;6184:27;;6131:86;;;:::o;6223:112::-;6306:22;6322:5;6306:22;:::i;:::-;6301:3;6294:35;6223:112;;:::o;6341:214::-;6430:4;6468:2;6457:9;6453:18;6445:26;;6481:67;6545:1;6534:9;6530:17;6521:6;6481:67;:::i;:::-;6341:214;;;;:::o;6561:329::-;6620:6;6669:2;6657:9;6648:7;6644:23;6640:32;6637:119;;;6675:79;;:::i;:::-;6637:119;6795:1;6820:53;6865:7;6856:6;6845:9;6841:22;6820:53;:::i;:::-;6810:63;;6766:117;6561:329;;;;:::o;6896:118::-;6983:24;7001:5;6983:24;:::i;:::-;6978:3;6971:37;6896:118;;:::o;7020:222::-;7113:4;7151:2;7140:9;7136:18;7128:26;;7164:71;7232:1;7221:9;7217:17;7208:6;7164:71;:::i;:::-;7020:222;;;;:::o;7248:474::-;7316:6;7324;7373:2;7361:9;7352:7;7348:23;7344:32;7341:119;;;7379:79;;:::i;:::-;7341:119;7499:1;7524:53;7569:7;7560:6;7549:9;7545:22;7524:53;:::i;:::-;7514:63;;7470:117;7626:2;7652:53;7697:7;7688:6;7677:9;7673:22;7652:53;:::i;:::-;7642:63;;7597:118;7248:474;;;;;:::o;7728:::-;7796:6;7804;7853:2;7841:9;7832:7;7828:23;7824:32;7821:119;;;7859:79;;:::i;:::-;7821:119;7979:1;8004:53;8049:7;8040:6;8029:9;8025:22;8004:53;:::i;:::-;7994:63;;7950:117;8106:2;8132:53;8177:7;8168:6;8157:9;8153:22;8132:53;:::i;:::-;8122:63;;8077:118;7728:474;;;;;:::o;8208:182::-;8348:34;8344:1;8336:6;8332:14;8325:58;8208:182;:::o;8396:366::-;8538:3;8559:67;8623:2;8618:3;8559:67;:::i;:::-;8552:74;;8635:93;8724:3;8635:93;:::i;:::-;8753:2;8748:3;8744:12;8737:19;;8396:366;;;:::o;8768:419::-;8934:4;8972:2;8961:9;8957:18;8949:26;;9021:9;9015:4;9011:20;9007:1;8996:9;8992:17;8985:47;9049:131;9175:4;9049:131;:::i;:::-;9041:139;;8768:419;;;:::o;9193:180::-;9241:77;9238:1;9231:88;9338:4;9335:1;9328:15;9362:4;9359:1;9352:15;9379:102;9421:8;9468:5;9465:1;9461:13;9440:34;;9379:102;;;:::o;9487:848::-;9548:5;9555:4;9579:6;9570:15;;9603:5;9594:14;;9617:712;9638:1;9628:8;9625:15;9617:712;;;9733:4;9728:3;9724:14;9718:4;9715:24;9712:50;;;9742:18;;:::i;:::-;9712:50;9792:1;9782:8;9778:16;9775:451;;;10207:4;10200:5;10196:16;10187:25;;9775:451;10257:4;10251;10247:15;10239:23;;10287:32;10310:8;10287:32;:::i;:::-;10275:44;;9617:712;;;9487:848;;;;;;;:::o;10341:1073::-;10395:5;10586:8;10576:40;;10607:1;10598:10;;10609:5;;10576:40;10635:4;10625:36;;10652:1;10643:10;;10654:5;;10625:36;10721:4;10769:1;10764:27;;;;10805:1;10800:191;;;;10714:277;;10764:27;10782:1;10773:10;;10784:5;;;10800:191;10845:3;10835:8;10832:17;10829:43;;;10852:18;;:::i;:::-;10829:43;10901:8;10898:1;10894:16;10885:25;;10936:3;10929:5;10926:14;10923:40;;;10943:18;;:::i;:::-;10923:40;10976:5;;;10714:277;;11100:2;11090:8;11087:16;11081:3;11075:4;11072:13;11068:36;11050:2;11040:8;11037:16;11032:2;11026:4;11023:12;11019:35;11003:111;11000:246;;;11156:8;11150:4;11146:19;11137:28;;11191:3;11184:5;11181:14;11178:40;;;11198:18;;:::i;:::-;11178:40;11231:5;;11000:246;11271:42;11309:3;11299:8;11293:4;11290:1;11271:42;:::i;:::-;11256:57;;;;11345:4;11340:3;11336:14;11329:5;11326:25;11323:51;;;11354:18;;:::i;:::-;11323:51;11403:4;11396:5;11392:16;11383:25;;10341:1073;;;;;;:::o;11420:281::-;11478:5;11502:23;11520:4;11502:23;:::i;:::-;11494:31;;11546:25;11562:8;11546:25;:::i;:::-;11534:37;;11590:104;11627:66;11617:8;11611:4;11590:104;:::i;:::-;11581:113;;11420:281;;;;:::o;11707:410::-;11747:7;11770:20;11788:1;11770:20;:::i;:::-;11765:25;;11804:20;11822:1;11804:20;:::i;:::-;11799:25;;11859:1;11856;11852:9;11881:30;11899:11;11881:30;:::i;:::-;11870:41;;12060:1;12051:7;12047:15;12044:1;12041:22;12021:1;12014:9;11994:83;11971:139;;12090:18;;:::i;:::-;11971:139;11755:362;11707:410;;;;:::o;12123:227::-;12263:34;12259:1;12251:6;12247:14;12240:58;12332:10;12327:2;12319:6;12315:15;12308:35;12123:227;:::o;12356:366::-;12498:3;12519:67;12583:2;12578:3;12519:67;:::i;:::-;12512:74;;12595:93;12684:3;12595:93;:::i;:::-;12713:2;12708:3;12704:12;12697:19;;12356:366;;;:::o;12728:419::-;12894:4;12932:2;12921:9;12917:18;12909:26;;12981:9;12975:4;12971:20;12967:1;12956:9;12952:17;12945:47;13009:131;13135:4;13009:131;:::i;:::-;13001:139;;12728:419;;;:::o;13153:194::-;13193:4;13213:20;13231:1;13213:20;:::i;:::-;13208:25;;13247:20;13265:1;13247:20;:::i;:::-;13242:25;;13291:1;13288;13284:9;13276:17;;13315:1;13309:4;13306:11;13303:37;;;13320:18;;:::i;:::-;13303:37;13153:194;;;;:::o;13353:177::-;13493:29;13489:1;13481:6;13477:14;13470:53;13353:177;:::o;13536:366::-;13678:3;13699:67;13763:2;13758:3;13699:67;:::i;:::-;13692:74;;13775:93;13864:3;13775:93;:::i;:::-;13893:2;13888:3;13884:12;13877:19;;13536:366;;;:::o;13908:419::-;14074:4;14112:2;14101:9;14097:18;14089:26;;14161:9;14155:4;14151:20;14147:1;14136:9;14132:17;14125:47;14189:131;14315:4;14189:131;:::i;:::-;14181:139;;13908:419;;;:::o;14333:241::-;14473:34;14469:1;14461:6;14457:14;14450:58;14542:24;14537:2;14529:6;14525:15;14518:49;14333:241;:::o;14580:366::-;14722:3;14743:67;14807:2;14802:3;14743:67;:::i;:::-;14736:74;;14819:93;14908:3;14819:93;:::i;:::-;14937:2;14932:3;14928:12;14921:19;;14580:366;;;:::o;14952:419::-;15118:4;15156:2;15145:9;15141:18;15133:26;;15205:9;15199:4;15195:20;15191:1;15180:9;15176:17;15169:47;15233:131;15359:4;15233:131;:::i;:::-;15225:139;;14952:419;;;:::o;15377:221::-;15517:34;15513:1;15505:6;15501:14;15494:58;15586:4;15581:2;15573:6;15569:15;15562:29;15377:221;:::o;15604:366::-;15746:3;15767:67;15831:2;15826:3;15767:67;:::i;:::-;15760:74;;15843:93;15932:3;15843:93;:::i;:::-;15961:2;15956:3;15952:12;15945:19;;15604:366;;;:::o;15976:419::-;16142:4;16180:2;16169:9;16165:18;16157:26;;16229:9;16223:4;16219:20;16215:1;16204:9;16200:17;16193:47;16257:131;16383:4;16257:131;:::i;:::-;16249:139;;15976:419;;;:::o;16401:143::-;16458:5;16489:6;16483:13;16474:22;;16505:33;16532:5;16505:33;:::i;:::-;16401:143;;;;:::o;16550:351::-;16620:6;16669:2;16657:9;16648:7;16644:23;16640:32;16637:119;;;16675:79;;:::i;:::-;16637:119;16795:1;16820:64;16876:7;16867:6;16856:9;16852:22;16820:64;:::i;:::-;16810:74;;16766:128;16550:351;;;;:::o;16907:169::-;17047:21;17043:1;17035:6;17031:14;17024:45;16907:169;:::o;17082:366::-;17224:3;17245:67;17309:2;17304:3;17245:67;:::i;:::-;17238:74;;17321:93;17410:3;17321:93;:::i;:::-;17439:2;17434:3;17430:12;17423:19;;17082:366;;;:::o;17454:419::-;17620:4;17658:2;17647:9;17643:18;17635:26;;17707:9;17701:4;17697:20;17693:1;17682:9;17678:17;17671:47;17735:131;17861:4;17735:131;:::i;:::-;17727:139;;17454:419;;;:::o;17879:134::-;17937:9;17970:37;18001:5;17970:37;:::i;:::-;17957:50;;17879:134;;;:::o;18019:147::-;18114:45;18153:5;18114:45;:::i;:::-;18109:3;18102:58;18019:147;;:::o;18172:348::-;18301:4;18339:2;18328:9;18324:18;18316:26;;18352:79;18428:1;18417:9;18413:17;18404:6;18352:79;:::i;:::-;18441:72;18509:2;18498:9;18494:18;18485:6;18441:72;:::i;:::-;18172:348;;;;;:::o;18526:137::-;18580:5;18611:6;18605:13;18596:22;;18627:30;18651:5;18627:30;:::i;:::-;18526:137;;;;:::o;18669:345::-;18736:6;18785:2;18773:9;18764:7;18760:23;18756:32;18753:119;;;18791:79;;:::i;:::-;18753:119;18911:1;18936:61;18989:7;18980:6;18969:9;18965:22;18936:61;:::i;:::-;18926:71;;18882:125;18669:345;;;;:::o;19020:173::-;19160:25;19156:1;19148:6;19144:14;19137:49;19020:173;:::o;19199:366::-;19341:3;19362:67;19426:2;19421:3;19362:67;:::i;:::-;19355:74;;19438:93;19527:3;19438:93;:::i;:::-;19556:2;19551:3;19547:12;19540:19;;19199:366;;;:::o;19571:419::-;19737:4;19775:2;19764:9;19760:18;19752:26;;19824:9;19818:4;19814:20;19810:1;19799:9;19795:17;19788:47;19852:131;19978:4;19852:131;:::i;:::-;19844:139;;19571:419;;;:::o;19996:175::-;20136:27;20132:1;20124:6;20120:14;20113:51;19996:175;:::o;20177:366::-;20319:3;20340:67;20404:2;20399:3;20340:67;:::i;:::-;20333:74;;20416:93;20505:3;20416:93;:::i;:::-;20534:2;20529:3;20525:12;20518:19;;20177:366;;;:::o;20549:419::-;20715:4;20753:2;20742:9;20738:18;20730:26;;20802:9;20796:4;20792:20;20788:1;20777:9;20773:17;20766:47;20830:131;20956:4;20830:131;:::i;:::-;20822:139;;20549:419;;;:::o;20974:225::-;21114:34;21110:1;21102:6;21098:14;21091:58;21183:8;21178:2;21170:6;21166:15;21159:33;20974:225;:::o;21205:366::-;21347:3;21368:67;21432:2;21427:3;21368:67;:::i;:::-;21361:74;;21444:93;21533:3;21444:93;:::i;:::-;21562:2;21557:3;21553:12;21546:19;;21205:366;;;:::o;21577:419::-;21743:4;21781:2;21770:9;21766:18;21758:26;;21830:9;21824:4;21820:20;21816:1;21805:9;21801:17;21794:47;21858:131;21984:4;21858:131;:::i;:::-;21850:139;;21577:419;;;:::o;22002:177::-;22142:29;22138:1;22130:6;22126:14;22119:53;22002:177;:::o;22185:366::-;22327:3;22348:67;22412:2;22407:3;22348:67;:::i;:::-;22341:74;;22424:93;22513:3;22424:93;:::i;:::-;22542:2;22537:3;22533:12;22526:19;;22185:366;;;:::o;22557:419::-;22723:4;22761:2;22750:9;22746:18;22738:26;;22810:9;22804:4;22800:20;22796:1;22785:9;22781:17;22774:47;22838:131;22964:4;22838:131;:::i;:::-;22830:139;;22557:419;;;:::o;22982:223::-;23122:34;23118:1;23110:6;23106:14;23099:58;23191:6;23186:2;23178:6;23174:15;23167:31;22982:223;:::o;23211:366::-;23353:3;23374:67;23438:2;23433:3;23374:67;:::i;:::-;23367:74;;23450:93;23539:3;23450:93;:::i;:::-;23568:2;23563:3;23559:12;23552:19;;23211:366;;;:::o;23583:419::-;23749:4;23787:2;23776:9;23772:18;23764:26;;23836:9;23830:4;23826:20;23822:1;23811:9;23807:17;23800:47;23864:131;23990:4;23864:131;:::i;:::-;23856:139;;23583:419;;;:::o;24008:221::-;24148:34;24144:1;24136:6;24132:14;24125:58;24217:4;24212:2;24204:6;24200:15;24193:29;24008:221;:::o;24235:366::-;24377:3;24398:67;24462:2;24457:3;24398:67;:::i;:::-;24391:74;;24474:93;24563:3;24474:93;:::i;:::-;24592:2;24587:3;24583:12;24576:19;;24235:366;;;:::o;24607:419::-;24773:4;24811:2;24800:9;24796:18;24788:26;;24860:9;24854:4;24850:20;24846:1;24835:9;24831:17;24824:47;24888:131;25014:4;24888:131;:::i;:::-;24880:139;;24607:419;;;:::o;25032:224::-;25172:34;25168:1;25160:6;25156:14;25149:58;25241:7;25236:2;25228:6;25224:15;25217:32;25032:224;:::o;25262:366::-;25404:3;25425:67;25489:2;25484:3;25425:67;:::i;:::-;25418:74;;25501:93;25590:3;25501:93;:::i;:::-;25619:2;25614:3;25610:12;25603:19;;25262:366;;;:::o;25634:419::-;25800:4;25838:2;25827:9;25823:18;25815:26;;25887:9;25881:4;25877:20;25873:1;25862:9;25858:17;25851:47;25915:131;26041:4;25915:131;:::i;:::-;25907:139;;25634:419;;;:::o;26059:222::-;26199:34;26195:1;26187:6;26183:14;26176:58;26268:5;26263:2;26255:6;26251:15;26244:30;26059:222;:::o;26287:366::-;26429:3;26450:67;26514:2;26509:3;26450:67;:::i;:::-;26443:74;;26526:93;26615:3;26526:93;:::i;:::-;26644:2;26639:3;26635:12;26628:19;;26287:366;;;:::o;26659:419::-;26825:4;26863:2;26852:9;26848:18;26840:26;;26912:9;26906:4;26902:20;26898:1;26887:9;26883:17;26876:47;26940:131;27066:4;26940:131;:::i;:::-;26932:139;;26659:419;;;:::o;27084:228::-;27224:34;27220:1;27212:6;27208:14;27201:58;27293:11;27288:2;27280:6;27276:15;27269:36;27084:228;:::o;27318:366::-;27460:3;27481:67;27545:2;27540:3;27481:67;:::i;:::-;27474:74;;27557:93;27646:3;27557:93;:::i;:::-;27675:2;27670:3;27666:12;27659:19;;27318:366;;;:::o;27690:419::-;27856:4;27894:2;27883:9;27879:18;27871:26;;27943:9;27937:4;27933:20;27929:1;27918:9;27914:17;27907:47;27971:131;28097:4;27971:131;:::i;:::-;27963:139;;27690:419;;;:::o;28115:175::-;28255:27;28251:1;28243:6;28239:14;28232:51;28115:175;:::o;28296:366::-;28438:3;28459:67;28523:2;28518:3;28459:67;:::i;:::-;28452:74;;28535:93;28624:3;28535:93;:::i;:::-;28653:2;28648:3;28644:12;28637:19;;28296:366;;;:::o;28668:419::-;28834:4;28872:2;28861:9;28857:18;28849:26;;28921:9;28915:4;28911:20;28907:1;28896:9;28892:17;28885:47;28949:131;29075:4;28949:131;:::i;:::-;28941:139;;28668:419;;;:::o;29093:169::-;29233:21;29229:1;29221:6;29217:14;29210:45;29093:169;:::o;29268:366::-;29410:3;29431:67;29495:2;29490:3;29431:67;:::i;:::-;29424:74;;29507:93;29596:3;29507:93;:::i;:::-;29625:2;29620:3;29616:12;29609:19;;29268:366;;;:::o;29640:419::-;29806:4;29844:2;29833:9;29829:18;29821:26;;29893:9;29887:4;29883:20;29879:1;29868:9;29864:17;29857:47;29921:131;30047:4;29921:131;:::i;:::-;29913:139;;29640:419;;;:::o;30065:180::-;30113:77;30110:1;30103:88;30210:4;30207:1;30200:15;30234:4;30231:1;30224:15;30251:185;30291:1;30308:20;30326:1;30308:20;:::i;:::-;30303:25;;30342:20;30360:1;30342:20;:::i;:::-;30337:25;;30381:1;30371:35;;30386:18;;:::i;:::-;30371:35;30428:1;30425;30421:9;30416:14;;30251:185;;;;:::o;30442:175::-;30582:27;30578:1;30570:6;30566:14;30559:51;30442:175;:::o;30623:366::-;30765:3;30786:67;30850:2;30845:3;30786:67;:::i;:::-;30779:74;;30862:93;30951:3;30862:93;:::i;:::-;30980:2;30975:3;30971:12;30964:19;;30623:366;;;:::o;30995:419::-;31161:4;31199:2;31188:9;31184:18;31176:26;;31248:9;31242:4;31238:20;31234:1;31223:9;31219:17;31212:47;31276:131;31402:4;31276:131;:::i;:::-;31268:139;;30995:419;;;:::o;31420:191::-;31460:3;31479:20;31497:1;31479:20;:::i;:::-;31474:25;;31513:20;31531:1;31513:20;:::i;:::-;31508:25;;31556:1;31553;31549:9;31542:16;;31577:3;31574:1;31571:10;31568:36;;;31584:18;;:::i;:::-;31568:36;31420:191;;;;:::o;31617:176::-;31757:28;31753:1;31745:6;31741:14;31734:52;31617:176;:::o;31799:366::-;31941:3;31962:67;32026:2;32021:3;31962:67;:::i;:::-;31955:74;;32038:93;32127:3;32038:93;:::i;:::-;32156:2;32151:3;32147:12;32140:19;;31799:366;;;:::o;32171:419::-;32337:4;32375:2;32364:9;32360:18;32352:26;;32424:9;32418:4;32414:20;32410:1;32399:9;32395:17;32388:47;32452:131;32578:4;32452:131;:::i;:::-;32444:139;;32171:419;;;:::o;32596:233::-;32635:3;32658:24;32676:5;32658:24;:::i;:::-;32649:33;;32704:66;32697:5;32694:77;32691:103;;32774:18;;:::i;:::-;32691:103;32821:1;32814:5;32810:13;32803:20;;32596:233;;;:::o;32835:179::-;32975:31;32971:1;32963:6;32959:14;32952:55;32835:179;:::o;33020:366::-;33162:3;33183:67;33247:2;33242:3;33183:67;:::i;:::-;33176:74;;33259:93;33348:3;33259:93;:::i;:::-;33377:2;33372:3;33368:12;33361:19;;33020:366;;;:::o;33392:419::-;33558:4;33596:2;33585:9;33581:18;33573:26;;33645:9;33639:4;33635:20;33631:1;33620:9;33616:17;33609:47;33673:131;33799:4;33673:131;:::i;:::-;33665:139;;33392:419;;;:::o;33817:180::-;33865:77;33862:1;33855:88;33962:4;33959:1;33952:15;33986:4;33983:1;33976:15;34003:180;34051:77;34048:1;34041:88;34148:4;34145:1;34138:15;34172:4;34169:1;34162:15;34189:143;34246:5;34277:6;34271:13;34262:22;;34293:33;34320:5;34293:33;:::i;:::-;34189:143;;;;:::o;34338:351::-;34408:6;34457:2;34445:9;34436:7;34432:23;34428:32;34425:119;;;34463:79;;:::i;:::-;34425:119;34583:1;34608:64;34664:7;34655:6;34644:9;34640:22;34608:64;:::i;:::-;34598:74;;34554:128;34338:351;;;;:::o;34695:85::-;34740:7;34769:5;34758:16;;34695:85;;;:::o;34786:158::-;34844:9;34877:61;34895:42;34904:32;34930:5;34904:32;:::i;:::-;34895:42;:::i;:::-;34877:61;:::i;:::-;34864:74;;34786:158;;;:::o;34950:147::-;35045:45;35084:5;35045:45;:::i;:::-;35040:3;35033:58;34950:147;;:::o;35103:114::-;35170:6;35204:5;35198:12;35188:22;;35103:114;;;:::o;35223:184::-;35322:11;35356:6;35351:3;35344:19;35396:4;35391:3;35387:14;35372:29;;35223:184;;;;:::o;35413:132::-;35480:4;35503:3;35495:11;;35533:4;35528:3;35524:14;35516:22;;35413:132;;;:::o;35551:108::-;35628:24;35646:5;35628:24;:::i;:::-;35623:3;35616:37;35551:108;;:::o;35665:179::-;35734:10;35755:46;35797:3;35789:6;35755:46;:::i;:::-;35833:4;35828:3;35824:14;35810:28;;35665:179;;;;:::o;35850:113::-;35920:4;35952;35947:3;35943:14;35935:22;;35850:113;;;:::o;35999:732::-;36118:3;36147:54;36195:5;36147:54;:::i;:::-;36217:86;36296:6;36291:3;36217:86;:::i;:::-;36210:93;;36327:56;36377:5;36327:56;:::i;:::-;36406:7;36437:1;36422:284;36447:6;36444:1;36441:13;36422:284;;;36523:6;36517:13;36550:63;36609:3;36594:13;36550:63;:::i;:::-;36543:70;;36636:60;36689:6;36636:60;:::i;:::-;36626:70;;36482:224;36469:1;36466;36462:9;36457:14;;36422:284;;;36426:14;36722:3;36715:10;;36123:608;;;35999:732;;;;:::o;36737:831::-;37000:4;37038:3;37027:9;37023:19;37015:27;;37052:71;37120:1;37109:9;37105:17;37096:6;37052:71;:::i;:::-;37133:80;37209:2;37198:9;37194:18;37185:6;37133:80;:::i;:::-;37260:9;37254:4;37250:20;37245:2;37234:9;37230:18;37223:48;37288:108;37391:4;37382:6;37288:108;:::i;:::-;37280:116;;37406:72;37474:2;37463:9;37459:18;37450:6;37406:72;:::i;:::-;37488:73;37556:3;37545:9;37541:19;37532:6;37488:73;:::i;:::-;36737:831;;;;;;;;:::o

Swarm Source

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