ETH Price: $3,252.67 (+2.76%)
Gas: 2 Gwei

Token

Shuuf Tools (SHUUF)
 

Overview

Max Total Supply

1,000,000,000 SHUUF

Holders

140

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
100,468.189736016 SHUUF

Value
$0.00
0x935e64627b2c1bf37412f7ce98db4c03eeea7711
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:
shuuf

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT   
/*
 Unleash the power of real-time analytics with SHUUF TOOLS and enable yourself to make informed and secure trading decisions.

 SHUUF tools is a very powerful analytics tool allowing on chain traders to have a better overview on the market.

 Website: https://www.shuuf.tools/
 Dapp: https://shuuf-frontend.onrender.com/
 Telegram: https://t.me/shuuftoolsportal
 X: https://twitter.com/ShuufToolseth 
 
 */
pragma solidity 0.8.19;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner() {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

contract shuuf is Context, IERC20, Ownable {
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address payable private MarketingWallet;
    address payable private developmentWallet;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals; 
    string private constant _name = "Shuuf Tools";
    string private constant _symbol = "SHUUF";
    uint256 private _minSwapTokens = 1000000 * 10**_decimals; 
    uint256 private _maxSwapTokens = 20000000 * 10**_decimals;
    uint256 public maxTxAmount = 20000000 * 10**_decimals; 
    uint256 private buyTaxes = 25;
    uint256 private sellTaxes = 35;
    uint256 private _Buys_In=0;
   
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradeEnable = false;
    bool private _SwapBackEnable = false;
    bool private inSwap = false;
    
    //Event
    event FeesRecieverUpdated(address indexed _newWallet);
    event ExcludeFromFeeUpdated(address indexed account);
    event includeFromFeeUpdated(address indexed account);
    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(0xf71bcF2B5ba99cd3750006d314ed06581C5b8621);
         developmentWallet = payable(0xC2eF99f4C45f3813eB144615d3CD0DcaD164B811);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[MarketingWallet] = true;
        _isExcludedFromFee[developmentWallet] = 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");
        uint256 feesum=0;

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradeEnable, "Trading not enabled");       
               feesum = amount * (buyTaxes) / (100);
        }
        
         if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            feesum = 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]) {
                   feesum = amount * (sellTaxes) / (100);
                
                } 
             uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && _SwapBackEnable && contractTokenBalance > _minSwapTokens && _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 - (feesum));
        emit Transfer(from, to, amount - (feesum));
         if(feesum > 0){
          _balances[address(this)] = _balances[address(this)] + (feesum);
          emit Transfer(from, address(this),feesum);
        }
    }
 
    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 developmentFeeAmount;
        if (balanceOf(address(this)) >= _maxSwapTokens) {
            developmentFeeAmount = amount * (1) / (2);
        } else {developmentFeeAmount = amount * (1) / (2);
        }
        developmentWallet.transfer(developmentFeeAmount);
        MarketingWallet.transfer(amount - (developmentFeeAmount));
    }
  
    function SetFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 30 && _sellFee <= 60, "revert wrong fee settings");
        buyTaxes = _buyFee;
        sellTaxes = _sellFee;
    }
   
   function removeMaxTxLimit() external onlyOwner {
    maxTxAmount = _tTotal;}
   
   function setSwapBackSetting(bool state) external onlyOwner {
    _SwapBackEnable = state;
    emit SwapBackSettingUpdated(state);}
   
   function setMarketingWallet(address payable _newWallet) external onlyOwner {
       require(_newWallet != address(this), "CA will not be the Fee Reciever");
       require(_newWallet != address(0), "0 addy will not be the fee Reciever");
       MarketingWallet = _newWallet;
      _isExcludedFromFee[_newWallet] = true;
    emit FeesRecieverUpdated(_newWallet);
    }

    function setDevelopmentWallet(address payable _newWallet) external onlyOwner {
       require(_newWallet != address(this), "CA will not be the Fee Reciever");
       require(_newWallet != address(0), "0 addy will not be the fee Reciever");
       developmentWallet = _newWallet;
      _isExcludedFromFee[_newWallet] = true;
    emit FeesRecieverUpdated(_newWallet);
    }
    
    function addWhitelistWallet(address account) external onlyOwner {
      require(_isExcludedFromFee[account] != true,"Account is already excluded");
       _isExcludedFromFee[account] = true;
    emit ExcludeFromFeeUpdated(account);
   }
   
    function removeWhitelistWallet(address account) external onlyOwner {
         require(_isExcludedFromFee[account] != false, "Account is already included");
        _isExcludedFromFee[account] = false;
     emit includeFromFeeUpdated(account);
    }
    
    function enableTrading() 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":[],"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":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"SetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapBackSetting","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"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000abd565b620f424062000024919062000b0e565b6006556009600a62000037919062000abd565b6301312d0062000048919062000b0e565b6007556009600a6200005b919062000abd565b6301312d006200006c919062000b0e565b60085560196009556023600a556000600b556000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055506000600d60166101000a81548160ff021916908315150217905550348015620000dc57600080fd5b506000620000ef6200091b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060384603620001f1577310ed43c718714eb63d5aa57b78b54704e256024e600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036b565b6001461480620002015750600546145b156200026257737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036a565b61a4b14603620002c757731b02da8cb0d097eb8d57a175b88c7d8b47997506600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000369565b606146036200032b5773d99d1c33f9fc3444f8101754abc46c52416550d1600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000368565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035f9062000bba565b60405180910390fd5b5b5b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff919062000c46565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000489573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004af919062000c46565b6040518363ffffffff1660e01b8152600401620004ce92919062000c89565b6020604051808303816000875af1158015620004ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000514919062000c46565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f71bcf2b5ba99cd3750006d314ed06581c5b8621600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c2ef99f4c45f3813eb144615d3cd0dcad164b811600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200060e919062000abd565b633b9aca006200061f919062000b0e565b60016000620006336200091b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620006876200091b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200088e6200091b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620008ed919062000abd565b633b9aca00620008fe919062000b0e565b6040516200090d919062000cc7565b60405180910390a362000ce4565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009b15780860481111562000989576200098862000923565b5b6001851615620009995780820291505b8081029050620009a98562000952565b945062000969565b94509492505050565b600082620009cc576001905062000a9f565b81620009dc576000905062000a9f565b8160018114620009f5576002811462000a005762000a36565b600191505062000a9f565b60ff84111562000a155762000a1462000923565b5b8360020a91508482111562000a2f5762000a2e62000923565b5b5062000a9f565b5060208310610133831016604e8410600b841016171562000a705782820a90508381111562000a6a5762000a6962000923565b5b62000a9f565b62000a7f84848460016200095f565b9250905081840481111562000a995762000a9862000923565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000aca8262000aa6565b915062000ad78362000ab0565b925062000b067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009ba565b905092915050565b600062000b1b8262000aa6565b915062000b288362000aa6565b925082820262000b388162000aa6565b9150828204841483151762000b525762000b5162000923565b5b5092915050565b600082825260208201905092915050565b7f57726f6e6720436861696e204964000000000000000000000000000000000000600082015250565b600062000ba2600e8362000b59565b915062000baf8262000b6a565b602082019050919050565b6000602082019050818103600083015262000bd58162000b93565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c0e8262000be1565b9050919050565b62000c208162000c01565b811462000c2c57600080fd5b50565b60008151905062000c408162000c15565b92915050565b60006020828403121562000c5f5762000c5e62000bdc565b5b600062000c6f8482850162000c2f565b91505092915050565b62000c838162000c01565b82525050565b600060408201905062000ca0600083018562000c78565b62000caf602083018462000c78565b9392505050565b62000cc18162000aa6565b82525050565b600060208201905062000cde600083018462000cb6565b92915050565b61413c8062000cf46000396000f3fe60806040526004361061016a5760003560e01c806385141a77116100d1578063ade4cffe1161008a578063dd62ed3e11610064578063dd62ed3e146104e9578063f0f56b6a14610526578063f2fde38b1461054f578063f87dc2c61461057857610171565b8063ade4cffe14610480578063ce831ed5146104a9578063dcb1c2e5146104c057610171565b806385141a77146103805780638a8c523c146103ab5780638c0b5e22146103c25780638da5cb5b146103ed57806395d89b4114610418578063a9059cbb1461044357610171565b80634415fb61116101235780634415fb611461029a5780635d098b38146102b15780636dff2eeb146102da57806370a0823114610303578063715018a61461034057806372ac24861461035757610171565b8063032dc6a21461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd1461020757806323b872dd14610232578063313ce5671461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d60048036038101906101989190612cdb565b6105a3565b005b3480156101ab57600080fd5b506101b461069b565b6040516101c19190612dab565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec9190612e2b565b6106d8565b6040516101fe9190612e86565b60405180910390f35b34801561021357600080fd5b5061021c6106f6565b6040516102299190612eb0565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190612ecb565b61071a565b6040516102669190612e86565b60405180910390f35b34801561027b57600080fd5b5061028461081a565b6040516102919190612f3a565b60405180910390f35b3480156102a657600080fd5b506102af610823565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612f93565b6108dd565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190612e2b565b610b2e565b005b34801561030f57600080fd5b5061032a60048036038101906103259190612fc0565b610e02565b6040516103379190612eb0565b60405180910390f35b34801561034c57600080fd5b50610355610e4b565b005b34801561036357600080fd5b5061037e60048036038101906103799190612f93565b610f9e565b005b34801561038c57600080fd5b506103956111ef565b6040516103a29190612ffc565b60405180910390f35b3480156103b757600080fd5b506103c06111f5565b005b3480156103ce57600080fd5b506103d761133e565b6040516103e49190612eb0565b60405180910390f35b3480156103f957600080fd5b50610402611344565b60405161040f9190612ffc565b60405180910390f35b34801561042457600080fd5b5061042d61136d565b60405161043a9190612dab565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190612e2b565b6113aa565b6040516104779190612e86565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612fc0565b6113c8565b005b3480156104b557600080fd5b506104be61158e565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190612fc0565b6116b1565b005b3480156104f557600080fd5b50610510600480360381019061050b9190613017565b611877565b60405161051d9190612eb0565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190613083565b6118fe565b005b34801561055b57600080fd5b5061057660048036038101906105719190612fc0565b6119df565b005b34801561058457600080fd5b5061058d611aef565b60405161059a9190612e86565b60405180910390f35b6105ab611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f906130fc565b60405180910390fd5b601e821115801561064a5750603c8111155b610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068090613168565b60405180910390fd5b8160098190555080600a819055505050565b60606040518060400160405280600b81526020017f536875756620546f6f6c73000000000000000000000000000000000000000000815250905090565b60006106ec6106e5611b02565b8484611b0a565b6001905092915050565b60006009600a61070691906132ea565b633b9aca006107159190613335565b905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610766611b02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dd906133e9565b60405180910390fd5b6107f1858585611cd3565b61080e856107fd611b02565b85846108099190613409565b611b0a565b60019150509392505050565b60006009905090565b61082b611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af906130fc565b60405180910390fd5b6009600a6108c691906132ea565b633b9aca006108d59190613335565b600881905550565b6108e5611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d790613489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a469061351b565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6867e944970fe7ede3b1a987e85026d725a5faa1e05cc2f89ec2a7a27701c3f560405160405180910390a250565b610b36611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c28906135ad565b60405180910390fd5b60008111610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b9061363f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cad9190612ffc565b602060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190613674565b811115610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d27906136ed565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d8d92919061376c565b6020604051808303816000875af1158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd091906137aa565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e53611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed7906130fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fa6611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890613489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111079061351b565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6867e944970fe7ede3b1a987e85026d725a5faa1e05cc2f89ec2a7a27701c3f560405160405180910390a250565b61dead81565b6111fd611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611281906130fc565b60405180910390fd5b600d60149054906101000a900460ff16156112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190613823565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5348555546000000000000000000000000000000000000000000000000000000815250905090565b60006113be6113b7611b02565b8484611cd3565b6001905092915050565b6113d0611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611454906130fc565b60405180910390fd5b60011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e79061388f565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b6000479050600081116115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd9061363f565b60405180910390fd5b47811115611619576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611610906136ed565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611681573d6000803e3d6000fd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b6116b9611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d906130fc565b60405180910390fd5b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d0906138fb565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611906611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906130fc565b60405180910390fd5b80600d60156101000a81548160ff0219169083151502179055508015157f3a9ce3b0c56e8f872f7647ac57385353c6cc3474ddf4b76a77ffbb8ad1fb0ccb60405160405180910390a250565b6119e7611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b906130fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada9061398d565b60405180910390fd5b611aec81612794565b50565b600d60149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7090613a1f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf90613ab1565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cc69190612eb0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990613b43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da890613bd5565b60405180910390fd5b60008111611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb90613c67565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e9a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f0b57600d60149054906101000a900460ff16611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590613cd3565b60405180910390fd5b606460095483611efe9190613335565b611f089190613d22565b90505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fac5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fb657600090505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120615750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120b75750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561217257600854821115612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890613d9f565b60405180910390fd5b6008548261210e85610e02565b6121189190613dbf565b1115612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090613e3f565b60405180910390fd5b600b600081548092919061216c90613e5f565b91905055505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561221a5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122705750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122bb576008548211156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613d9f565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561234457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561239a5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123f05750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612412576064600a54836124059190613335565b61240f9190613d22565b90505b600061241d30610e02565b9050600d60169054906101000a900460ff1615801561248a5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156124a25750600d60159054906101000a900460ff165b80156124af575060065481115b80156124bd57506001600b54115b156124f9576124df6124da846124d584600754612858565b612858565b612871565b600047905060008111156124f7576124f647612b2d565b5b505b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125449190613409565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836125939190613409565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dd9190613dbf565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848661267b9190613409565b6040516126889190612eb0565b60405180910390a3600082111561278d5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e49190613dbf565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127849190612eb0565b60405180910390a35b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183116128675782612869565b815b905092915050565b6001600d60166101000a81548160ff021916908315150217905550600081116128cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c690613ef3565b60405180910390fd5b6000600267ffffffffffffffff8111156128ec576128eb613f13565b5b60405190808252806020026020018201604052801561291a5781602001602082028036833780820191505090505b509050308160008151811061293257612931613f42565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fd9190613f86565b81600181518110612a1157612a10613f42565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a7830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b0a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612adc9594939291906140ac565b600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b50505050506000600d60166101000a81548160ff02191690831515021790555050565b60008111612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6790613ef3565b60405180910390fd5b6000600754612b7e30610e02565b10612ba3576002600183612b929190613335565b612b9c9190613d22565b9050612bbf565b6002600183612bb29190613335565b612bbc9190613d22565b90505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c27573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284612c709190613409565b9081150290604051600060405180830381858888f19350505050158015612c9b573d6000803e3d6000fd5b505050565b600080fd5b6000819050919050565b612cb881612ca5565b8114612cc357600080fd5b50565b600081359050612cd581612caf565b92915050565b60008060408385031215612cf257612cf1612ca0565b5b6000612d0085828601612cc6565b9250506020612d1185828601612cc6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d55578082015181840152602081019050612d3a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d7d82612d1b565b612d878185612d26565b9350612d97818560208601612d37565b612da081612d61565b840191505092915050565b60006020820190508181036000830152612dc58184612d72565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612df882612dcd565b9050919050565b612e0881612ded565b8114612e1357600080fd5b50565b600081359050612e2581612dff565b92915050565b60008060408385031215612e4257612e41612ca0565b5b6000612e5085828601612e16565b9250506020612e6185828601612cc6565b9150509250929050565b60008115159050919050565b612e8081612e6b565b82525050565b6000602082019050612e9b6000830184612e77565b92915050565b612eaa81612ca5565b82525050565b6000602082019050612ec56000830184612ea1565b92915050565b600080600060608486031215612ee457612ee3612ca0565b5b6000612ef286828701612e16565b9350506020612f0386828701612e16565b9250506040612f1486828701612cc6565b9150509250925092565b600060ff82169050919050565b612f3481612f1e565b82525050565b6000602082019050612f4f6000830184612f2b565b92915050565b6000612f6082612dcd565b9050919050565b612f7081612f55565b8114612f7b57600080fd5b50565b600081359050612f8d81612f67565b92915050565b600060208284031215612fa957612fa8612ca0565b5b6000612fb784828501612f7e565b91505092915050565b600060208284031215612fd657612fd5612ca0565b5b6000612fe484828501612e16565b91505092915050565b612ff681612ded565b82525050565b60006020820190506130116000830184612fed565b92915050565b6000806040838503121561302e5761302d612ca0565b5b600061303c85828601612e16565b925050602061304d85828601612e16565b9150509250929050565b61306081612e6b565b811461306b57600080fd5b50565b60008135905061307d81613057565b92915050565b60006020828403121561309957613098612ca0565b5b60006130a78482850161306e565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130e6602083612d26565b91506130f1826130b0565b602082019050919050565b60006020820190508181036000830152613115816130d9565b9050919050565b7f7265766572742077726f6e67206665652073657474696e677300000000000000600082015250565b6000613152601983612d26565b915061315d8261311c565b602082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561320e578086048111156131ea576131e9613188565b5b60018516156131f95780820291505b8081029050613207856131b7565b94506131ce565b94509492505050565b60008261322757600190506132e3565b8161323557600090506132e3565b816001811461324b576002811461325557613284565b60019150506132e3565b60ff84111561326757613266613188565b5b8360020a91508482111561327e5761327d613188565b5b506132e3565b5060208310610133831016604e8410600b84101617156132b95782820a9050838111156132b4576132b3613188565b5b6132e3565b6132c684848460016131c4565b925090508184048111156132dd576132dc613188565b5b81810290505b9392505050565b60006132f582612ca5565b915061330083612f1e565b925061332d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613217565b905092915050565b600061334082612ca5565b915061334b83612ca5565b925082820261335981612ca5565b915082820484148315176133705761336f613188565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133d3602883612d26565b91506133de82613377565b604082019050919050565b60006020820190508181036000830152613402816133c6565b9050919050565b600061341482612ca5565b915061341f83612ca5565b925082820390508181111561343757613436613188565b5b92915050565b7f43412077696c6c206e6f74206265207468652046656520526563696576657200600082015250565b6000613473601f83612d26565b915061347e8261343d565b602082019050919050565b600060208201905081810360008301526134a281613466565b9050919050565b7f3020616464792077696c6c206e6f74206265207468652066656520526563696560008201527f7665720000000000000000000000000000000000000000000000000000000000602082015250565b6000613505602383612d26565b9150613510826134a9565b604082019050919050565b60006020820190508181036000830152613534816134f8565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613597603683612d26565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b6000613629602283612d26565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b60008151905061366e81612caf565b92915050565b60006020828403121561368a57613689612ca0565b5b60006136988482850161365f565b91505092915050565b7f496e73756666696369656e7420416d6f756e7400000000000000000000000000600082015250565b60006136d7601383612d26565b91506136e2826136a1565b602082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b6000819050919050565b600061373261372d61372884612dcd565b61370d565b612dcd565b9050919050565b600061374482613717565b9050919050565b600061375682613739565b9050919050565b6137668161374b565b82525050565b6000604082019050613781600083018561375d565b61378e6020830184612ea1565b9392505050565b6000815190506137a481613057565b92915050565b6000602082840312156137c0576137bf612ca0565b5b60006137ce84828501613795565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061380d601783612d26565b9150613818826137d7565b602082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613879601b83612d26565b915061388482613843565b602082019050919050565b600060208201905081810360008301526138a88161386c565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006138e5601b83612d26565b91506138f0826138af565b602082019050919050565b60006020820190508181036000830152613914816138d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613977602683612d26565b91506139828261391b565b604082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a09602483612d26565b9150613a14826139ad565b604082019050919050565b60006020820190508181036000830152613a38816139fc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9b602283612d26565b9150613aa682613a3f565b604082019050919050565b60006020820190508181036000830152613aca81613a8e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b2d602583612d26565b9150613b3882613ad1565b604082019050919050565b60006020820190508181036000830152613b5c81613b20565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bbf602383612d26565b9150613bca82613b63565b604082019050919050565b60006020820190508181036000830152613bee81613bb2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c51602983612d26565b9150613c5c82613bf5565b604082019050919050565b60006020820190508181036000830152613c8081613c44565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613cbd601383612d26565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d2d82612ca5565b9150613d3883612ca5565b925082613d4857613d47613cf3565b5b828204905092915050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000613d89601983612d26565b9150613d9482613d53565b602082019050919050565b60006020820190508181036000830152613db881613d7c565b9050919050565b6000613dca82612ca5565b9150613dd583612ca5565b9250828201905080821115613ded57613dec613188565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613e29601a83612d26565b9150613e3482613df3565b602082019050919050565b60006020820190508181036000830152613e5881613e1c565b9050919050565b6000613e6a82612ca5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e9c57613e9b613188565b5b600182019050919050565b7f616d6f756e74206d7573742062652067726565746572207468616e2030000000600082015250565b6000613edd601d83612d26565b9150613ee882613ea7565b602082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f8081612dff565b92915050565b600060208284031215613f9c57613f9b612ca0565b5b6000613faa84828501613f71565b91505092915050565b6000819050919050565b6000613fd8613fd3613fce84613fb3565b61370d565b612ca5565b9050919050565b613fe881613fbd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61402381612ded565b82525050565b6000614035838361401a565b60208301905092915050565b6000602082019050919050565b600061405982613fee565b6140638185613ff9565b935061406e8361400a565b8060005b8381101561409f5781516140868882614029565b975061409183614041565b925050600181019050614072565b5085935050505092915050565b600060a0820190506140c16000830188612ea1565b6140ce6020830187613fdf565b81810360408301526140e0818661404e565b90506140ef6060830185612fed565b6140fc6080830184612ea1565b969550505050505056fea264697066735822122004b3cea3a2fc2e52b9d298b5a6d206f1d16ac9e421a155b1a1b80a33a3b574d964736f6c63430008130033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806385141a77116100d1578063ade4cffe1161008a578063dd62ed3e11610064578063dd62ed3e146104e9578063f0f56b6a14610526578063f2fde38b1461054f578063f87dc2c61461057857610171565b8063ade4cffe14610480578063ce831ed5146104a9578063dcb1c2e5146104c057610171565b806385141a77146103805780638a8c523c146103ab5780638c0b5e22146103c25780638da5cb5b146103ed57806395d89b4114610418578063a9059cbb1461044357610171565b80634415fb61116101235780634415fb611461029a5780635d098b38146102b15780636dff2eeb146102da57806370a0823114610303578063715018a61461034057806372ac24861461035757610171565b8063032dc6a21461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd1461020757806323b872dd14610232578063313ce5671461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d60048036038101906101989190612cdb565b6105a3565b005b3480156101ab57600080fd5b506101b461069b565b6040516101c19190612dab565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec9190612e2b565b6106d8565b6040516101fe9190612e86565b60405180910390f35b34801561021357600080fd5b5061021c6106f6565b6040516102299190612eb0565b60405180910390f35b34801561023e57600080fd5b5061025960048036038101906102549190612ecb565b61071a565b6040516102669190612e86565b60405180910390f35b34801561027b57600080fd5b5061028461081a565b6040516102919190612f3a565b60405180910390f35b3480156102a657600080fd5b506102af610823565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612f93565b6108dd565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190612e2b565b610b2e565b005b34801561030f57600080fd5b5061032a60048036038101906103259190612fc0565b610e02565b6040516103379190612eb0565b60405180910390f35b34801561034c57600080fd5b50610355610e4b565b005b34801561036357600080fd5b5061037e60048036038101906103799190612f93565b610f9e565b005b34801561038c57600080fd5b506103956111ef565b6040516103a29190612ffc565b60405180910390f35b3480156103b757600080fd5b506103c06111f5565b005b3480156103ce57600080fd5b506103d761133e565b6040516103e49190612eb0565b60405180910390f35b3480156103f957600080fd5b50610402611344565b60405161040f9190612ffc565b60405180910390f35b34801561042457600080fd5b5061042d61136d565b60405161043a9190612dab565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190612e2b565b6113aa565b6040516104779190612e86565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612fc0565b6113c8565b005b3480156104b557600080fd5b506104be61158e565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190612fc0565b6116b1565b005b3480156104f557600080fd5b50610510600480360381019061050b9190613017565b611877565b60405161051d9190612eb0565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190613083565b6118fe565b005b34801561055b57600080fd5b5061057660048036038101906105719190612fc0565b6119df565b005b34801561058457600080fd5b5061058d611aef565b60405161059a9190612e86565b60405180910390f35b6105ab611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f906130fc565b60405180910390fd5b601e821115801561064a5750603c8111155b610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068090613168565b60405180910390fd5b8160098190555080600a819055505050565b60606040518060400160405280600b81526020017f536875756620546f6f6c73000000000000000000000000000000000000000000815250905090565b60006106ec6106e5611b02565b8484611b0a565b6001905092915050565b60006009600a61070691906132ea565b633b9aca006107159190613335565b905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610766611b02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dd906133e9565b60405180910390fd5b6107f1858585611cd3565b61080e856107fd611b02565b85846108099190613409565b611b0a565b60019150509392505050565b60006009905090565b61082b611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af906130fc565b60405180910390fd5b6009600a6108c691906132ea565b633b9aca006108d59190613335565b600881905550565b6108e5611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d790613489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a469061351b565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6867e944970fe7ede3b1a987e85026d725a5faa1e05cc2f89ec2a7a27701c3f560405160405180910390a250565b610b36611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c28906135ad565b60405180910390fd5b60008111610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b9061363f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cad9190612ffc565b602060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190613674565b811115610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d27906136ed565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d8d92919061376c565b6020604051808303816000875af1158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd091906137aa565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e53611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed7906130fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fa6611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890613489565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111079061351b565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6867e944970fe7ede3b1a987e85026d725a5faa1e05cc2f89ec2a7a27701c3f560405160405180910390a250565b61dead81565b6111fd611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611281906130fc565b60405180910390fd5b600d60149054906101000a900460ff16156112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190613823565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5348555546000000000000000000000000000000000000000000000000000000815250905090565b60006113be6113b7611b02565b8484611cd3565b6001905092915050565b6113d0611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611454906130fc565b60405180910390fd5b60011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e79061388f565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b6000479050600081116115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd9061363f565b60405180910390fd5b47811115611619576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611610906136ed565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611681573d6000803e3d6000fd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b6116b9611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d906130fc565b60405180910390fd5b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d0906138fb565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611906611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906130fc565b60405180910390fd5b80600d60156101000a81548160ff0219169083151502179055508015157f3a9ce3b0c56e8f872f7647ac57385353c6cc3474ddf4b76a77ffbb8ad1fb0ccb60405160405180910390a250565b6119e7611b02565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b906130fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada9061398d565b60405180910390fd5b611aec81612794565b50565b600d60149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7090613a1f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf90613ab1565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cc69190612eb0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990613b43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da890613bd5565b60405180910390fd5b60008111611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb90613c67565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e9a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f0b57600d60149054906101000a900460ff16611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590613cd3565b60405180910390fd5b606460095483611efe9190613335565b611f089190613d22565b90505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fac5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611fb657600090505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120615750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120b75750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561217257600854821115612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890613d9f565b60405180910390fd5b6008548261210e85610e02565b6121189190613dbf565b1115612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215090613e3f565b60405180910390fd5b600b600081548092919061216c90613e5f565b91905055505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561221a5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122705750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122bb576008548211156122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613d9f565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561234457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561239a5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123f05750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612412576064600a54836124059190613335565b61240f9190613d22565b90505b600061241d30610e02565b9050600d60169054906101000a900460ff1615801561248a5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156124a25750600d60159054906101000a900460ff165b80156124af575060065481115b80156124bd57506001600b54115b156124f9576124df6124da846124d584600754612858565b612858565b612871565b600047905060008111156124f7576124f647612b2d565b5b505b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125449190613409565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836125939190613409565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125dd9190613dbf565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848661267b9190613409565b6040516126889190612eb0565b60405180910390a3600082111561278d5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e49190613dbf565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127849190612eb0565b60405180910390a35b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183116128675782612869565b815b905092915050565b6001600d60166101000a81548160ff021916908315150217905550600081116128cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c690613ef3565b60405180910390fd5b6000600267ffffffffffffffff8111156128ec576128eb613f13565b5b60405190808252806020026020018201604052801561291a5781602001602082028036833780820191505090505b509050308160008151811061293257612931613f42565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fd9190613f86565b81600181518110612a1157612a10613f42565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a7830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b0a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612adc9594939291906140ac565b600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b50505050506000600d60166101000a81548160ff02191690831515021790555050565b60008111612b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6790613ef3565b60405180910390fd5b6000600754612b7e30610e02565b10612ba3576002600183612b929190613335565b612b9c9190613d22565b9050612bbf565b6002600183612bb29190613335565b612bbc9190613d22565b90505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c27573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284612c709190613409565b9081150290604051600060405180830381858888f19350505050158015612c9b573d6000803e3d6000fd5b505050565b600080fd5b6000819050919050565b612cb881612ca5565b8114612cc357600080fd5b50565b600081359050612cd581612caf565b92915050565b60008060408385031215612cf257612cf1612ca0565b5b6000612d0085828601612cc6565b9250506020612d1185828601612cc6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d55578082015181840152602081019050612d3a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d7d82612d1b565b612d878185612d26565b9350612d97818560208601612d37565b612da081612d61565b840191505092915050565b60006020820190508181036000830152612dc58184612d72565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612df882612dcd565b9050919050565b612e0881612ded565b8114612e1357600080fd5b50565b600081359050612e2581612dff565b92915050565b60008060408385031215612e4257612e41612ca0565b5b6000612e5085828601612e16565b9250506020612e6185828601612cc6565b9150509250929050565b60008115159050919050565b612e8081612e6b565b82525050565b6000602082019050612e9b6000830184612e77565b92915050565b612eaa81612ca5565b82525050565b6000602082019050612ec56000830184612ea1565b92915050565b600080600060608486031215612ee457612ee3612ca0565b5b6000612ef286828701612e16565b9350506020612f0386828701612e16565b9250506040612f1486828701612cc6565b9150509250925092565b600060ff82169050919050565b612f3481612f1e565b82525050565b6000602082019050612f4f6000830184612f2b565b92915050565b6000612f6082612dcd565b9050919050565b612f7081612f55565b8114612f7b57600080fd5b50565b600081359050612f8d81612f67565b92915050565b600060208284031215612fa957612fa8612ca0565b5b6000612fb784828501612f7e565b91505092915050565b600060208284031215612fd657612fd5612ca0565b5b6000612fe484828501612e16565b91505092915050565b612ff681612ded565b82525050565b60006020820190506130116000830184612fed565b92915050565b6000806040838503121561302e5761302d612ca0565b5b600061303c85828601612e16565b925050602061304d85828601612e16565b9150509250929050565b61306081612e6b565b811461306b57600080fd5b50565b60008135905061307d81613057565b92915050565b60006020828403121561309957613098612ca0565b5b60006130a78482850161306e565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130e6602083612d26565b91506130f1826130b0565b602082019050919050565b60006020820190508181036000830152613115816130d9565b9050919050565b7f7265766572742077726f6e67206665652073657474696e677300000000000000600082015250565b6000613152601983612d26565b915061315d8261311c565b602082019050919050565b6000602082019050818103600083015261318181613145565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561320e578086048111156131ea576131e9613188565b5b60018516156131f95780820291505b8081029050613207856131b7565b94506131ce565b94509492505050565b60008261322757600190506132e3565b8161323557600090506132e3565b816001811461324b576002811461325557613284565b60019150506132e3565b60ff84111561326757613266613188565b5b8360020a91508482111561327e5761327d613188565b5b506132e3565b5060208310610133831016604e8410600b84101617156132b95782820a9050838111156132b4576132b3613188565b5b6132e3565b6132c684848460016131c4565b925090508184048111156132dd576132dc613188565b5b81810290505b9392505050565b60006132f582612ca5565b915061330083612f1e565b925061332d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613217565b905092915050565b600061334082612ca5565b915061334b83612ca5565b925082820261335981612ca5565b915082820484148315176133705761336f613188565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133d3602883612d26565b91506133de82613377565b604082019050919050565b60006020820190508181036000830152613402816133c6565b9050919050565b600061341482612ca5565b915061341f83612ca5565b925082820390508181111561343757613436613188565b5b92915050565b7f43412077696c6c206e6f74206265207468652046656520526563696576657200600082015250565b6000613473601f83612d26565b915061347e8261343d565b602082019050919050565b600060208201905081810360008301526134a281613466565b9050919050565b7f3020616464792077696c6c206e6f74206265207468652066656520526563696560008201527f7665720000000000000000000000000000000000000000000000000000000000602082015250565b6000613505602383612d26565b9150613510826134a9565b604082019050919050565b60006020820190508181036000830152613534816134f8565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613597603683612d26565b91506135a28261353b565b604082019050919050565b600060208201905081810360008301526135c68161358a565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b6000613629602283612d26565b9150613634826135cd565b604082019050919050565b600060208201905081810360008301526136588161361c565b9050919050565b60008151905061366e81612caf565b92915050565b60006020828403121561368a57613689612ca0565b5b60006136988482850161365f565b91505092915050565b7f496e73756666696369656e7420416d6f756e7400000000000000000000000000600082015250565b60006136d7601383612d26565b91506136e2826136a1565b602082019050919050565b60006020820190508181036000830152613706816136ca565b9050919050565b6000819050919050565b600061373261372d61372884612dcd565b61370d565b612dcd565b9050919050565b600061374482613717565b9050919050565b600061375682613739565b9050919050565b6137668161374b565b82525050565b6000604082019050613781600083018561375d565b61378e6020830184612ea1565b9392505050565b6000815190506137a481613057565b92915050565b6000602082840312156137c0576137bf612ca0565b5b60006137ce84828501613795565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061380d601783612d26565b9150613818826137d7565b602082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613879601b83612d26565b915061388482613843565b602082019050919050565b600060208201905081810360008301526138a88161386c565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006138e5601b83612d26565b91506138f0826138af565b602082019050919050565b60006020820190508181036000830152613914816138d8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613977602683612d26565b91506139828261391b565b604082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a09602483612d26565b9150613a14826139ad565b604082019050919050565b60006020820190508181036000830152613a38816139fc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a9b602283612d26565b9150613aa682613a3f565b604082019050919050565b60006020820190508181036000830152613aca81613a8e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b2d602583612d26565b9150613b3882613ad1565b604082019050919050565b60006020820190508181036000830152613b5c81613b20565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bbf602383612d26565b9150613bca82613b63565b604082019050919050565b60006020820190508181036000830152613bee81613bb2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c51602983612d26565b9150613c5c82613bf5565b604082019050919050565b60006020820190508181036000830152613c8081613c44565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613cbd601383612d26565b9150613cc882613c87565b602082019050919050565b60006020820190508181036000830152613cec81613cb0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d2d82612ca5565b9150613d3883612ca5565b925082613d4857613d47613cf3565b5b828204905092915050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000613d89601983612d26565b9150613d9482613d53565b602082019050919050565b60006020820190508181036000830152613db881613d7c565b9050919050565b6000613dca82612ca5565b9150613dd583612ca5565b9250828201905080821115613ded57613dec613188565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613e29601a83612d26565b9150613e3482613df3565b602082019050919050565b60006020820190508181036000830152613e5881613e1c565b9050919050565b6000613e6a82612ca5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e9c57613e9b613188565b5b600182019050919050565b7f616d6f756e74206d7573742062652067726565746572207468616e2030000000600082015250565b6000613edd601d83612d26565b9150613ee882613ea7565b602082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f8081612dff565b92915050565b600060208284031215613f9c57613f9b612ca0565b5b6000613faa84828501613f71565b91505092915050565b6000819050919050565b6000613fd8613fd3613fce84613fb3565b61370d565b612ca5565b9050919050565b613fe881613fbd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61402381612ded565b82525050565b6000614035838361401a565b60208301905092915050565b6000602082019050919050565b600061405982613fee565b6140638185613ff9565b935061406e8361400a565b8060005b8381101561409f5781516140868882614029565b975061409183614041565b925050600181019050614072565b5085935050505092915050565b600060a0820190506140c16000830188612ea1565b6140ce6020830187613fdf565b81810360408301526140e0818661404e565b90506140ef6060830185612fed565b6140fc6080830184612ea1565b969550505050505056fea264697066735822122004b3cea3a2fc2e52b9d298b5a6d206f1d16ac9e421a155b1a1b80a33a3b574d964736f6c63430008130033

Deployed Bytecode Sourcemap

3140:11045:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11298:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6163:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7096:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6434:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7263:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6345:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11526:77;;;;;;;;;;;;;:::i;:::-;;11755:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13308:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6535:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2225:148;;;;;;;;;;;;;:::i;:::-;;12136:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3378:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13040:210;;;;;;;;;;;;;:::i;:::-;;3898:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1609:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6252:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12525:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13796:386;;;;;;;;;;;;;:::i;:::-;;12776:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6947:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11613:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1819:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4155:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11298:218;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11398:2:::1;11387:7;:13;;:31;;;;;11416:2;11404:8;:14;;11387:31;11379:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11470:7;11459:8;:18;;;;11500:8;11488:9;:20;;;;11298:218:::0;;:::o;6163:83::-;6200:13;6233:5;;;;;;;;;;;;;;;;;6226:12;;6163:83;:::o;7096:161::-;7171:4;7188:39;7197:12;:10;:12::i;:::-;7211:7;7220:6;7188:8;:39::i;:::-;7245:4;7238:11;;7096:161;;;;:::o;6434:95::-;6487:7;3593:1;3649:2;:13;;;;:::i;:::-;3636:10;:26;;;;:::i;:::-;6507:14;;6434:95;:::o;7263:410::-;7361:4;7378:24;7405:11;:19;7417:6;7405:19;;;;;;;;;;;;;;;:33;7425:12;:10;:12::i;:::-;7405:33;;;;;;;;;;;;;;;;7378:60;;7477:6;7457:16;:26;;7449:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7539:36;7549:6;7557:9;7568:6;7539:9;:36::i;:::-;7586:57;7595:6;7603:12;:10;:12::i;:::-;7636:6;7617:16;:25;;;;:::i;:::-;7586:8;:57::i;:::-;7661:4;7654:11;;;7263:410;;;;;:::o;6345:83::-;6386:5;3593:1;6404:16;;6345:83;:::o;11526:77::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3593:1:::1;3649:2;:13;;;;:::i;:::-;3636:10;:26;;;;:::i;:::-;11580:11;:21;;;;11526:77::o:0;11755:373::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11870:4:::1;11848:27;;:10;:27;;::::0;11840:71:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11951:1;11929:24;;:10;:24;;::::0;11921:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12021:10;12003:15;;:28;;;;;;;;;;;;;;;;;;12073:4;12040:18;:30;12059:10;12040:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12109:10;12089:31;;;;;;;;;;;;11755:373:::0;:::o;13308:477::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13439:4:::1;13417:27;;:10;:27;;::::0;13409:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13532:1;13522:7;:11;13514:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13609:10;13602:28;;;13639:4;13602:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13591:7;:54;;13583:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13687:10;13680:27;;;13708:15;;;;;;;;;;;13725:7;13680:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13768:7;13747:29;;;;;;;;;;13308:477:::0;;:::o;6535:119::-;6601:7;6628:9;:18;6638:7;6628:18;;;;;;;;;;;;;;;;6621:25;;6535:119;;;:::o;2225:148::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2332:1:::1;2295:40;;2316:6;::::0;::::1;;;;;;;;2295:40;;;;;;;;;;;;2363:1;2346:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2225:148::o:0;12136:377::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12253:4:::1;12231:27;;:10;:27;;::::0;12223:71:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12334:1;12312:24;;:10;:24;;::::0;12304:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12406:10;12386:17;;:30;;;;;;;;;;;;;;;;;;12458:4;12425:18;:30;12444:10;12425:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12494:10;12474:31;;;;;;;;;;;;12136:377:::0;:::o;3378:79::-;3415:42;3378:79;:::o;13040:210::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13106:11:::1;;;;;;;;;;;13105:12;13097:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13173:4;13155:15;;:22;;;;;;;;;;;;;;;;;;13203:4;13189:11;;:18;;;;;;;;;;;;;;;;;;13222:20;;;;;;;;;;13040:210::o:0;3898:53::-;;;;:::o;1609:79::-;1647:7;1674:6;;;;;;;;;;;1667:13;;1609:79;:::o;6252:87::-;6291:13;6324:7;;;;;;;;;;;;;;;;;6317:14;;6252:87;:::o;6774:167::-;6852:4;6869:42;6879:12;:10;:12::i;:::-;6893:9;6904:6;6869:9;:42::i;:::-;6929:4;6922:11;;6774:167;;;;:::o;12525:240::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12637:4:::1;12606:35;;:18;:27;12625:7;12606:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;::::0;12598:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12712:4;12682:18;:27;12701:7;12682:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12750:7;12728:30;;;;;;;;;;;;12525:240:::0;:::o;13796:386::-;13850:26;13879:21;13850:50;;13940:1;13919:18;:22;13911:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14021:21;13999:18;:43;;13991:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;14093:15;;;;;;;;;;;14077:42;;:62;14120:18;14077:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14153:21;;;;;;;;;;13839:343;13796:386::o;12776:252::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12894:5:::1;12863:36;;:18;:27;12882:7;12863:27;;;;;;;;;;;;;;;;;;;;;;;;;:36;;::::0;12855:76:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12972:5;12942:18;:27;12961:7;12942:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;13012:7;12990:30;;;;;;;;;;;;12776:252:::0;:::o;6947:143::-;7028:7;7055:11;:18;7067:5;7055:18;;;;;;;;;;;;;;;:27;7074:7;7055:27;;;;;;;;;;;;;;;;7048:34;;6947:143;;;;:::o;11613:132::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11697:5:::1;11679:15;;:23;;;;;;;;;;;;;;;;;;11737:5;11714:29;;;;;;;;;;;;11613:132:::0;:::o;1819:203::-;1744:12;:10;:12::i;:::-;1734:22;;:6;;;;;;;;;;:22;;;1726:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1930:1:::1;1910:22;;:8;:22;;::::0;1902:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1986:28;2005:8;1986:18;:28::i;:::-;1819:203:::0;:::o;4155:31::-;;;;;;;;;;;;;:::o;515:98::-;568:7;595:10;588:17;;515:98;:::o;7679:335::-;7789:1;7772:19;;:5;:19;;;7764:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7870:1;7851:21;;:7;:21;;;7843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7952:6;7922:11;:18;7934:5;7922:18;;;;;;;;;;;;;;;:27;7941:7;7922:27;;;;;;;;;;;;;;;:36;;;;7990:7;7974:32;;7983:5;7974:32;;;7999:6;7974:32;;;;;;:::i;:::-;;;;;;;;7679:335;;;:::o;8020:2221::-;8124:1;8108:18;;:4;:18;;;8100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8201:1;8187:16;;:2;:16;;;8179:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8271:1;8262:6;:10;8254:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8329:14;8363:18;:24;8382:4;8363:24;;;;;;;;;;;;;;;;;;;;;;;;;8362:25;:52;;;;;8392:18;:22;8411:2;8392:22;;;;;;;;;;;;;;;;;;;;;;;;;8391:23;8362:52;8358:189;;;8439:11;;;;;;;;;;;8431:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8531:3;8518:8;;8508:6;:19;;;;:::i;:::-;:27;;;;:::i;:::-;8499:36;;8358:189;8572:18;:24;8591:4;8572:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8600:18;:22;8619:2;8600:22;;;;;;;;;;;;;;;;;;;;;;;;;8572:50;8568:93;;;8648:1;8639:10;;8568:93;8696:13;;;;;;;;;;;8688:21;;:4;:21;;;:55;;;;;8727:15;;;;;;;;;;;8713:30;;:2;:30;;;;8688:55;:82;;;;;8748:18;:22;8767:2;8748:22;;;;;;;;;;;;;;;;;;;;;;;;;8747:23;8688:82;8684:296;;;8806:11;;8796:6;:21;;8788:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8897:11;;8887:6;8871:13;8881:2;8871:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;8863:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8956:8;;:10;;;;;;;;;:::i;:::-;;;;;;8684:296;9015:13;;;;;;;;;;;9007:21;;:4;:21;;;;:50;;;;;9033:18;:24;9052:4;9033:24;;;;;;;;;;;;;;;;;;;;;;;;;9032:25;9007:50;:77;;;;;9062:18;:22;9081:2;9062:22;;;;;;;;;;;;;;;;;;;;;;;;;9061:23;9007:77;9003:172;;;9120:11;;9110:6;:21;;9102:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9003:172;9207:13;;;;;;;;;;;9201:19;;:2;:19;;;:44;;;;;9240:4;9224:21;;:4;:21;;;;9201:44;:73;;;;;9250:18;:24;9269:4;9250:24;;;;;;;;;;;;;;;;;;;;;;;;;9249:25;9201:73;:100;;;;;9279:18;:22;9298:2;9279:22;;;;;;;;;;;;;;;;;;;;;;;;;9278:23;9201:100;9197:203;;;9358:3;9344:9;;9334:6;:20;;;;:::i;:::-;:28;;;;:::i;:::-;9325:37;;9197:203;9416:28;9447:24;9465:4;9447:9;:24::i;:::-;9416:55;;9491:6;;;;;;;;;;;9490:7;:32;;;;;9509:13;;;;;;;;;;;9501:21;;:4;:21;;;;9490:32;:51;;;;;9526:15;;;;;;;;;;;9490:51;:92;;;;;9568:14;;9545:20;:37;9490:92;:108;;;;;9597:1;9586:8;;:12;9490:108;9486:413;;;9620:72;9637:54;9641:6;9649:41;9653:20;9675:14;;9649:3;:41::i;:::-;9637:3;:54::i;:::-;9620:16;:72::i;:::-;9710:26;9739:21;9710:50;;9803:1;9782:18;:22;9779:105;;;9829:35;9842:21;9829:12;:35::i;:::-;9779:105;9600:299;9486:413;9945:6;9927:9;:15;9937:4;9927:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;9909:9;:15;9919:4;9909:15;;;;;;;;;;;;;;;:42;;;;10006:6;9996;:17;;;;:::i;:::-;9979:9;:13;9989:2;9979:13;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;9963:9;:13;9973:2;9963:13;;;;;;;;;;;;;;;:51;;;;10045:2;10030:37;;10039:4;10030:37;;;10059:6;10049;:17;;;;:::i;:::-;10030:37;;;;;;:::i;:::-;;;;;;;;10091:1;10082:6;:10;10079:155;;;10161:6;10133:9;:24;10151:4;10133:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;10106:9;:24;10124:4;10106:24;;;;;;;;;;;;;;;:62;;;;10209:4;10186:36;;10195:4;10186:36;;;10215:6;10186:36;;;;;;:::i;:::-;;;;;;;;10079:155;8089:2152;;8020:2221;;;:::o;2028:191::-;2102:16;2121:6;;;;;;;;;;;2102:25;;2147:8;2138:6;;:17;;;;;;;;;;;;;;;;;;2202:8;2171:40;;2192:8;2171:40;;;;;;;;;;;;2091:128;2028:191;:::o;6661:107::-;6718:7;6750:1;6746;:5;6745:15;;6759:1;6745:15;;;6755:1;6745:15;6738:22;;6661:107;;;;:::o;10250:551::-;4694:4;4685:6;;:13;;;;;;;;;;;;;;;;;;10350:1:::1;10336:11;:15;10328:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10396:21;10434:1;10420:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10396:40;;10465:4;10447;10452:1;10447:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10491:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10481:4;10486:1;10481:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10524:62;10541:4;10556:15;;;;;;;;;;;10574:11;10524:8;:62::i;:::-;10597:15;;;;;;;;;;;:66;;;10678:11;10704:1;10720:4;10747;10767:15;10597:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10317:484;4730:5:::0;4721:6;;:14;;;;;;;;;;;;;;;;;;10250:551;:::o;10811:477::-;10884:1;10875:6;:10;10867:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10939:28;11010:14;;10982:24;11000:4;10982:9;:24::i;:::-;:42;10978:176;;11080:1;11074;11064:6;:12;;;;:::i;:::-;:18;;;;:::i;:::-;11041:41;;10978:176;;;11140:1;11134;11124:6;:12;;;;:::i;:::-;:18;;;;:::i;:::-;11101:41;;10978:176;11164:17;;;;;;;;;;;:26;;:48;11191:20;11164:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11223:15;;;;;;;;;;;:24;;:57;11258:20;11248:6;:31;;;;:::i;:::-;11223:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10857:431;10811:477;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3926:118;;:::o;4050:222::-;4143:4;4181:2;4170:9;4166:18;4158:26;;4194:71;4262:1;4251:9;4247:17;4238:6;4194:71;:::i;:::-;4050:222;;;;:::o;4278:619::-;4355:6;4363;4371;4420:2;4408:9;4399:7;4395:23;4391:32;4388:119;;;4426:79;;:::i;:::-;4388:119;4546:1;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4517:117;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4278:619;;;;;:::o;4903:86::-;4938:7;4978:4;4971:5;4967:16;4956:27;;4903:86;;;:::o;4995:112::-;5078:22;5094:5;5078:22;:::i;:::-;5073:3;5066:35;4995:112;;:::o;5113:214::-;5202:4;5240:2;5229:9;5225:18;5217:26;;5253:67;5317:1;5306:9;5302:17;5293:6;5253:67;:::i;:::-;5113:214;;;;:::o;5333:104::-;5378:7;5407:24;5425:5;5407:24;:::i;:::-;5396:35;;5333:104;;;:::o;5443:138::-;5524:32;5550:5;5524:32;:::i;:::-;5517:5;5514:43;5504:71;;5571:1;5568;5561:12;5504:71;5443:138;:::o;5587:155::-;5641:5;5679:6;5666:20;5657:29;;5695:41;5730:5;5695:41;:::i;:::-;5587:155;;;;:::o;5748:345::-;5815:6;5864:2;5852:9;5843:7;5839:23;5835:32;5832:119;;;5870:79;;:::i;:::-;5832:119;5990:1;6015:61;6068:7;6059:6;6048:9;6044:22;6015:61;:::i;:::-;6005:71;;5961:125;5748:345;;;;:::o;6099:329::-;6158:6;6207:2;6195:9;6186:7;6182:23;6178:32;6175:119;;;6213:79;;:::i;:::-;6175:119;6333:1;6358:53;6403:7;6394:6;6383:9;6379:22;6358:53;:::i;:::-;6348:63;;6304:117;6099:329;;;;:::o;6434:118::-;6521:24;6539:5;6521:24;:::i;:::-;6516:3;6509:37;6434:118;;:::o;6558:222::-;6651:4;6689:2;6678:9;6674:18;6666:26;;6702:71;6770:1;6759:9;6755:17;6746:6;6702:71;:::i;:::-;6558:222;;;;:::o;6786:474::-;6854:6;6862;6911:2;6899:9;6890:7;6886:23;6882:32;6879:119;;;6917:79;;:::i;:::-;6879:119;7037:1;7062:53;7107:7;7098:6;7087:9;7083:22;7062:53;:::i;:::-;7052:63;;7008:117;7164:2;7190:53;7235:7;7226:6;7215:9;7211:22;7190:53;:::i;:::-;7180:63;;7135:118;6786:474;;;;;:::o;7266:116::-;7336:21;7351:5;7336:21;:::i;:::-;7329:5;7326:32;7316:60;;7372:1;7369;7362:12;7316:60;7266:116;:::o;7388:133::-;7431:5;7469:6;7456:20;7447:29;;7485:30;7509:5;7485:30;:::i;:::-;7388:133;;;;:::o;7527:323::-;7583:6;7632:2;7620:9;7611:7;7607:23;7603:32;7600:119;;;7638:79;;:::i;:::-;7600:119;7758:1;7783:50;7825:7;7816:6;7805:9;7801:22;7783:50;:::i;:::-;7773:60;;7729:114;7527:323;;;;:::o;7856:182::-;7996:34;7992:1;7984:6;7980:14;7973:58;7856:182;:::o;8044:366::-;8186:3;8207:67;8271:2;8266:3;8207:67;:::i;:::-;8200:74;;8283:93;8372:3;8283:93;:::i;:::-;8401:2;8396:3;8392:12;8385:19;;8044:366;;;:::o;8416:419::-;8582:4;8620:2;8609:9;8605:18;8597:26;;8669:9;8663:4;8659:20;8655:1;8644:9;8640:17;8633:47;8697:131;8823:4;8697:131;:::i;:::-;8689:139;;8416:419;;;:::o;8841:175::-;8981:27;8977:1;8969:6;8965:14;8958:51;8841:175;:::o;9022:366::-;9164:3;9185:67;9249:2;9244:3;9185:67;:::i;:::-;9178:74;;9261:93;9350:3;9261:93;:::i;:::-;9379:2;9374:3;9370:12;9363:19;;9022:366;;;:::o;9394:419::-;9560:4;9598:2;9587:9;9583:18;9575:26;;9647:9;9641:4;9637:20;9633:1;9622:9;9618:17;9611:47;9675:131;9801:4;9675:131;:::i;:::-;9667:139;;9394:419;;;:::o;9819:180::-;9867:77;9864:1;9857:88;9964:4;9961:1;9954:15;9988:4;9985:1;9978:15;10005:102;10047:8;10094:5;10091:1;10087:13;10066:34;;10005:102;;;:::o;10113:848::-;10174:5;10181:4;10205:6;10196:15;;10229:5;10220:14;;10243:712;10264:1;10254:8;10251:15;10243:712;;;10359:4;10354:3;10350:14;10344:4;10341:24;10338:50;;;10368:18;;:::i;:::-;10338:50;10418:1;10408:8;10404:16;10401:451;;;10833:4;10826:5;10822:16;10813:25;;10401:451;10883:4;10877;10873:15;10865:23;;10913:32;10936:8;10913:32;:::i;:::-;10901:44;;10243:712;;;10113:848;;;;;;;:::o;10967:1073::-;11021:5;11212:8;11202:40;;11233:1;11224:10;;11235:5;;11202:40;11261:4;11251:36;;11278:1;11269:10;;11280:5;;11251:36;11347:4;11395:1;11390:27;;;;11431:1;11426:191;;;;11340:277;;11390:27;11408:1;11399:10;;11410:5;;;11426:191;11471:3;11461:8;11458:17;11455:43;;;11478:18;;:::i;:::-;11455:43;11527:8;11524:1;11520:16;11511:25;;11562:3;11555:5;11552:14;11549:40;;;11569:18;;:::i;:::-;11549:40;11602:5;;;11340:277;;11726:2;11716:8;11713:16;11707:3;11701:4;11698:13;11694:36;11676:2;11666:8;11663:16;11658:2;11652:4;11649:12;11645:35;11629:111;11626:246;;;11782:8;11776:4;11772:19;11763:28;;11817:3;11810:5;11807:14;11804:40;;;11824:18;;:::i;:::-;11804:40;11857:5;;11626:246;11897:42;11935:3;11925:8;11919:4;11916:1;11897:42;:::i;:::-;11882:57;;;;11971:4;11966:3;11962:14;11955:5;11952:25;11949:51;;;11980:18;;:::i;:::-;11949:51;12029:4;12022:5;12018:16;12009:25;;10967:1073;;;;;;:::o;12046:281::-;12104:5;12128:23;12146:4;12128:23;:::i;:::-;12120:31;;12172:25;12188:8;12172:25;:::i;:::-;12160:37;;12216:104;12253:66;12243:8;12237:4;12216:104;:::i;:::-;12207:113;;12046:281;;;;:::o;12333:410::-;12373:7;12396:20;12414:1;12396:20;:::i;:::-;12391:25;;12430:20;12448:1;12430:20;:::i;:::-;12425:25;;12485:1;12482;12478:9;12507:30;12525:11;12507:30;:::i;:::-;12496:41;;12686:1;12677:7;12673:15;12670:1;12667:22;12647:1;12640:9;12620:83;12597:139;;12716:18;;:::i;:::-;12597:139;12381:362;12333:410;;;;:::o;12749:227::-;12889:34;12885:1;12877:6;12873:14;12866:58;12958:10;12953:2;12945:6;12941:15;12934:35;12749:227;:::o;12982:366::-;13124:3;13145:67;13209:2;13204:3;13145:67;:::i;:::-;13138:74;;13221:93;13310:3;13221:93;:::i;:::-;13339:2;13334:3;13330:12;13323:19;;12982:366;;;:::o;13354:419::-;13520:4;13558:2;13547:9;13543:18;13535:26;;13607:9;13601:4;13597:20;13593:1;13582:9;13578:17;13571:47;13635:131;13761:4;13635:131;:::i;:::-;13627:139;;13354:419;;;:::o;13779:194::-;13819:4;13839:20;13857:1;13839:20;:::i;:::-;13834:25;;13873:20;13891:1;13873:20;:::i;:::-;13868:25;;13917:1;13914;13910:9;13902:17;;13941:1;13935:4;13932:11;13929:37;;;13946:18;;:::i;:::-;13929:37;13779:194;;;;:::o;13979:181::-;14119:33;14115:1;14107:6;14103:14;14096:57;13979:181;:::o;14166:366::-;14308:3;14329:67;14393:2;14388:3;14329:67;:::i;:::-;14322:74;;14405:93;14494:3;14405:93;:::i;:::-;14523:2;14518:3;14514:12;14507:19;;14166:366;;;:::o;14538:419::-;14704:4;14742:2;14731:9;14727:18;14719:26;;14791:9;14785:4;14781:20;14777:1;14766:9;14762:17;14755:47;14819:131;14945:4;14819:131;:::i;:::-;14811:139;;14538:419;;;:::o;14963:222::-;15103:34;15099:1;15091:6;15087:14;15080:58;15172:5;15167:2;15159:6;15155:15;15148:30;14963:222;:::o;15191:366::-;15333:3;15354:67;15418:2;15413:3;15354:67;:::i;:::-;15347:74;;15430:93;15519:3;15430:93;:::i;:::-;15548:2;15543:3;15539:12;15532:19;;15191:366;;;:::o;15563:419::-;15729:4;15767:2;15756:9;15752:18;15744:26;;15816:9;15810:4;15806:20;15802:1;15791:9;15787:17;15780:47;15844:131;15970:4;15844:131;:::i;:::-;15836:139;;15563:419;;;:::o;15988:241::-;16128:34;16124:1;16116:6;16112:14;16105:58;16197:24;16192:2;16184:6;16180:15;16173:49;15988:241;:::o;16235:366::-;16377:3;16398:67;16462:2;16457:3;16398:67;:::i;:::-;16391:74;;16474:93;16563:3;16474:93;:::i;:::-;16592:2;16587:3;16583:12;16576:19;;16235:366;;;:::o;16607:419::-;16773:4;16811:2;16800:9;16796:18;16788:26;;16860:9;16854:4;16850:20;16846:1;16835:9;16831:17;16824:47;16888:131;17014:4;16888:131;:::i;:::-;16880:139;;16607:419;;;:::o;17032:221::-;17172:34;17168:1;17160:6;17156:14;17149:58;17241:4;17236:2;17228:6;17224:15;17217:29;17032:221;:::o;17259:366::-;17401:3;17422:67;17486:2;17481:3;17422:67;:::i;:::-;17415:74;;17498:93;17587:3;17498:93;:::i;:::-;17616:2;17611:3;17607:12;17600:19;;17259:366;;;:::o;17631:419::-;17797:4;17835:2;17824:9;17820:18;17812:26;;17884:9;17878:4;17874:20;17870:1;17859:9;17855:17;17848:47;17912:131;18038:4;17912:131;:::i;:::-;17904:139;;17631:419;;;:::o;18056:143::-;18113:5;18144:6;18138:13;18129:22;;18160:33;18187:5;18160:33;:::i;:::-;18056:143;;;;:::o;18205:351::-;18275:6;18324:2;18312:9;18303:7;18299:23;18295:32;18292:119;;;18330:79;;:::i;:::-;18292:119;18450:1;18475:64;18531:7;18522:6;18511:9;18507:22;18475:64;:::i;:::-;18465:74;;18421:128;18205:351;;;;:::o;18562:169::-;18702:21;18698:1;18690:6;18686:14;18679:45;18562:169;:::o;18737:366::-;18879:3;18900:67;18964:2;18959:3;18900:67;:::i;:::-;18893:74;;18976:93;19065:3;18976:93;:::i;:::-;19094:2;19089:3;19085:12;19078:19;;18737:366;;;:::o;19109:419::-;19275:4;19313:2;19302:9;19298:18;19290:26;;19362:9;19356:4;19352:20;19348:1;19337:9;19333:17;19326:47;19390:131;19516:4;19390:131;:::i;:::-;19382:139;;19109:419;;;:::o;19534:60::-;19562:3;19583:5;19576:12;;19534:60;;;:::o;19600:142::-;19650:9;19683:53;19701:34;19710:24;19728:5;19710:24;:::i;:::-;19701:34;:::i;:::-;19683:53;:::i;:::-;19670:66;;19600:142;;;:::o;19748:126::-;19798:9;19831:37;19862:5;19831:37;:::i;:::-;19818:50;;19748:126;;;:::o;19880:134::-;19938:9;19971:37;20002:5;19971:37;:::i;:::-;19958:50;;19880:134;;;:::o;20020:147::-;20115:45;20154:5;20115:45;:::i;:::-;20110:3;20103:58;20020:147;;:::o;20173:348::-;20302:4;20340:2;20329:9;20325:18;20317:26;;20353:79;20429:1;20418:9;20414:17;20405:6;20353:79;:::i;:::-;20442:72;20510:2;20499:9;20495:18;20486:6;20442:72;:::i;:::-;20173:348;;;;;:::o;20527:137::-;20581:5;20612:6;20606:13;20597:22;;20628:30;20652:5;20628:30;:::i;:::-;20527:137;;;;:::o;20670:345::-;20737:6;20786:2;20774:9;20765:7;20761:23;20757:32;20754:119;;;20792:79;;:::i;:::-;20754:119;20912:1;20937:61;20990:7;20981:6;20970:9;20966:22;20937:61;:::i;:::-;20927:71;;20883:125;20670:345;;;;:::o;21021:173::-;21161:25;21157:1;21149:6;21145:14;21138:49;21021:173;:::o;21200:366::-;21342:3;21363:67;21427:2;21422:3;21363:67;:::i;:::-;21356:74;;21439:93;21528:3;21439:93;:::i;:::-;21557:2;21552:3;21548:12;21541:19;;21200:366;;;:::o;21572:419::-;21738:4;21776:2;21765:9;21761:18;21753:26;;21825:9;21819:4;21815:20;21811:1;21800:9;21796:17;21789:47;21853:131;21979:4;21853:131;:::i;:::-;21845:139;;21572:419;;;:::o;21997:177::-;22137:29;22133:1;22125:6;22121:14;22114:53;21997:177;:::o;22180:366::-;22322:3;22343:67;22407:2;22402:3;22343:67;:::i;:::-;22336:74;;22419:93;22508:3;22419:93;:::i;:::-;22537:2;22532:3;22528:12;22521:19;;22180:366;;;:::o;22552:419::-;22718:4;22756:2;22745:9;22741:18;22733:26;;22805:9;22799:4;22795:20;22791:1;22780:9;22776:17;22769:47;22833:131;22959:4;22833:131;:::i;:::-;22825:139;;22552:419;;;:::o;22977:177::-;23117:29;23113:1;23105:6;23101:14;23094:53;22977:177;:::o;23160:366::-;23302:3;23323:67;23387:2;23382:3;23323:67;:::i;:::-;23316:74;;23399:93;23488:3;23399:93;:::i;:::-;23517:2;23512:3;23508:12;23501:19;;23160:366;;;:::o;23532:419::-;23698:4;23736:2;23725:9;23721:18;23713:26;;23785:9;23779:4;23775:20;23771:1;23760:9;23756:17;23749:47;23813:131;23939:4;23813:131;:::i;:::-;23805:139;;23532:419;;;:::o;23957:225::-;24097:34;24093:1;24085:6;24081:14;24074:58;24166:8;24161:2;24153:6;24149:15;24142:33;23957:225;:::o;24188:366::-;24330:3;24351:67;24415:2;24410:3;24351:67;:::i;:::-;24344:74;;24427:93;24516:3;24427:93;:::i;:::-;24545:2;24540:3;24536:12;24529:19;;24188:366;;;:::o;24560:419::-;24726:4;24764:2;24753:9;24749:18;24741:26;;24813:9;24807:4;24803:20;24799:1;24788:9;24784:17;24777:47;24841:131;24967:4;24841:131;:::i;:::-;24833:139;;24560:419;;;:::o;24985:223::-;25125:34;25121:1;25113:6;25109:14;25102:58;25194:6;25189:2;25181:6;25177:15;25170:31;24985:223;:::o;25214:366::-;25356:3;25377:67;25441:2;25436:3;25377:67;:::i;:::-;25370:74;;25453:93;25542:3;25453:93;:::i;:::-;25571:2;25566:3;25562:12;25555:19;;25214:366;;;:::o;25586:419::-;25752:4;25790:2;25779:9;25775:18;25767:26;;25839:9;25833:4;25829:20;25825:1;25814:9;25810:17;25803:47;25867:131;25993:4;25867:131;:::i;:::-;25859:139;;25586:419;;;:::o;26011:221::-;26151:34;26147:1;26139:6;26135:14;26128:58;26220:4;26215:2;26207:6;26203:15;26196:29;26011:221;:::o;26238:366::-;26380:3;26401:67;26465:2;26460:3;26401:67;:::i;:::-;26394:74;;26477:93;26566:3;26477:93;:::i;:::-;26595:2;26590:3;26586:12;26579:19;;26238:366;;;:::o;26610:419::-;26776:4;26814:2;26803:9;26799:18;26791:26;;26863:9;26857:4;26853:20;26849:1;26838:9;26834:17;26827:47;26891:131;27017:4;26891:131;:::i;:::-;26883:139;;26610:419;;;:::o;27035:224::-;27175:34;27171:1;27163:6;27159:14;27152:58;27244:7;27239:2;27231:6;27227:15;27220:32;27035:224;:::o;27265:366::-;27407:3;27428:67;27492:2;27487:3;27428:67;:::i;:::-;27421:74;;27504:93;27593:3;27504:93;:::i;:::-;27622:2;27617:3;27613:12;27606:19;;27265:366;;;:::o;27637:419::-;27803:4;27841:2;27830:9;27826:18;27818:26;;27890:9;27884:4;27880:20;27876:1;27865:9;27861:17;27854:47;27918:131;28044:4;27918:131;:::i;:::-;27910:139;;27637:419;;;:::o;28062:222::-;28202:34;28198:1;28190:6;28186:14;28179:58;28271:5;28266:2;28258:6;28254:15;28247:30;28062:222;:::o;28290:366::-;28432:3;28453:67;28517:2;28512:3;28453:67;:::i;:::-;28446:74;;28529:93;28618:3;28529:93;:::i;:::-;28647:2;28642:3;28638:12;28631:19;;28290:366;;;:::o;28662:419::-;28828:4;28866:2;28855:9;28851:18;28843:26;;28915:9;28909:4;28905:20;28901:1;28890:9;28886:17;28879:47;28943:131;29069:4;28943:131;:::i;:::-;28935:139;;28662:419;;;:::o;29087:228::-;29227:34;29223:1;29215:6;29211:14;29204:58;29296:11;29291:2;29283:6;29279:15;29272:36;29087:228;:::o;29321:366::-;29463:3;29484:67;29548:2;29543:3;29484:67;:::i;:::-;29477:74;;29560:93;29649:3;29560:93;:::i;:::-;29678:2;29673:3;29669:12;29662:19;;29321:366;;;:::o;29693:419::-;29859:4;29897:2;29886:9;29882:18;29874:26;;29946:9;29940:4;29936:20;29932:1;29921:9;29917:17;29910:47;29974:131;30100:4;29974:131;:::i;:::-;29966:139;;29693:419;;;:::o;30118:169::-;30258:21;30254:1;30246:6;30242:14;30235:45;30118:169;:::o;30293:366::-;30435:3;30456:67;30520:2;30515:3;30456:67;:::i;:::-;30449:74;;30532:93;30621:3;30532:93;:::i;:::-;30650:2;30645:3;30641:12;30634:19;;30293:366;;;:::o;30665:419::-;30831:4;30869:2;30858:9;30854:18;30846:26;;30918:9;30912:4;30908:20;30904:1;30893:9;30889:17;30882:47;30946:131;31072:4;30946:131;:::i;:::-;30938:139;;30665:419;;;:::o;31090:180::-;31138:77;31135:1;31128:88;31235:4;31232:1;31225:15;31259:4;31256:1;31249:15;31276:185;31316:1;31333:20;31351:1;31333:20;:::i;:::-;31328:25;;31367:20;31385:1;31367:20;:::i;:::-;31362:25;;31406:1;31396:35;;31411:18;;:::i;:::-;31396:35;31453:1;31450;31446:9;31441:14;;31276:185;;;;:::o;31467:175::-;31607:27;31603:1;31595:6;31591:14;31584:51;31467:175;:::o;31648:366::-;31790:3;31811:67;31875:2;31870:3;31811:67;:::i;:::-;31804:74;;31887:93;31976:3;31887:93;:::i;:::-;32005:2;32000:3;31996:12;31989:19;;31648:366;;;:::o;32020:419::-;32186:4;32224:2;32213:9;32209:18;32201:26;;32273:9;32267:4;32263:20;32259:1;32248:9;32244:17;32237:47;32301:131;32427:4;32301:131;:::i;:::-;32293:139;;32020:419;;;:::o;32445:191::-;32485:3;32504:20;32522:1;32504:20;:::i;:::-;32499:25;;32538:20;32556:1;32538:20;:::i;:::-;32533:25;;32581:1;32578;32574:9;32567:16;;32602:3;32599:1;32596:10;32593:36;;;32609:18;;:::i;:::-;32593:36;32445:191;;;;:::o;32642:176::-;32782:28;32778:1;32770:6;32766:14;32759:52;32642:176;:::o;32824:366::-;32966:3;32987:67;33051:2;33046:3;32987:67;:::i;:::-;32980:74;;33063:93;33152:3;33063:93;:::i;:::-;33181:2;33176:3;33172:12;33165:19;;32824:366;;;:::o;33196:419::-;33362:4;33400:2;33389:9;33385:18;33377:26;;33449:9;33443:4;33439:20;33435:1;33424:9;33420:17;33413:47;33477:131;33603:4;33477:131;:::i;:::-;33469:139;;33196:419;;;:::o;33621:233::-;33660:3;33683:24;33701:5;33683:24;:::i;:::-;33674:33;;33729:66;33722:5;33719:77;33716:103;;33799:18;;:::i;:::-;33716:103;33846:1;33839:5;33835:13;33828:20;;33621:233;;;:::o;33860:179::-;34000:31;33996:1;33988:6;33984:14;33977:55;33860:179;:::o;34045:366::-;34187:3;34208:67;34272:2;34267:3;34208:67;:::i;:::-;34201:74;;34284:93;34373:3;34284:93;:::i;:::-;34402:2;34397:3;34393:12;34386:19;;34045:366;;;:::o;34417:419::-;34583:4;34621:2;34610:9;34606:18;34598:26;;34670:9;34664:4;34660:20;34656:1;34645:9;34641:17;34634:47;34698:131;34824:4;34698:131;:::i;:::-;34690:139;;34417:419;;;:::o;34842:180::-;34890:77;34887:1;34880:88;34987:4;34984:1;34977:15;35011:4;35008:1;35001:15;35028:180;35076:77;35073:1;35066:88;35173:4;35170:1;35163:15;35197:4;35194:1;35187:15;35214:143;35271:5;35302:6;35296:13;35287:22;;35318:33;35345:5;35318:33;:::i;:::-;35214:143;;;;:::o;35363:351::-;35433:6;35482:2;35470:9;35461:7;35457:23;35453:32;35450:119;;;35488:79;;:::i;:::-;35450:119;35608:1;35633:64;35689:7;35680:6;35669:9;35665:22;35633:64;:::i;:::-;35623:74;;35579:128;35363:351;;;;:::o;35720:85::-;35765:7;35794:5;35783:16;;35720:85;;;:::o;35811:158::-;35869:9;35902:61;35920:42;35929:32;35955:5;35929:32;:::i;:::-;35920:42;:::i;:::-;35902:61;:::i;:::-;35889:74;;35811:158;;;:::o;35975:147::-;36070:45;36109:5;36070:45;:::i;:::-;36065:3;36058:58;35975:147;;:::o;36128:114::-;36195:6;36229:5;36223:12;36213:22;;36128:114;;;:::o;36248:184::-;36347:11;36381:6;36376:3;36369:19;36421:4;36416:3;36412:14;36397:29;;36248:184;;;;:::o;36438:132::-;36505:4;36528:3;36520:11;;36558:4;36553:3;36549:14;36541:22;;36438:132;;;:::o;36576:108::-;36653:24;36671:5;36653:24;:::i;:::-;36648:3;36641:37;36576:108;;:::o;36690:179::-;36759:10;36780:46;36822:3;36814:6;36780:46;:::i;:::-;36858:4;36853:3;36849:14;36835:28;;36690:179;;;;:::o;36875:113::-;36945:4;36977;36972:3;36968:14;36960:22;;36875:113;;;:::o;37024:732::-;37143:3;37172:54;37220:5;37172:54;:::i;:::-;37242:86;37321:6;37316:3;37242:86;:::i;:::-;37235:93;;37352:56;37402:5;37352:56;:::i;:::-;37431:7;37462:1;37447:284;37472:6;37469:1;37466:13;37447:284;;;37548:6;37542:13;37575:63;37634:3;37619:13;37575:63;:::i;:::-;37568:70;;37661:60;37714:6;37661:60;:::i;:::-;37651:70;;37507:224;37494:1;37491;37487:9;37482:14;;37447:284;;;37451:14;37747:3;37740:10;;37148:608;;;37024:732;;;;:::o;37762:831::-;38025:4;38063:3;38052:9;38048:19;38040:27;;38077:71;38145:1;38134:9;38130:17;38121:6;38077:71;:::i;:::-;38158:80;38234:2;38223:9;38219:18;38210:6;38158:80;:::i;:::-;38285:9;38279:4;38275:20;38270:2;38259:9;38255:18;38248:48;38313:108;38416:4;38407:6;38313:108;:::i;:::-;38305:116;;38431:72;38499:2;38488:9;38484:18;38475:6;38431:72;:::i;:::-;38513:73;38581:3;38570:9;38566:19;38557:6;38513:73;:::i;:::-;37762:831;;;;;;;;:::o

Swarm Source

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