ETH Price: $3,430.67 (-1.53%)
Gas: 5.13 Gwei

Token

Hogwarts Inu (HINU)
 

Overview

Max Total Supply

1,000,000,000,000,000 HINU

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
17,587,954,235,653.274593485 HINU

Value
$0.00
0x073b03d7c15cbddcb2cc5a2839ea5b086f6a421a
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:
HogwartsInu

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-10
*/

/**
 _   _ _____ _____ _    _  ___ ______ _____ _____   _____ _   _ _   _ 
| | | |  _  |  __ \ |  | |/ _ \| ___ \_   _/  ___| |_   _| \ | | | | |
| |_| | | | | |  \/ |  | / /_\ \ |_/ / | | \ `--.    | | |  \| | | | |
|  _  | | | | | __| |/\| |  _  |    /  | |  `--. \   | | | . ` | | | |
| | | \ \_/ / |_\ \  /\  / | | | |\ \  | | /\__/ /  _| |_| |\  | |_| |
\_| |_/\___/ \____/\/  \/\_| |_|_| \_| \_/ \____/   \___/\_| \_/\___/ 
 
Reveal your magical side *:・゚✧*:・゚✧ 
                                                                      
Website https://www.HogwartsInu.com
Telegram https://t.me/HogwartsinuPortal

*/ 

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.11;

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

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

abstract 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 virtual returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
	
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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 ERC20 is Context, IERC20 {
    using SafeMath for uint256;

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

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 9;
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
	
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
	
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
	
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }
	
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }
	
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }
	
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }
	
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }
	
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }
	
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
	
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }
	
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
	
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }
	
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }
	
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }
	
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }
	
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

library SafeMathInt {
  function mul(int256 a, int256 b) internal pure returns (int256) {
    require(!(a == - 2**255 && b == -1) && !(b == - 2**255 && a == -1));
    int256 c = a * b;
    require((b == 0) || (c / b == a));
    return c;
  }

  function div(int256 a, int256 b) internal pure returns (int256) {
    require(!(a == - 2**255 && b == -1) && (b > 0));
    return a / b;
  }

  function sub(int256 a, int256 b) internal pure returns (int256) {
    require((b >= 0 && a - b <= a) || (b < 0 && a - b > a));
    return a - b;
  }

  function add(int256 a, int256 b) internal pure returns (int256) {
    int256 c = a + b;
    require((b >= 0 && c >= a) || (b < 0 && c < a));
    return c;
  }

  function toUint256Safe(int256 a) internal pure returns (uint256) {
    require(a >= 0);
    return uint256(a);
  }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

contract HogwartsInu is ERC20, Ownable {
    using SafeMath for uint256;
	
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
	
    uint256[] public DevelopmentFee;
	uint256[] public marketingFee;
    uint256[] public liquidityFee;
		
	uint256 private DevelopmentFeeTotal;
	uint256 private marketingFeeTotal;
	uint256 private liquidityFeeTotal;
	
    uint256 public swapTokensAtAmount = 100000000000 * (10**9);
	uint256 public maxTxAmount = 1000000000000 * (10**9);
	uint256 public maxSellPerDay = 1000000000000 * (10**9);
	
	address public DevelopmentFeeAddress = 0xb5AF252e26209D14f40d808cffA4d8Ce89767081;
	address public marketingFeeAddress = 0x89853e6e1B627DA64620a08d1DFD4B0356ED4aE8;
	
	bool private swapping;
	bool public swapEnable = true;
	
    mapping (address => bool) public isExcludedFromFees;
	mapping (address => bool) public isExcludedFromMaxTxAmount;
    mapping (address => bool) public automatedMarketMakerPairs;
	mapping (address => bool) public isExcludedFromDailySaleLimit;
	mapping (uint256 => mapping(address => uint256)) public dailyTransfers;
	mapping (address => bool) public isBlackListed;
	
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
	event AddedBlackList(address _address);
    event RemovedBlackList(address _address);
	
    constructor() ERC20("Hogwarts Inu", "HINU") {
    	IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;
		
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);
		
        excludeFromFees(address(this), true);
		excludeFromFees(owner(), true);
		
		isExcludedFromMaxTxAmount[owner()] = true;
		
		isExcludedFromDailySaleLimit[address(this)] = true;
        isExcludedFromDailySaleLimit[owner()] = true;
		
		DevelopmentFee.push(200);
		DevelopmentFee.push(200);
		DevelopmentFee.push(200);
		
		liquidityFee.push(200);
		liquidityFee.push(200);
		liquidityFee.push(200);
		
		marketingFee.push(200);
		marketingFee.push(200);
		marketingFee.push(200);
		
        _mint(owner(), 1000000000000000 * (10**9));
    }
	
    receive() external payable {
  	}
	
	function setSwapTokensAtAmount(uint256 amount) external onlyOwner {
  	     require(amount <= totalSupply(), "Amount cannot be over the total supply.");
		 swapTokensAtAmount = amount;
  	}
	
	function setMaxTxAmount(uint256 amount) external onlyOwner() {
	     require(amount <= totalSupply() && amount >= 1000000 * (10**9), "amount is not correct.");
         maxTxAmount = amount;
    }
	
	function setMaxSellPerDay(uint256 amount) external onlyOwner() {
	     require(amount <= totalSupply() && amount >= 1000000 * (10**9), "amount is not correct.");
         maxSellPerDay = amount;
    }
	
	function setSwapEnable(bool _enabled) public onlyOwner {
        swapEnable = _enabled;
    }
	
	function setDevelopmentFee(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner {
	    require(liquidityFee[0].add(marketingFee[0]).add(buy)  <= 2000 , "Max fee limit reached for 'BUY'");
		require(liquidityFee[1].add(marketingFee[1]).add(sell) <= 2000 , "Max fee limit reached for 'SELL'");
		require(liquidityFee[2].add(marketingFee[2]).add(p2p)  <= 2000 , "Max fee limit reached for 'P2P'");
		
		DevelopmentFee[0] = buy;
		DevelopmentFee[1] = sell;
		DevelopmentFee[2] = p2p;
	}
	
	function setMarketingFee(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner {
	    require(liquidityFee[0].add(DevelopmentFee[0]).add(buy)  <= 2000 , "Max fee limit reached for 'BUY'");
		require(liquidityFee[1].add(DevelopmentFee[1]).add(sell) <= 2000 , "Max fee limit reached for 'SELL'");
		require(liquidityFee[2].add(DevelopmentFee[2]).add(p2p)  <= 2000 , "Max fee limit reached for 'P2P'");
		
		marketingFee[0] = buy;
		marketingFee[1] = sell;
		marketingFee[2] = p2p;
	}
	
	function setLiquidityFee(uint256 buy, uint256 sell, uint256 p2p) external onlyOwner {
	    require(DevelopmentFee[0].add(marketingFee[0]).add(buy)  <= 2000 , "Max fee limit reached for 'BUY'");
		require(DevelopmentFee[1].add(marketingFee[1]).add(sell) <= 2000 , "Max fee limit reached for 'SELL'");
		require(DevelopmentFee[2].add(marketingFee[2]).add(p2p)  <= 2000 , "Max fee limit reached for 'P2P'");
		
		liquidityFee[0] = buy;
		liquidityFee[1] = sell;
		liquidityFee[2] = p2p;
	}
	
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
	
	function excludeFromMaxTxAmount(address account, bool excluded) public onlyOwner {
		require(isExcludedFromMaxTxAmount[account] != excluded, "APAY: Account is already the value of 'excluded'");
		isExcludedFromMaxTxAmount[account] = excluded;
	}
	
	function excludeFromDailySaleLimit(address account, bool excluded) public onlyOwner {
        require(isExcludedFromDailySaleLimit[account] != excluded, "Daily sale limit exclusion is already the value of 'excluded'");
        isExcludedFromDailySaleLimit[account] = excluded;
    }
	
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The Uniswap pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
	
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
	
	function setDevelopmentFeeAddress(address payable newAddress) external onlyOwner() {
       require(newAddress != address(0), "zero-address not allowed");
	   DevelopmentFeeAddress = newAddress;
    }
	
	function setMarketingFeeAddress(address payable newAddress) external onlyOwner() {
       require(newAddress != address(0), "zero-address not allowed");
	   marketingFeeAddress = newAddress;
    }
	
	function addToBlackList (address _wallet) public onlyOwner {
        isBlackListed[_wallet] = true;
        emit AddedBlackList(_wallet);
    }
	
    function removeFromBlackList (address _wallet) public onlyOwner {
        isBlackListed[_wallet] = false;
        emit RemovedBlackList(_wallet);
    }
	
	function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
		require(!isBlackListed[from], "ERC20: transfer to is blacklisted");
		require(!isBlackListed[to], "ERC20: transfer from is blacklisted");
		
        if(!isExcludedFromMaxTxAmount[from]) 
		{
		   require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
		}
		
		if (!isExcludedFromDailySaleLimit[from] && !automatedMarketMakerPairs[from] && automatedMarketMakerPairs[to]) 
		{
		     require(dailyTransfers[getDay()][from].add(amount) <= maxSellPerDay, "This account has exceeded max daily sell limit");
			 dailyTransfers[getDay()][from] = dailyTransfers[getDay()][from].add(amount);
		}
		
		uint256 contractTokenBalance = balanceOf(address(this));
		bool canSwap = contractTokenBalance >= swapTokensAtAmount;
		
		if (!swapping && canSwap && swapEnable && automatedMarketMakerPairs[to]) {
			swapping = true;
			
			uint256 tokenToDevelopment = DevelopmentFeeTotal;
			uint256 tokenToMarketing   = marketingFeeTotal;
			uint256 tokenToLiquidity   = liquidityFeeTotal;
			uint256 liquidityHalf      = tokenToLiquidity.div(2);
			
			uint256 tokenToSwap = tokenToDevelopment.add(tokenToMarketing).add(liquidityHalf);
			
            uint256 initialBalance = address(this).balance;			
			swapTokensForETH(swapTokensAtAmount);
			uint256 newBalance = address(this).balance.sub(initialBalance);
			
			uint256 marketingPart    = newBalance.mul(tokenToMarketing).div(tokenToSwap);
			uint256 liquidityPart    = newBalance.mul(liquidityHalf).div(tokenToSwap);
			uint256 developmentPart  = newBalance.sub(marketingPart).sub(liquidityPart);
			
			if(marketingPart > 0) 
			{
			    payable(marketingFeeAddress).transfer(marketingPart);
			    marketingFeeTotal = marketingFeeTotal.sub(swapTokensAtAmount.mul(tokenToMarketing).div(tokenToSwap));
			}
			
			if(liquidityPart > 0) 
			{
			    addLiquidity(liquidityHalf, liquidityPart);
			    liquidityFeeTotal = liquidityFeeTotal.sub(swapTokensAtAmount.mul(tokenToLiquidity).div(tokenToSwap));
			}
			
			if(developmentPart > 0) 
			{
			    payable(DevelopmentFeeAddress).transfer(developmentPart);
			    DevelopmentFeeTotal = DevelopmentFeeTotal.sub(swapTokensAtAmount.mul(tokenToDevelopment).div(tokenToSwap));
			}
			
			swapping = false;
		}
		
        bool takeFee = !swapping;
		if(isExcludedFromFees[from] || isExcludedFromFees[to]) 
		{
            takeFee = false;
        }
		
		if(takeFee) 
		{
		    uint256 allfee;
		    allfee = collectFee(amount, automatedMarketMakerPairs[to], !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]);
			if(allfee > 0)
			{
			   super._transfer(from, address(this), allfee);
			   amount = amount.sub(allfee);
			}
		}
        super._transfer(from, to, amount);
    }
	
	function collectFee(uint256 amount, bool sell, bool p2p) private returns (uint256) {
        uint256 totalFee;
		
        uint256 _DevelopmentFee = amount.mul(p2p ? DevelopmentFee[2] : sell ? DevelopmentFee[1] : DevelopmentFee[0]).div(10000);
		         DevelopmentFeeTotal = DevelopmentFeeTotal.add(_DevelopmentFee);
		
		uint256 _marketingFee = amount.mul(p2p ? marketingFee[2] : sell ? marketingFee[1] : marketingFee[0]).div(10000);
		         marketingFeeTotal = marketingFeeTotal.add(_marketingFee);
		
		uint256 _liquidityFee = amount.mul(p2p ? liquidityFee[2] : sell ? liquidityFee[1] : liquidityFee[0]).div(10000);
		         liquidityFeeTotal = liquidityFeeTotal.add(_liquidityFee);
		
		totalFee = _DevelopmentFee.add(_marketingFee).add(_liquidityFee);
        return totalFee;
    }
	
	function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0,
            address(this),
            block.timestamp
        );
    }
	
	function swapTokensForETH(uint256 tokenAmount) private {
        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 transferTokens(address tokenAddress, address to, uint256 amount) public onlyOwner {
        IERC20(tokenAddress).transfer(to, amount);
    }
	
	function migrateETH(address payable recipient) public onlyOwner {
        recipient.transfer(address(this).balance);
    }
	
	function getDay() internal view returns(uint256){
        return block.timestamp.div(24 hours);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"AddedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"address","name":"_address","type":"address"}],"name":"RemovedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"DevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DevelopmentFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"addToBlackList","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"dailyTransfers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromDailySaleLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromDailySaleLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"migrateETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setDevelopmentFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"setDevelopmentFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"p2p","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"setMarketingFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellPerDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d63100000600e55683635c9adc5dea00000600f55683635c9adc5dea0000060105573b5af252e26209d14f40d808cffa4d8ce89767081601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507389853e6e1b627da64620a08d1dfd4b0356ed4ae8601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260156101000a81548160ff021916908315150217905550348015620000fd57600080fd5b506040518060400160405280600c81526020017f486f67776172747320496e7500000000000000000000000000000000000000008152506040518060400160405280600481526020017f48494e550000000000000000000000000000000000000000000000000000000081525081600390805190602001906200018292919062000cda565b5080600490805190602001906200019b92919062000cda565b506009600560006101000a81548160ff021916908360ff16021790555050506000620001cc6200078a60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000df4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000df4565b6040518363ffffffff1660e01b8152600401620003a592919062000e37565b6020604051808303816000875af1158015620003c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003eb919062000df4565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004828160016200079260201b60201c565b62000495306001620008c960201b60201c565b620004b7620004a962000a9960201b60201c565b6001620008c960201b60201c565b600160146000620004cd62000a9960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660006200058c62000a9960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600860c89080600181540180825580915050600190039060005260206000200160009091909190915055600860c89080600181540180825580915050600190039060005260206000200160009091909190915055600860c89080600181540180825580915050600190039060005260206000200160009091909190915055600a60c89080600181540180825580915050600190039060005260206000200160009091909190915055600a60c89080600181540180825580915050600190039060005260206000200160009091909190915055600a60c89080600181540180825580915050600190039060005260206000200160009091909190915055600960c89080600181540180825580915050600190039060005260206000200160009091909190915055600960c89080600181540180825580915050600190039060005260206000200160009091909190915055600960c89080600181540180825580915050600190039060005260206000200160009091909190915055620007826200076b62000a9960201b60201c565b69d3c21bcecceda100000062000ac360201b60201c565b50506200125e565b600033905090565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000828576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200081f9062000eeb565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620008d96200078a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008ff62000a9960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000958576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200094f9062000f5d565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415620009ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e59062000ff5565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a8d919062001034565b60405180910390a25050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2d90620010a1565b60405180910390fd5b62000b4a6000838362000c7260201b60201c565b62000b668160025462000c7760201b62002d031790919060201c565b60028190555062000bc4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c7760201b62002d031790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c669190620010de565b60405180910390a35050565b505050565b600080828462000c8891906200112a565b90508381101562000cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cc790620011d7565b60405180910390fd5b8091505092915050565b82805462000ce89062001228565b90600052602060002090601f01602090048101928262000d0c576000855562000d58565b82601f1062000d2757805160ff191683800117855562000d58565b8280016001018555821562000d58579182015b8281111562000d5757825182559160200191906001019062000d3a565b5b50905062000d67919062000d6b565b5090565b5b8082111562000d8657600081600090555060010162000d6c565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dbc8262000d8f565b9050919050565b62000dce8162000daf565b811462000dda57600080fd5b50565b60008151905062000dee8162000dc3565b92915050565b60006020828403121562000e0d5762000e0c62000d8a565b5b600062000e1d8482850162000ddd565b91505092915050565b62000e318162000daf565b82525050565b600060408201905062000e4e600083018562000e26565b62000e5d602083018462000e26565b9392505050565b600082825260208201905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600062000ed360388362000e64565b915062000ee08262000e75565b604082019050919050565b6000602082019050818103600083015262000f068162000ec4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f4560208362000e64565b915062000f528262000f0d565b602082019050919050565b6000602082019050818103600083015262000f788162000f36565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b600062000fdd602a8362000e64565b915062000fea8262000f7f565b604082019050919050565b60006020820190508181036000830152620010108162000fce565b9050919050565b60008115159050919050565b6200102e8162001017565b82525050565b60006020820190506200104b600083018462001023565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001089601f8362000e64565b9150620010968262001051565b602082019050919050565b60006020820190508181036000830152620010bc816200107a565b9050919050565b6000819050919050565b620010d881620010c3565b82525050565b6000602082019050620010f56000830184620010cd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200113782620010c3565b91506200114483620010c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200117c576200117b620010fb565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620011bf601b8362000e64565b9150620011cc8262001187565b602082019050919050565b60006020820190508181036000830152620011f281620011b0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200124157607f821691505b60208210811415620012585762001257620011f9565b5b50919050565b615cdb806200126e6000396000f3fe6080604052600436106102975760003560e01c80638c0b5e221161015a578063b62496f5116100c1578063e40ffe001161007a578063e40ffe0014610a91578063e47d606014610aba578063ea0a605f14610af7578063ec28438a14610b20578063f2fde38b14610b49578063fae5655f14610b725761029e565b8063b62496f51461095d578063c02466681461099a578063c3f3046c146109c3578063d3b64ecd146109ec578063dd62ed3e14610a29578063e2f4560514610a665761029e565b8063a457c2d711610113578063a457c2d71461082b578063a64b6e5f14610868578063a9059cbb14610891578063a918299c146108ce578063afa4f3b2146108f7578063b0555828146109205761029e565b80638c0b5e22146107075780638da5cb5b1461073257806395d89b411461075d57806398982ccf146107885780639a7a23d6146107c5578063a046bc78146107ee5761029e565b80634a49ac4c116101fe57806374da7cd8116101b757806374da7cd8146105e5578063769c2f571461060e5780637cb544fb146106395780637fd4623a1461066457806382fb7119146106a15780638a029a9a146106de5761029e565b80634a49ac4c146104d75780634fbee19314610500578063510911561461053d578063595cc84f1461056857806370a0823114610591578063715018a6146105ce5761029e565b80632692f427116102505780632692f427146103c9578063313ce567146103f2578063395093511461041d578063417c73a71461045a57806349a034891461048357806349bd5a5e146104ac5761029e565b8063053e39a3146102a357806306fdde03146102ce578063095ea7b3146102f95780631694505e1461033657806318160ddd1461036157806323b872dd1461038c5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b9b565b6040516102c59190614513565b60405180910390f35b3480156102da57600080fd5b506102e3610bc1565b6040516102f091906145c7565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190614650565b610c53565b60405161032d91906146ab565b60405180910390f35b34801561034257600080fd5b5061034b610c71565b6040516103589190614725565b60405180910390f35b34801561036d57600080fd5b50610376610c97565b604051610383919061474f565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae919061476a565b610ca1565b6040516103c091906146ab565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb91906147bd565b610d7a565b005b3480156103fe57600080fd5b50610407610e5d565b6040516104149190614806565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f9190614650565b610e74565b60405161045191906146ab565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190614821565b610f27565b005b34801561048f57600080fd5b506104aa60048036038101906104a5919061484e565b611035565b005b3480156104b857600080fd5b506104c1611317565b6040516104ce9190614513565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190614821565b61133d565b005b34801561050c57600080fd5b5061052760048036038101906105229190614821565b61144b565b60405161053491906146ab565b60405180910390f35b34801561054957600080fd5b5061055261146b565b60405161055f9190614513565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a91906148cd565b611491565b005b34801561059d57600080fd5b506105b860048036038101906105b39190614821565b6115fb565b6040516105c5919061474f565b60405180910390f35b3480156105da57600080fd5b506105e3611643565b005b3480156105f157600080fd5b5061060c6004803603810190610607919061494b565b611780565b005b34801561061a57600080fd5b50610623611846565b60405161063091906146ab565b60405180910390f35b34801561064557600080fd5b5061064e611859565b60405161065b919061474f565b60405180910390f35b34801561067057600080fd5b5061068b600480360381019061068691906147bd565b61185f565b604051610698919061474f565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c391906147bd565b611883565b6040516106d5919061474f565b60405180910390f35b3480156106ea57600080fd5b50610705600480360381019061070091906148cd565b6118a7565b005b34801561071357600080fd5b5061071c611a11565b604051610729919061474f565b60405180910390f35b34801561073e57600080fd5b50610747611a17565b6040516107549190614513565b60405180910390f35b34801561076957600080fd5b50610772611a41565b60405161077f91906145c7565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614978565b611ad3565b6040516107bc919061474f565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e791906148cd565b611af8565b005b3480156107fa57600080fd5b50610815600480360381019061081091906147bd565b611c13565b604051610822919061474f565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190614650565b611c37565b60405161085f91906146ab565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a919061476a565b611d04565b005b34801561089d57600080fd5b506108b860048036038101906108b39190614650565b611e04565b6040516108c591906146ab565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f0919061484e565b611e22565b005b34801561090357600080fd5b5061091e600480360381019061091991906147bd565b612104565b005b34801561092c57600080fd5b5061094760048036038101906109429190614821565b6121d4565b60405161095491906146ab565b60405180910390f35b34801561096957600080fd5b50610984600480360381019061097f9190614821565b6121f4565b60405161099191906146ab565b60405180910390f35b3480156109a657600080fd5b506109c160048036038101906109bc91906148cd565b612214565b005b3480156109cf57600080fd5b506109ea60048036038101906109e5919061494b565b6123cc565b005b3480156109f857600080fd5b50610a136004803603810190610a0e9190614821565b6124fc565b604051610a2091906146ab565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b91906149b8565b61251c565b604051610a5d919061474f565b60405180910390f35b348015610a7257600080fd5b50610a7b6125a3565b604051610a88919061474f565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab391906149f8565b6125a9565b005b348015610ac657600080fd5b50610ae16004803603810190610adc9190614821565b612642565b604051610aee91906146ab565b60405180910390f35b348015610b0357600080fd5b50610b1e6004803603810190610b19919061484e565b612662565b005b348015610b2c57600080fd5b50610b476004803603810190610b4291906147bd565b612944565b005b348015610b5557600080fd5b50610b706004803603810190610b6b9190614821565b612a27565b005b348015610b7e57600080fd5b50610b996004803603810190610b94919061494b565b612bd3565b005b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610bd090614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc90614a54565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b5050505050905090565b6000610c67610c60612d61565b8484612d69565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610cae848484612f34565b610d6f84610cba612d61565b610d6a85604051806060016040528060288152602001615c5960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d20612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b600190509392505050565b610d82612d61565b73ffffffffffffffffffffffffffffffffffffffff16610da0611a17565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90614ad2565b60405180910390fd5b610dfe610c97565b8111158015610e14575066038d7ea4c680008110155b610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a90614b3e565b60405180910390fd5b8060108190555050565b6000600560009054906101000a900460ff16905090565b6000610f1d610e81612d61565b84610f188560016000610e92612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b612d69565b6001905092915050565b610f2f612d61565b73ffffffffffffffffffffffffffffffffffffffff16610f4d611a17565b73ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614ad2565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc8160405161102a9190614513565b60405180910390a150565b61103d612d61565b73ffffffffffffffffffffffffffffffffffffffff1661105b611a17565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890614ad2565b60405180910390fd5b6107d06111178461110960096000815481106110d0576110cf614b5e565b5b9060005260206000200154600a6000815481106110f0576110ef614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90614bd9565b60405180910390fd5b6107d06111be836111b0600960018154811061117757611176614b5e565b5b9060005260206000200154600a60018154811061119757611196614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f690614c45565b60405180910390fd5b6107d061126582611257600960028154811061121e5761121d614b5e565b5b9060005260206000200154600a60028154811061123e5761123d614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90614cb1565b60405180910390fd5b8260086000815481106112bc576112bb614b5e565b5b90600052602060002001819055508160086001815481106112e0576112df614b5e565b5b906000526020600020018190555080600860028154811061130457611303614b5e565b5b9060005260206000200181905550505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611345612d61565b73ffffffffffffffffffffffffffffffffffffffff16611363611a17565b73ffffffffffffffffffffffffffffffffffffffff16146113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090614ad2565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c816040516114409190614513565b60405180910390a150565b60136020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611499612d61565b73ffffffffffffffffffffffffffffffffffffffff166114b7611a17565b73ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614ad2565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614d43565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61164b612d61565b73ffffffffffffffffffffffffffffffffffffffff16611669611a17565b73ffffffffffffffffffffffffffffffffffffffff16146116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611788612d61565b73ffffffffffffffffffffffffffffffffffffffff166117a6611a17565b73ffffffffffffffffffffffffffffffffffffffff16146117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f390614ad2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611842573d6000803e3d6000fd5b5050565b601260159054906101000a900460ff1681565b60105481565b6008818154811061186f57600080fd5b906000526020600020016000915090505481565b6009818154811061189357600080fd5b906000526020600020016000915090505481565b6118af612d61565b73ffffffffffffffffffffffffffffffffffffffff166118cd611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90614ad2565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90614dd5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a5090614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7c90614a54565b8015611ac95780601f10611a9e57610100808354040283529160200191611ac9565b820191906000526020600020905b815481529060010190602001808311611aac57829003601f168201915b5050505050905090565b6017602052816000526040600020602052806000526040600020600091509150505481565b611b00612d61565b73ffffffffffffffffffffffffffffffffffffffff16611b1e611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90614ad2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc90614e8d565b60405180910390fd5b611c0f8282613a31565b5050565b600a8181548110611c2357600080fd5b906000526020600020016000915090505481565b6000611cfa611c44612d61565b84611cf585604051806060016040528060258152602001615c816025913960016000611c6e612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b6001905092915050565b611d0c612d61565b73ffffffffffffffffffffffffffffffffffffffff16611d2a611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790614ad2565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611dbb929190614ead565b6020604051808303816000875af1158015611dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfe9190614eeb565b50505050565b6000611e18611e11612d61565b8484612f34565b6001905092915050565b611e2a612d61565b73ffffffffffffffffffffffffffffffffffffffff16611e48611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590614ad2565b60405180910390fd5b6107d0611f0484611ef66008600081548110611ebd57611ebc614b5e565b5b9060005260206000200154600a600081548110611edd57611edc614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90614bd9565b60405180910390fd5b6107d0611fab83611f9d6008600181548110611f6457611f63614b5e565b5b9060005260206000200154600a600181548110611f8457611f83614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390614c45565b60405180910390fd5b6107d061205282612044600860028154811061200b5761200a614b5e565b5b9060005260206000200154600a60028154811061202b5761202a614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614cb1565b60405180910390fd5b8260096000815481106120a9576120a8614b5e565b5b90600052602060002001819055508160096001815481106120cd576120cc614b5e565b5b90600052602060002001819055508060096002815481106120f1576120f0614b5e565b5b9060005260206000200181905550505050565b61210c612d61565b73ffffffffffffffffffffffffffffffffffffffff1661212a611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790614ad2565b60405180910390fd5b612188610c97565b8111156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614f8a565b60405180910390fd5b80600e8190555050565b60166020528060005260406000206000915054906101000a900460ff1681565b60156020528060005260406000206000915054906101000a900460ff1681565b61221c612d61565b73ffffffffffffffffffffffffffffffffffffffff1661223a611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228790614ad2565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231a9061501c565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123c091906146ab565b60405180910390a25050565b6123d4612d61565b73ffffffffffffffffffffffffffffffffffffffff166123f2611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243f90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af90615088565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b6125b1612d61565b73ffffffffffffffffffffffffffffffffffffffff166125cf611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c90614ad2565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b61266a612d61565b73ffffffffffffffffffffffffffffffffffffffff16612688611a17565b73ffffffffffffffffffffffffffffffffffffffff16146126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590614ad2565b60405180910390fd5b6107d06127448461273660096000815481106126fd576126fc614b5e565b5b9060005260206000200154600860008154811061271d5761271c614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277c90614bd9565b60405180910390fd5b6107d06127eb836127dd60096001815481106127a4576127a3614b5e565b5b906000526020600020015460086001815481106127c4576127c3614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b111561282c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282390614c45565b60405180910390fd5b6107d061289282612884600960028154811061284b5761284a614b5e565b5b9060005260206000200154600860028154811061286b5761286a614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca90614cb1565b60405180910390fd5b82600a6000815481106128e9576128e8614b5e565b5b906000526020600020018190555081600a60018154811061290d5761290c614b5e565b5b906000526020600020018190555080600a60028154811061293157612930614b5e565b5b9060005260206000200181905550505050565b61294c612d61565b73ffffffffffffffffffffffffffffffffffffffff1661296a611a17565b73ffffffffffffffffffffffffffffffffffffffff16146129c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b790614ad2565b60405180910390fd5b6129c8610c97565b81111580156129de575066038d7ea4c680008110155b612a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1490614b3e565b60405180910390fd5b80600f8190555050565b612a2f612d61565b73ffffffffffffffffffffffffffffffffffffffff16612a4d611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a9061511a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612bdb612d61565b73ffffffffffffffffffffffffffffffffffffffff16612bf9611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4690614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb690615088565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284612d129190615169565b905083811015612d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4e9061520b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd09061529d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e409061532f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f27919061474f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9b906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300b90615453565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613098906154e5565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561312e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312590615577565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131c557600f548111156131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb90615609565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132695750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132be5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134375760105461333082601760006132d6613b65565b815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b1115613371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133689061569b565b60405180910390fd5b6133db8160176000613381613b65565b815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b601760006133e7613b65565b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000613442306115fb565b90506000600e548210159050601260149054906101000a900460ff161580156134685750805b80156134805750601260159054906101000a900460ff165b80156134d55750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137d0576001601260146101000a81548160ff0219169083151502179055506000600b5490506000600c5490506000600d5490506000613520600283613b8290919063ffffffff16565b905060006135498261353b8688612d0390919063ffffffff16565b612d0390919063ffffffff16565b9050600047905061355b600e54613bda565b60006135708247613e1d90919063ffffffff16565b905060006135998461358b8985613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135c2856135b48886613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135eb826135dd8587613e1d90919063ffffffff16565b613e1d90919063ffffffff16565b905060008311156136a157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561365e573d6000803e3d6000fd5b5061369a6136898761367b8c600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600c54613e1d90919063ffffffff16565b600c819055505b60008211156136f6576136b48783613ef1565b6136ef6136de876136d08b600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600d54613e1d90919063ffffffff16565b600d819055505b60008111156137aa57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613767573d6000803e3d6000fd5b506137a3613792876137848d600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600b54613e1d90919063ffffffff16565b600b819055505b6000601260146101000a81548160ff021916908315150217905550505050505050505050505b6000601260149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138865750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561389057600090505b80156139c057600061399285601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561398d5750601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613fcf565b905060008111156139be576139a8873083614238565b6139bb8186613e1d90919063ffffffff16565b94505b505b6139cb868686614238565b505050505050565b6000838311158290613a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1291906145c7565b60405180910390fd5b508284613a2891906156bb565b90509392505050565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613abb90615761565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613b7d6201518042613b8290919063ffffffff16565b905090565b6000808211613bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bbd906157cd565b60405180910390fd5b8183613bd2919061581c565b905092915050565b6000600267ffffffffffffffff811115613bf757613bf661584d565b5b604051908082528060200260200182016040528015613c255781602001602082028036833780820191505090505b5090503081600081518110613c3d57613c3c614b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d089190615891565b81600181518110613d1c57613d1b614b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613de79594939291906159b7565b600060405180830381600087803b158015613e0157600080fd5b505af1158015613e15573d6000803e3d6000fd5b505050505050565b600082821115613e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5990615a5d565b60405180910390fd5b8183613e6e91906156bb565b905092915050565b600080831415613e895760009050613eeb565b60008284613e979190615a7d565b9050828482613ea6919061581c565b14613ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613edd90615b49565b60405180910390fd5b809150505b92915050565b613f1e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613f8596959493929190615b69565b60606040518083038185885af1158015613fa3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fc89190615bdf565b5050505050565b600080600061407061271061406286614032578761400c576008600081548110613ffc57613ffb614b5e565b5b906000526020600020015461402d565b600860018154811061402157614020614b5e565b5b90600052602060002001545b614053565b600860028154811061404757614046614b5e565b5b90600052602060002001545b89613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061408781600b54612d0390919063ffffffff16565b600b81905550600061412b61271061411d876140ed57886140c75760096000815481106140b7576140b6614b5e565b5b90600052602060002001546140e8565b60096001815481106140dc576140db614b5e565b5b90600052602060002001545b61410e565b600960028154811061410257614101614b5e565b5b90600052602060002001545b8a613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061414281600c54612d0390919063ffffffff16565b600c8190555060006141e66127106141d8886141a8578961418257600a60008154811061417257614171614b5e565b5b90600052602060002001546141a3565b600a60018154811061419757614196614b5e565b5b90600052602060002001545b6141c9565b600a6002815481106141bd576141bc614b5e565b5b90600052602060002001545b8b613e7690919063ffffffff16565b613b8290919063ffffffff16565b90506141fd81600d54612d0390919063ffffffff16565b600d819055506142288161421a8486612d0390919063ffffffff16565b612d0390919063ffffffff16565b9350839450505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156142a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161429f906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161430f90615453565b60405180910390fd5b6143238383836144cd565b61438e81604051806060016040528060268152602001615c33602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614421816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144c0919061474f565b60405180910390a3505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144fd826144d2565b9050919050565b61450d816144f2565b82525050565b60006020820190506145286000830184614504565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561456857808201518184015260208101905061454d565b83811115614577576000848401525b50505050565b6000601f19601f8301169050919050565b60006145998261452e565b6145a38185614539565b93506145b381856020860161454a565b6145bc8161457d565b840191505092915050565b600060208201905081810360008301526145e1818461458e565b905092915050565b600080fd5b6145f7816144f2565b811461460257600080fd5b50565b600081359050614614816145ee565b92915050565b6000819050919050565b61462d8161461a565b811461463857600080fd5b50565b60008135905061464a81614624565b92915050565b60008060408385031215614667576146666145e9565b5b600061467585828601614605565b92505060206146868582860161463b565b9150509250929050565b60008115159050919050565b6146a581614690565b82525050565b60006020820190506146c0600083018461469c565b92915050565b6000819050919050565b60006146eb6146e66146e1846144d2565b6146c6565b6144d2565b9050919050565b60006146fd826146d0565b9050919050565b600061470f826146f2565b9050919050565b61471f81614704565b82525050565b600060208201905061473a6000830184614716565b92915050565b6147498161461a565b82525050565b60006020820190506147646000830184614740565b92915050565b600080600060608486031215614783576147826145e9565b5b600061479186828701614605565b93505060206147a286828701614605565b92505060406147b38682870161463b565b9150509250925092565b6000602082840312156147d3576147d26145e9565b5b60006147e18482850161463b565b91505092915050565b600060ff82169050919050565b614800816147ea565b82525050565b600060208201905061481b60008301846147f7565b92915050565b600060208284031215614837576148366145e9565b5b600061484584828501614605565b91505092915050565b600080600060608486031215614867576148666145e9565b5b60006148758682870161463b565b93505060206148868682870161463b565b92505060406148978682870161463b565b9150509250925092565b6148aa81614690565b81146148b557600080fd5b50565b6000813590506148c7816148a1565b92915050565b600080604083850312156148e4576148e36145e9565b5b60006148f285828601614605565b9250506020614903858286016148b8565b9150509250929050565b6000614918826144d2565b9050919050565b6149288161490d565b811461493357600080fd5b50565b6000813590506149458161491f565b92915050565b600060208284031215614961576149606145e9565b5b600061496f84828501614936565b91505092915050565b6000806040838503121561498f5761498e6145e9565b5b600061499d8582860161463b565b92505060206149ae85828601614605565b9150509250929050565b600080604083850312156149cf576149ce6145e9565b5b60006149dd85828601614605565b92505060206149ee85828601614605565b9150509250929050565b600060208284031215614a0e57614a0d6145e9565b5b6000614a1c848285016148b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6c57607f821691505b60208210811415614a8057614a7f614a25565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614abc602083614539565b9150614ac782614a86565b602082019050919050565b60006020820190508181036000830152614aeb81614aaf565b9050919050565b7f616d6f756e74206973206e6f7420636f72726563742e00000000000000000000600082015250565b6000614b28601683614539565b9150614b3382614af2565b602082019050919050565b60006020820190508181036000830152614b5781614b1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d617820666565206c696d6974207265616368656420666f7220274255592700600082015250565b6000614bc3601f83614539565b9150614bce82614b8d565b602082019050919050565b60006020820190508181036000830152614bf281614bb6565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f72202753454c4c27600082015250565b6000614c2f602083614539565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f7220275032502700600082015250565b6000614c9b601f83614539565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f415041593a204163636f756e7420697320616c7265616479207468652076616c60008201527f7565206f6620276578636c756465642700000000000000000000000000000000602082015250565b6000614d2d603083614539565b9150614d3882614cd1565b604082019050919050565b60006020820190508181036000830152614d5c81614d20565b9050919050565b7f4461696c792073616c65206c696d6974206578636c7573696f6e20697320616c60008201527f7265616479207468652076616c7565206f6620276578636c7564656427000000602082015250565b6000614dbf603d83614539565b9150614dca82614d63565b604082019050919050565b60006020820190508181036000830152614dee81614db2565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b6000614e77604183614539565b9150614e8282614df5565b606082019050919050565b60006020820190508181036000830152614ea681614e6a565b9050919050565b6000604082019050614ec26000830185614504565b614ecf6020830184614740565b9392505050565b600081519050614ee5816148a1565b92915050565b600060208284031215614f0157614f006145e9565b5b6000614f0f84828501614ed6565b91505092915050565b7f416d6f756e742063616e6e6f74206265206f7665722074686520746f74616c2060008201527f737570706c792e00000000000000000000000000000000000000000000000000602082015250565b6000614f74602783614539565b9150614f7f82614f18565b604082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615006602a83614539565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f7a65726f2d61646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000615072601883614539565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615104602683614539565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006151748261461a565b915061517f8361461a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151b4576151b361513a565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006151f5601b83614539565b9150615200826151bf565b602082019050919050565b60006020820190508181036000830152615224816151e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615287602483614539565b91506152928261522b565b604082019050919050565b600060208201905081810360008301526152b68161527a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615319602283614539565b9150615324826152bd565b604082019050919050565b600060208201905081810360008301526153488161530c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153ab602583614539565b91506153b68261534f565b604082019050919050565b600060208201905081810360008301526153da8161539e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061543d602383614539565b9150615448826153e1565b604082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f45524332303a207472616e7366657220746f20697320626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602183614539565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20697320626c61636b6c697360008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b6000615561602383614539565b915061556c82615505565b604082019050919050565b6000602082019050818103600083015261559081615554565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006155f3602883614539565b91506155fe82615597565b604082019050919050565b60006020820190508181036000830152615622816155e6565b9050919050565b7f54686973206163636f756e7420686173206578636565646564206d617820646160008201527f696c792073656c6c206c696d6974000000000000000000000000000000000000602082015250565b6000615685602e83614539565b915061569082615629565b604082019050919050565b600060208201905081810360008301526156b481615678565b9050919050565b60006156c68261461a565b91506156d18361461a565b9250828210156156e4576156e361513a565b5b828203905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061574b603883614539565b9150615756826156ef565b604082019050919050565b6000602082019050818103600083015261577a8161573e565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b60006157b7601a83614539565b91506157c282615781565b602082019050919050565b600060208201905081810360008301526157e6816157aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006158278261461a565b91506158328361461a565b925082615842576158416157ed565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061588b816145ee565b92915050565b6000602082840312156158a7576158a66145e9565b5b60006158b58482850161587c565b91505092915050565b6000819050919050565b60006158e36158de6158d9846158be565b6146c6565b61461a565b9050919050565b6158f3816158c8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61592e816144f2565b82525050565b60006159408383615925565b60208301905092915050565b6000602082019050919050565b6000615964826158f9565b61596e8185615904565b935061597983615915565b8060005b838110156159aa5781516159918882615934565b975061599c8361594c565b92505060018101905061597d565b5085935050505092915050565b600060a0820190506159cc6000830188614740565b6159d960208301876158ea565b81810360408301526159eb8186615959565b90506159fa6060830185614504565b615a076080830184614740565b9695505050505050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000615a47601e83614539565b9150615a5282615a11565b602082019050919050565b60006020820190508181036000830152615a7681615a3a565b9050919050565b6000615a888261461a565b9150615a938361461a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615acc57615acb61513a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b33602183614539565b9150615b3e82615ad7565b604082019050919050565b60006020820190508181036000830152615b6281615b26565b9050919050565b600060c082019050615b7e6000830189614504565b615b8b6020830188614740565b615b9860408301876158ea565b615ba560608301866158ea565b615bb26080830185614504565b615bbf60a0830184614740565b979650505050505050565b600081519050615bd981614624565b92915050565b600080600060608486031215615bf857615bf76145e9565b5b6000615c0686828701615bca565b9350506020615c1786828701615bca565b9250506040615c2886828701615bca565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122021f418e1cdf390baefb7f9d16bdd1b796cfa24703c555c0df5ffc9cafb11581664736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c80638c0b5e221161015a578063b62496f5116100c1578063e40ffe001161007a578063e40ffe0014610a91578063e47d606014610aba578063ea0a605f14610af7578063ec28438a14610b20578063f2fde38b14610b49578063fae5655f14610b725761029e565b8063b62496f51461095d578063c02466681461099a578063c3f3046c146109c3578063d3b64ecd146109ec578063dd62ed3e14610a29578063e2f4560514610a665761029e565b8063a457c2d711610113578063a457c2d71461082b578063a64b6e5f14610868578063a9059cbb14610891578063a918299c146108ce578063afa4f3b2146108f7578063b0555828146109205761029e565b80638c0b5e22146107075780638da5cb5b1461073257806395d89b411461075d57806398982ccf146107885780639a7a23d6146107c5578063a046bc78146107ee5761029e565b80634a49ac4c116101fe57806374da7cd8116101b757806374da7cd8146105e5578063769c2f571461060e5780637cb544fb146106395780637fd4623a1461066457806382fb7119146106a15780638a029a9a146106de5761029e565b80634a49ac4c146104d75780634fbee19314610500578063510911561461053d578063595cc84f1461056857806370a0823114610591578063715018a6146105ce5761029e565b80632692f427116102505780632692f427146103c9578063313ce567146103f2578063395093511461041d578063417c73a71461045a57806349a034891461048357806349bd5a5e146104ac5761029e565b8063053e39a3146102a357806306fdde03146102ce578063095ea7b3146102f95780631694505e1461033657806318160ddd1461036157806323b872dd1461038c5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b9b565b6040516102c59190614513565b60405180910390f35b3480156102da57600080fd5b506102e3610bc1565b6040516102f091906145c7565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190614650565b610c53565b60405161032d91906146ab565b60405180910390f35b34801561034257600080fd5b5061034b610c71565b6040516103589190614725565b60405180910390f35b34801561036d57600080fd5b50610376610c97565b604051610383919061474f565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae919061476a565b610ca1565b6040516103c091906146ab565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb91906147bd565b610d7a565b005b3480156103fe57600080fd5b50610407610e5d565b6040516104149190614806565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f9190614650565b610e74565b60405161045191906146ab565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190614821565b610f27565b005b34801561048f57600080fd5b506104aa60048036038101906104a5919061484e565b611035565b005b3480156104b857600080fd5b506104c1611317565b6040516104ce9190614513565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190614821565b61133d565b005b34801561050c57600080fd5b5061052760048036038101906105229190614821565b61144b565b60405161053491906146ab565b60405180910390f35b34801561054957600080fd5b5061055261146b565b60405161055f9190614513565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a91906148cd565b611491565b005b34801561059d57600080fd5b506105b860048036038101906105b39190614821565b6115fb565b6040516105c5919061474f565b60405180910390f35b3480156105da57600080fd5b506105e3611643565b005b3480156105f157600080fd5b5061060c6004803603810190610607919061494b565b611780565b005b34801561061a57600080fd5b50610623611846565b60405161063091906146ab565b60405180910390f35b34801561064557600080fd5b5061064e611859565b60405161065b919061474f565b60405180910390f35b34801561067057600080fd5b5061068b600480360381019061068691906147bd565b61185f565b604051610698919061474f565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c391906147bd565b611883565b6040516106d5919061474f565b60405180910390f35b3480156106ea57600080fd5b50610705600480360381019061070091906148cd565b6118a7565b005b34801561071357600080fd5b5061071c611a11565b604051610729919061474f565b60405180910390f35b34801561073e57600080fd5b50610747611a17565b6040516107549190614513565b60405180910390f35b34801561076957600080fd5b50610772611a41565b60405161077f91906145c7565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614978565b611ad3565b6040516107bc919061474f565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e791906148cd565b611af8565b005b3480156107fa57600080fd5b50610815600480360381019061081091906147bd565b611c13565b604051610822919061474f565b60405180910390f35b34801561083757600080fd5b50610852600480360381019061084d9190614650565b611c37565b60405161085f91906146ab565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a919061476a565b611d04565b005b34801561089d57600080fd5b506108b860048036038101906108b39190614650565b611e04565b6040516108c591906146ab565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f0919061484e565b611e22565b005b34801561090357600080fd5b5061091e600480360381019061091991906147bd565b612104565b005b34801561092c57600080fd5b5061094760048036038101906109429190614821565b6121d4565b60405161095491906146ab565b60405180910390f35b34801561096957600080fd5b50610984600480360381019061097f9190614821565b6121f4565b60405161099191906146ab565b60405180910390f35b3480156109a657600080fd5b506109c160048036038101906109bc91906148cd565b612214565b005b3480156109cf57600080fd5b506109ea60048036038101906109e5919061494b565b6123cc565b005b3480156109f857600080fd5b50610a136004803603810190610a0e9190614821565b6124fc565b604051610a2091906146ab565b60405180910390f35b348015610a3557600080fd5b50610a506004803603810190610a4b91906149b8565b61251c565b604051610a5d919061474f565b60405180910390f35b348015610a7257600080fd5b50610a7b6125a3565b604051610a88919061474f565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab391906149f8565b6125a9565b005b348015610ac657600080fd5b50610ae16004803603810190610adc9190614821565b612642565b604051610aee91906146ab565b60405180910390f35b348015610b0357600080fd5b50610b1e6004803603810190610b19919061484e565b612662565b005b348015610b2c57600080fd5b50610b476004803603810190610b4291906147bd565b612944565b005b348015610b5557600080fd5b50610b706004803603810190610b6b9190614821565b612a27565b005b348015610b7e57600080fd5b50610b996004803603810190610b94919061494b565b612bd3565b005b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610bd090614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc90614a54565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b5050505050905090565b6000610c67610c60612d61565b8484612d69565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000610cae848484612f34565b610d6f84610cba612d61565b610d6a85604051806060016040528060288152602001615c5960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d20612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b600190509392505050565b610d82612d61565b73ffffffffffffffffffffffffffffffffffffffff16610da0611a17565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90614ad2565b60405180910390fd5b610dfe610c97565b8111158015610e14575066038d7ea4c680008110155b610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a90614b3e565b60405180910390fd5b8060108190555050565b6000600560009054906101000a900460ff16905090565b6000610f1d610e81612d61565b84610f188560016000610e92612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b612d69565b6001905092915050565b610f2f612d61565b73ffffffffffffffffffffffffffffffffffffffff16610f4d611a17565b73ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614ad2565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc8160405161102a9190614513565b60405180910390a150565b61103d612d61565b73ffffffffffffffffffffffffffffffffffffffff1661105b611a17565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890614ad2565b60405180910390fd5b6107d06111178461110960096000815481106110d0576110cf614b5e565b5b9060005260206000200154600a6000815481106110f0576110ef614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114f90614bd9565b60405180910390fd5b6107d06111be836111b0600960018154811061117757611176614b5e565b5b9060005260206000200154600a60018154811061119757611196614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f690614c45565b60405180910390fd5b6107d061126582611257600960028154811061121e5761121d614b5e565b5b9060005260206000200154600a60028154811061123e5761123d614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90614cb1565b60405180910390fd5b8260086000815481106112bc576112bb614b5e565b5b90600052602060002001819055508160086001815481106112e0576112df614b5e565b5b906000526020600020018190555080600860028154811061130457611303614b5e565b5b9060005260206000200181905550505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611345612d61565b73ffffffffffffffffffffffffffffffffffffffff16611363611a17565b73ffffffffffffffffffffffffffffffffffffffff16146113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090614ad2565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c816040516114409190614513565b60405180910390a150565b60136020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611499612d61565b73ffffffffffffffffffffffffffffffffffffffff166114b7611a17565b73ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614ad2565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614d43565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61164b612d61565b73ffffffffffffffffffffffffffffffffffffffff16611669611a17565b73ffffffffffffffffffffffffffffffffffffffff16146116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b690614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611788612d61565b73ffffffffffffffffffffffffffffffffffffffff166117a6611a17565b73ffffffffffffffffffffffffffffffffffffffff16146117fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f390614ad2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611842573d6000803e3d6000fd5b5050565b601260159054906101000a900460ff1681565b60105481565b6008818154811061186f57600080fd5b906000526020600020016000915090505481565b6009818154811061189357600080fd5b906000526020600020016000915090505481565b6118af612d61565b73ffffffffffffffffffffffffffffffffffffffff166118cd611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90614ad2565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90614dd5565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a5090614a54565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7c90614a54565b8015611ac95780601f10611a9e57610100808354040283529160200191611ac9565b820191906000526020600020905b815481529060010190602001808311611aac57829003601f168201915b5050505050905090565b6017602052816000526040600020602052806000526040600020600091509150505481565b611b00612d61565b73ffffffffffffffffffffffffffffffffffffffff16611b1e611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90614ad2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc90614e8d565b60405180910390fd5b611c0f8282613a31565b5050565b600a8181548110611c2357600080fd5b906000526020600020016000915090505481565b6000611cfa611c44612d61565b84611cf585604051806060016040528060258152602001615c816025913960016000611c6e612d61565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b612d69565b6001905092915050565b611d0c612d61565b73ffffffffffffffffffffffffffffffffffffffff16611d2a611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7790614ad2565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611dbb929190614ead565b6020604051808303816000875af1158015611dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfe9190614eeb565b50505050565b6000611e18611e11612d61565b8484612f34565b6001905092915050565b611e2a612d61565b73ffffffffffffffffffffffffffffffffffffffff16611e48611a17565b73ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590614ad2565b60405180910390fd5b6107d0611f0484611ef66008600081548110611ebd57611ebc614b5e565b5b9060005260206000200154600a600081548110611edd57611edc614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90614bd9565b60405180910390fd5b6107d0611fab83611f9d6008600181548110611f6457611f63614b5e565b5b9060005260206000200154600a600181548110611f8457611f83614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390614c45565b60405180910390fd5b6107d061205282612044600860028154811061200b5761200a614b5e565b5b9060005260206000200154600a60028154811061202b5761202a614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614cb1565b60405180910390fd5b8260096000815481106120a9576120a8614b5e565b5b90600052602060002001819055508160096001815481106120cd576120cc614b5e565b5b90600052602060002001819055508060096002815481106120f1576120f0614b5e565b5b9060005260206000200181905550505050565b61210c612d61565b73ffffffffffffffffffffffffffffffffffffffff1661212a611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790614ad2565b60405180910390fd5b612188610c97565b8111156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190614f8a565b60405180910390fd5b80600e8190555050565b60166020528060005260406000206000915054906101000a900460ff1681565b60156020528060005260406000206000915054906101000a900460ff1681565b61221c612d61565b73ffffffffffffffffffffffffffffffffffffffff1661223a611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228790614ad2565b60405180910390fd5b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415612323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231a9061501c565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516123c091906146ab565b60405180910390a25050565b6123d4612d61565b73ffffffffffffffffffffffffffffffffffffffff166123f2611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243f90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124af90615088565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b6125b1612d61565b73ffffffffffffffffffffffffffffffffffffffff166125cf611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261c90614ad2565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b61266a612d61565b73ffffffffffffffffffffffffffffffffffffffff16612688611a17565b73ffffffffffffffffffffffffffffffffffffffff16146126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590614ad2565b60405180910390fd5b6107d06127448461273660096000815481106126fd576126fc614b5e565b5b9060005260206000200154600860008154811061271d5761271c614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b1115612785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277c90614bd9565b60405180910390fd5b6107d06127eb836127dd60096001815481106127a4576127a3614b5e565b5b906000526020600020015460086001815481106127c4576127c3614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b111561282c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282390614c45565b60405180910390fd5b6107d061289282612884600960028154811061284b5761284a614b5e565b5b9060005260206000200154600860028154811061286b5761286a614b5e565b5b9060005260206000200154612d0390919063ffffffff16565b612d0390919063ffffffff16565b11156128d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ca90614cb1565b60405180910390fd5b82600a6000815481106128e9576128e8614b5e565b5b906000526020600020018190555081600a60018154811061290d5761290c614b5e565b5b906000526020600020018190555080600a60028154811061293157612930614b5e565b5b9060005260206000200181905550505050565b61294c612d61565b73ffffffffffffffffffffffffffffffffffffffff1661296a611a17565b73ffffffffffffffffffffffffffffffffffffffff16146129c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b790614ad2565b60405180910390fd5b6129c8610c97565b81111580156129de575066038d7ea4c680008110155b612a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1490614b3e565b60405180910390fd5b80600f8190555050565b612a2f612d61565b73ffffffffffffffffffffffffffffffffffffffff16612a4d611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9a90614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0a9061511a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612bdb612d61565b73ffffffffffffffffffffffffffffffffffffffff16612bf9611a17565b73ffffffffffffffffffffffffffffffffffffffff1614612c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4690614ad2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb690615088565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284612d129190615169565b905083811015612d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4e9061520b565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd09061529d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e409061532f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f27919061474f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9b906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300b90615453565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613098906154e5565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561312e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312590615577565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131c557600f548111156131c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bb90615609565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132695750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132be5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134375760105461333082601760006132d6613b65565b815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b1115613371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133689061569b565b60405180910390fd5b6133db8160176000613381613b65565b815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b601760006133e7613b65565b815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000613442306115fb565b90506000600e548210159050601260149054906101000a900460ff161580156134685750805b80156134805750601260159054906101000a900460ff165b80156134d55750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137d0576001601260146101000a81548160ff0219169083151502179055506000600b5490506000600c5490506000600d5490506000613520600283613b8290919063ffffffff16565b905060006135498261353b8688612d0390919063ffffffff16565b612d0390919063ffffffff16565b9050600047905061355b600e54613bda565b60006135708247613e1d90919063ffffffff16565b905060006135998461358b8985613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135c2856135b48886613e7690919063ffffffff16565b613b8290919063ffffffff16565b905060006135eb826135dd8587613e1d90919063ffffffff16565b613e1d90919063ffffffff16565b905060008311156136a157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561365e573d6000803e3d6000fd5b5061369a6136898761367b8c600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600c54613e1d90919063ffffffff16565b600c819055505b60008211156136f6576136b48783613ef1565b6136ef6136de876136d08b600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600d54613e1d90919063ffffffff16565b600d819055505b60008111156137aa57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613767573d6000803e3d6000fd5b506137a3613792876137848d600e54613e7690919063ffffffff16565b613b8290919063ffffffff16565b600b54613e1d90919063ffffffff16565b600b819055505b6000601260146101000a81548160ff021916908315150217905550505050505050505050505b6000601260149054906101000a900460ff16159050601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138865750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561389057600090505b80156139c057600061399285601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561398d5750601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613fcf565b905060008111156139be576139a8873083614238565b6139bb8186613e1d90919063ffffffff16565b94505b505b6139cb868686614238565b505050505050565b6000838311158290613a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a1291906145c7565b60405180910390fd5b508284613a2891906156bb565b90509392505050565b801515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613abb90615761565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613b7d6201518042613b8290919063ffffffff16565b905090565b6000808211613bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bbd906157cd565b60405180910390fd5b8183613bd2919061581c565b905092915050565b6000600267ffffffffffffffff811115613bf757613bf661584d565b5b604051908082528060200260200182016040528015613c255781602001602082028036833780820191505090505b5090503081600081518110613c3d57613c3c614b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d089190615891565b81600181518110613d1c57613d1b614b5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613de79594939291906159b7565b600060405180830381600087803b158015613e0157600080fd5b505af1158015613e15573d6000803e3d6000fd5b505050505050565b600082821115613e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e5990615a5d565b60405180910390fd5b8183613e6e91906156bb565b905092915050565b600080831415613e895760009050613eeb565b60008284613e979190615a7d565b9050828482613ea6919061581c565b14613ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613edd90615b49565b60405180910390fd5b809150505b92915050565b613f1e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d69565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401613f8596959493929190615b69565b60606040518083038185885af1158015613fa3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fc89190615bdf565b5050505050565b600080600061407061271061406286614032578761400c576008600081548110613ffc57613ffb614b5e565b5b906000526020600020015461402d565b600860018154811061402157614020614b5e565b5b90600052602060002001545b614053565b600860028154811061404757614046614b5e565b5b90600052602060002001545b89613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061408781600b54612d0390919063ffffffff16565b600b81905550600061412b61271061411d876140ed57886140c75760096000815481106140b7576140b6614b5e565b5b90600052602060002001546140e8565b60096001815481106140dc576140db614b5e565b5b90600052602060002001545b61410e565b600960028154811061410257614101614b5e565b5b90600052602060002001545b8a613e7690919063ffffffff16565b613b8290919063ffffffff16565b905061414281600c54612d0390919063ffffffff16565b600c8190555060006141e66127106141d8886141a8578961418257600a60008154811061417257614171614b5e565b5b90600052602060002001546141a3565b600a60018154811061419757614196614b5e565b5b90600052602060002001545b6141c9565b600a6002815481106141bd576141bc614b5e565b5b90600052602060002001545b8b613e7690919063ffffffff16565b613b8290919063ffffffff16565b90506141fd81600d54612d0390919063ffffffff16565b600d819055506142288161421a8486612d0390919063ffffffff16565b612d0390919063ffffffff16565b9350839450505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156142a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161429f906153c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161430f90615453565b60405180910390fd5b6143238383836144cd565b61438e81604051806060016040528060268152602001615c33602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139d39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614421816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516144c0919061474f565b60405180910390a3505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144fd826144d2565b9050919050565b61450d816144f2565b82525050565b60006020820190506145286000830184614504565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561456857808201518184015260208101905061454d565b83811115614577576000848401525b50505050565b6000601f19601f8301169050919050565b60006145998261452e565b6145a38185614539565b93506145b381856020860161454a565b6145bc8161457d565b840191505092915050565b600060208201905081810360008301526145e1818461458e565b905092915050565b600080fd5b6145f7816144f2565b811461460257600080fd5b50565b600081359050614614816145ee565b92915050565b6000819050919050565b61462d8161461a565b811461463857600080fd5b50565b60008135905061464a81614624565b92915050565b60008060408385031215614667576146666145e9565b5b600061467585828601614605565b92505060206146868582860161463b565b9150509250929050565b60008115159050919050565b6146a581614690565b82525050565b60006020820190506146c0600083018461469c565b92915050565b6000819050919050565b60006146eb6146e66146e1846144d2565b6146c6565b6144d2565b9050919050565b60006146fd826146d0565b9050919050565b600061470f826146f2565b9050919050565b61471f81614704565b82525050565b600060208201905061473a6000830184614716565b92915050565b6147498161461a565b82525050565b60006020820190506147646000830184614740565b92915050565b600080600060608486031215614783576147826145e9565b5b600061479186828701614605565b93505060206147a286828701614605565b92505060406147b38682870161463b565b9150509250925092565b6000602082840312156147d3576147d26145e9565b5b60006147e18482850161463b565b91505092915050565b600060ff82169050919050565b614800816147ea565b82525050565b600060208201905061481b60008301846147f7565b92915050565b600060208284031215614837576148366145e9565b5b600061484584828501614605565b91505092915050565b600080600060608486031215614867576148666145e9565b5b60006148758682870161463b565b93505060206148868682870161463b565b92505060406148978682870161463b565b9150509250925092565b6148aa81614690565b81146148b557600080fd5b50565b6000813590506148c7816148a1565b92915050565b600080604083850312156148e4576148e36145e9565b5b60006148f285828601614605565b9250506020614903858286016148b8565b9150509250929050565b6000614918826144d2565b9050919050565b6149288161490d565b811461493357600080fd5b50565b6000813590506149458161491f565b92915050565b600060208284031215614961576149606145e9565b5b600061496f84828501614936565b91505092915050565b6000806040838503121561498f5761498e6145e9565b5b600061499d8582860161463b565b92505060206149ae85828601614605565b9150509250929050565b600080604083850312156149cf576149ce6145e9565b5b60006149dd85828601614605565b92505060206149ee85828601614605565b9150509250929050565b600060208284031215614a0e57614a0d6145e9565b5b6000614a1c848285016148b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6c57607f821691505b60208210811415614a8057614a7f614a25565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614abc602083614539565b9150614ac782614a86565b602082019050919050565b60006020820190508181036000830152614aeb81614aaf565b9050919050565b7f616d6f756e74206973206e6f7420636f72726563742e00000000000000000000600082015250565b6000614b28601683614539565b9150614b3382614af2565b602082019050919050565b60006020820190508181036000830152614b5781614b1b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d617820666565206c696d6974207265616368656420666f7220274255592700600082015250565b6000614bc3601f83614539565b9150614bce82614b8d565b602082019050919050565b60006020820190508181036000830152614bf281614bb6565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f72202753454c4c27600082015250565b6000614c2f602083614539565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f4d617820666565206c696d6974207265616368656420666f7220275032502700600082015250565b6000614c9b601f83614539565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f415041593a204163636f756e7420697320616c7265616479207468652076616c60008201527f7565206f6620276578636c756465642700000000000000000000000000000000602082015250565b6000614d2d603083614539565b9150614d3882614cd1565b604082019050919050565b60006020820190508181036000830152614d5c81614d20565b9050919050565b7f4461696c792073616c65206c696d6974206578636c7573696f6e20697320616c60008201527f7265616479207468652076616c7565206f6620276578636c7564656427000000602082015250565b6000614dbf603d83614539565b9150614dca82614d63565b604082019050919050565b60006020820190508181036000830152614dee81614db2565b9050919050565b7f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660008201527f65642066726f6d206175746f6d617465644d61726b65744d616b65725061697260208201527f7300000000000000000000000000000000000000000000000000000000000000604082015250565b6000614e77604183614539565b9150614e8282614df5565b606082019050919050565b60006020820190508181036000830152614ea681614e6a565b9050919050565b6000604082019050614ec26000830185614504565b614ecf6020830184614740565b9392505050565b600081519050614ee5816148a1565b92915050565b600060208284031215614f0157614f006145e9565b5b6000614f0f84828501614ed6565b91505092915050565b7f416d6f756e742063616e6e6f74206265206f7665722074686520746f74616c2060008201527f737570706c792e00000000000000000000000000000000000000000000000000602082015250565b6000614f74602783614539565b9150614f7f82614f18565b604082019050919050565b60006020820190508181036000830152614fa381614f67565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615006602a83614539565b915061501182614faa565b604082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b7f7a65726f2d61646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000615072601883614539565b915061507d8261503c565b602082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615104602683614539565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006151748261461a565b915061517f8361461a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156151b4576151b361513a565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006151f5601b83614539565b9150615200826151bf565b602082019050919050565b60006020820190508181036000830152615224816151e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615287602483614539565b91506152928261522b565b604082019050919050565b600060208201905081810360008301526152b68161527a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615319602283614539565b9150615324826152bd565b604082019050919050565b600060208201905081810360008301526153488161530c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153ab602583614539565b91506153b68261534f565b604082019050919050565b600060208201905081810360008301526153da8161539e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061543d602383614539565b9150615448826153e1565b604082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f45524332303a207472616e7366657220746f20697320626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602183614539565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20697320626c61636b6c697360008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b6000615561602383614539565b915061556c82615505565b604082019050919050565b6000602082019050818103600083015261559081615554565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006155f3602883614539565b91506155fe82615597565b604082019050919050565b60006020820190508181036000830152615622816155e6565b9050919050565b7f54686973206163636f756e7420686173206578636565646564206d617820646160008201527f696c792073656c6c206c696d6974000000000000000000000000000000000000602082015250565b6000615685602e83614539565b915061569082615629565b604082019050919050565b600060208201905081810360008301526156b481615678565b9050919050565b60006156c68261461a565b91506156d18361461a565b9250828210156156e4576156e361513a565b5b828203905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061574b603883614539565b9150615756826156ef565b604082019050919050565b6000602082019050818103600083015261577a8161573e565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b60006157b7601a83614539565b91506157c282615781565b602082019050919050565b600060208201905081810360008301526157e6816157aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006158278261461a565b91506158328361461a565b925082615842576158416157ed565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061588b816145ee565b92915050565b6000602082840312156158a7576158a66145e9565b5b60006158b58482850161587c565b91505092915050565b6000819050919050565b60006158e36158de6158d9846158be565b6146c6565b61461a565b9050919050565b6158f3816158c8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61592e816144f2565b82525050565b60006159408383615925565b60208301905092915050565b6000602082019050919050565b6000615964826158f9565b61596e8185615904565b935061597983615915565b8060005b838110156159aa5781516159918882615934565b975061599c8361594c565b92505060018101905061597d565b5085935050505092915050565b600060a0820190506159cc6000830188614740565b6159d960208301876158ea565b81810360408301526159eb8186615959565b90506159fa6060830185614504565b615a076080830184614740565b9695505050505050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000615a47601e83614539565b9150615a5282615a11565b602082019050919050565b60006020820190508181036000830152615a7681615a3a565b9050919050565b6000615a888261461a565b9150615a938361461a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615acc57615acb61513a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b33602183614539565b9150615b3e82615ad7565b604082019050919050565b60006020820190508181036000830152615b6281615b26565b9050919050565b600060c082019050615b7e6000830189614504565b615b8b6020830188614740565b615b9860408301876158ea565b615ba560608301866158ea565b615bb26080830185614504565b615bbf60a0830184614740565b979650505050505050565b600081519050615bd981614624565b92915050565b600080600060608486031215615bf857615bf76145e9565b5b6000615c0686828701615bca565b9350506020615c1786828701615bca565b9250506040615c2886828701615bca565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122021f418e1cdf390baefb7f9d16bdd1b796cfa24703c555c0df5ffc9cafb11581664736f6c634300080b0033

Deployed Bytecode Sourcemap

10775:11927:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11434:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3138:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4033:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10857:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3439:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4210:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13672:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3340:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4539:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17312:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13982:496;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10905:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17467:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11584:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11349:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15779:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3555:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1552:148;;;;;;;;;;;;;:::i;:::-;;22466:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11545:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11288:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10943:31;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10978:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16033:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11232:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1329:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3237:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11831:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16327:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11014:29;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4765:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22309:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3690:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14484:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13269:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11766:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11704:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15487:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17107:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11639:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3874:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11170:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13881:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11905:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14984:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13467:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1709:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16898:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11434:79;;;;;;;;;;;;;:::o;3138:91::-;3183:13;3216:5;3209:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3138:91;:::o;4033:169::-;4116:4;4133:39;4142:12;:10;:12::i;:::-;4156:7;4165:6;4133:8;:39::i;:::-;4190:4;4183:11;;4033:169;;;;:::o;10857:41::-;;;;;;;;;;;;;:::o;3439:108::-;3500:7;3527:12;;3520:19;;3439:108;:::o;4210:321::-;4316:4;4333:36;4343:6;4351:9;4362:6;4333:9;:36::i;:::-;4380:121;4389:6;4397:12;:10;:12::i;:::-;4411:89;4449:6;4411:89;;;;;;;;;;;;;;;;;:11;:19;4423:6;4411:19;;;;;;;;;;;;;;;:33;4431:12;:10;:12::i;:::-;4411:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4380:8;:121::i;:::-;4519:4;4512:11;;4210:321;;;;;:::o;13672:203::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13762:13:::1;:11;:13::i;:::-;13752:6;:23;;:54;;;;;13789:17;13779:6;:27;;13752:54;13744:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13861:6;13845:13;:22;;;;13672:203:::0;:::o;3340:91::-;3389:5;3414:9;;;;;;;;;;;3407:16;;3340:91;:::o;4539:218::-;4627:4;4644:83;4653:12;:10;:12::i;:::-;4667:7;4676:50;4715:10;4676:11;:25;4688:12;:10;:12::i;:::-;4676:25;;;;;;;;;;;;;;;:34;4702:7;4676:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4644:8;:83::i;:::-;4745:4;4738:11;;4539:218;;;;:::o;17312:146::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17407:4:::1;17382:13;:22;17396:7;17382:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17427:23;17442:7;17427:23;;;;;;:::i;:::-;;;;;;;;17312:146:::0;:::o;13982:496::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14134:4:::1;14084:45;14125:3;14084:36;14104:12;14117:1;14104:15;;;;;;;;:::i;:::-;;;;;;;;;;14084:12;14097:1;14084:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;:54;;14076:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14238:4;14188:46;14229:4;14188:36;14208:12;14221:1;14208:15;;;;;;;;:::i;:::-;;;;;;;;;;14188:12;14201:1;14188:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:36;;;;:::i;:::-;:40;;:46;;;;:::i;:::-;:54;;14180:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;14343:4;14293:45;14334:3;14293:36;14313:12;14326:1;14313:15;;;;;;;;:::i;:::-;;;;;;;;;;14293:12;14306:1;14293:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;:54;;14285:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14413:3;14393:14;14408:1;14393:17;;;;;;;;:::i;:::-;;;;;;;;;:23;;;;14441:4;14421:14;14436:1;14421:17;;;;;;;;:::i;:::-;;;;;;;;;:24;;;;14470:3;14450:14;14465:1;14450:17;;;;;;;;:::i;:::-;;;;;;;;;:23;;;;13982:496:::0;;;:::o;10905:28::-;;;;;;;;;;;;;:::o;17467:154::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17567:5:::1;17542:13;:22;17556:7;17542:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;17588:25;17605:7;17588:25;;;;;;:::i;:::-;;;;;;;;17467:154:::0;:::o;11584:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;11349:81::-;;;;;;;;;;;;;:::o;15779:248::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15911:8:::1;15873:46;;:25;:34;15899:7;15873:34;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;15865:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;16014:8;15977:25;:34;16003:7;15977:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;15779:248:::0;;:::o;3555:127::-;3629:7;3656:9;:18;3666:7;3656:18;;;;;;;;;;;;;;;;3649:25;;3555:127;;;:::o;1552:148::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1659:1:::1;1622:40;;1643:6;;;;;;;;;;;1622:40;;;;;;;;;;;;1690:1;1673:6;;:19;;;;;;;;;;;;;;;;;;1552:148::o:0;22466:124::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22541:9:::1;:18;;:41;22560:21;22541:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22466:124:::0;:::o;11545:29::-;;;;;;;;;;;;;:::o;11288:54::-;;;;:::o;10943:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10978:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16033:285::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16177:8:::1;16136:49;;:28;:37;16165:7;16136:37;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;16128:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;16302:8;16262:28;:37;16291:7;16262:37;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;16033:285:::0;;:::o;11232:52::-;;;;:::o;1329:87::-;1375:7;1402:6;;;;;;;;;;;1395:13;;1329:87;:::o;3237:95::-;3284:13;3317:7;3310:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3237:95;:::o;11831:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16327:250::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16434:13:::1;;;;;;;;;;;16426:21;;:4;:21;;;;16418:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;16528:41;16557:4;16563:5;16528:28;:41::i;:::-;16327:250:::0;;:::o;11014:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4765:269::-;4858:4;4875:129;4884:12;:10;:12::i;:::-;4898:7;4907:96;4946:15;4907:96;;;;;;;;;;;;;;;;;:11;:25;4919:12;:10;:12::i;:::-;4907:25;;;;;;;;;;;;;;;:34;4933:7;4907:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4875:8;:129::i;:::-;5022:4;5015:11;;4765:269;;;;:::o;22309:151::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22418:12:::1;22411:29;;;22441:2;22445:6;22411:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22309:151:::0;;;:::o;3690:175::-;3776:4;3793:42;3803:12;:10;:12::i;:::-;3817:9;3828:6;3793:9;:42::i;:::-;3853:4;3846:11;;3690:175;;;;:::o;14484:494::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14636:4:::1;14584:47;14627:3;14584:38;14604:14;14619:1;14604:17;;;;;;;;:::i;:::-;;;;;;;;;;14584:12;14597:1;14584:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;:56;;14576:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14742:4;14690:48;14733:4;14690:38;14710:14;14725:1;14710:17;;;;;;;;:::i;:::-;;;;;;;;;;14690:12;14703:1;14690:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;:56;;14682:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;14849:4;14797:47;14840:3;14797:38;14817:14;14832:1;14817:17;;;;;;;;:::i;:::-;;;;;;;;;;14797:12;14810:1;14797:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;:56;;14789:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14917:3;14899:12;14912:1;14899:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;14943:4;14925:12;14938:1;14925:15;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;14970:3;14952:12;14965:1;14952:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;14484:494:::0;;;:::o;13269:192::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13364:13:::1;:11;:13::i;:::-;13354:6;:23;;13346:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13448:6;13427:18;:27;;;;13269:192:::0;:::o;11766:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;11704:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;15487:286::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15611:8:::1;15580:39;;:18;:27;15599:7;15580:27;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;15572:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15707:8;15677:18;:27;15696:7;15677:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15747:7;15731:34;;;15756:8;15731:34;;;;;;:::i;:::-;;;;;;;;15487:286:::0;;:::o;17107:199::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17228:1:::1;17206:24;;:10;:24;;;;17198:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17288:10;17266:19;;:32;;;;;;;;;;;;;;;;;;17107:199:::0;:::o;11639:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;3874:151::-;3963:7;3990:11;:18;4002:5;3990:18;;;;;;;;;;;;;;;:27;4009:7;3990:27;;;;;;;;;;;;;;;;3983:34;;3874:151;;;;:::o;11170:58::-;;;;:::o;13881:95::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13960:8:::1;13947:10;;:21;;;;;;;;;;;;;;;;;;13881:95:::0;:::o;11905:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;14984:494::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15136:4:::1;15084:47;15127:3;15084:38;15106:12;15119:1;15106:15;;;;;;;;:::i;:::-;;;;;;;;;;15084:14;15099:1;15084:17;;;;;;;;:::i;:::-;;;;;;;;;;:21;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;:56;;15076:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;15242:4;15190:48;15233:4;15190:38;15212:12;15225:1;15212:15;;;;;;;;:::i;:::-;;;;;;;;;;15190:14;15205:1;15190:17;;;;;;;;:::i;:::-;;;;;;;;;;:21;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;:56;;15182:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15349:4;15297:47;15340:3;15297:38;15319:12;15332:1;15319:15;;;;;;;;:::i;:::-;;;;;;;;;;15297:14;15312:1;15297:17;;;;;;;;:::i;:::-;;;;;;;;;;:21;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;:56;;15289:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;15417:3;15399:12;15412:1;15399:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;15443:4;15425:12;15438:1;15425:15;;;;;;;;:::i;:::-;;;;;;;;;:22;;;;15470:3;15452:12;15465:1;15452:15;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;14984:494:::0;;;:::o;13467:199::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13555:13:::1;:11;:13::i;:::-;13545:6;:23;;:54;;;;;13582:17;13572:6;:27;;13545:54;13537:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13652:6;13638:11;:20;;;;13467:199:::0;:::o;1709:244::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1818:1:::1;1798:22;;:8;:22;;;;1790:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1908:8;1879:38;;1900:6;;;;;;;;;;;1879:38;;;;;;;;;;;;1937:8;1928:6;;:17;;;;;;;;;;;;;;;;;;1709:244:::0;:::o;16898:203::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17021:1:::1;16999:24;;:10;:24;;;;16991:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17083:10;17059:21;;:34;;;;;;;;;;;;;;;;;;16898:203:::0;:::o;8330:179::-;8388:7;8408:9;8424:1;8420;:5;;;;:::i;:::-;8408:17;;8449:1;8444;:6;;8436:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8500:1;8493:8;;;8330:179;;;;:::o;752:115::-;805:15;848:10;833:26;;752:115;:::o;5969:344::-;6088:1;6071:19;;:5;:19;;;;6063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6169:1;6150:21;;:7;:21;;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6251:6;6221:11;:18;6233:5;6221:18;;;;;;;;;;;;;;;:27;6240:7;6221:27;;;;;;;;;;;;;;;:36;;;;6289:7;6273:32;;6282:5;6273:32;;;6298:6;6273:32;;;;;;:::i;:::-;;;;;;;;5969:344;;;:::o;17627:3010::-;17741:1;17725:18;;:4;:18;;;;17717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17818:1;17804:16;;:2;:16;;;;17796:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17874:13;:19;17888:4;17874:19;;;;;;;;;;;;;;;;;;;;;;;;;17873:20;17865:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17945:13;:17;17959:2;17945:17;;;;;;;;;;;;;;;;;;;;;;;;;17944:18;17936:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18021:25;:31;18047:4;18021:31;;;;;;;;;;;;;;;;;;;;;;;;;18017:129;;18084:11;;18074:6;:21;;18066:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18017:129;18159:28;:34;18188:4;18159:34;;;;;;;;;;;;;;;;;;;;;;;;;18158:35;:71;;;;;18198:25;:31;18224:4;18198:31;;;;;;;;;;;;;;;;;;;;;;;;;18197:32;18158:71;:104;;;;;18233:25;:29;18259:2;18233:29;;;;;;;;;;;;;;;;;;;;;;;;;18158:104;18154:330;;;18332:13;;18286:42;18321:6;18286:14;:24;18301:8;:6;:8::i;:::-;18286:24;;;;;;;;;;;:30;18311:4;18286:30;;;;;;;;;;;;;;;;:34;;:42;;;;:::i;:::-;:59;;18278:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;18436:42;18471:6;18436:14;:24;18451:8;:6;:8::i;:::-;18436:24;;;;;;;;;;;:30;18461:4;18436:30;;;;;;;;;;;;;;;;:34;;:42;;;;:::i;:::-;18403:14;:24;18418:8;:6;:8::i;:::-;18403:24;;;;;;;;;;;:30;18428:4;18403:30;;;;;;;;;;;;;;;:75;;;;18154:330;18492:28;18523:24;18541:4;18523:9;:24::i;:::-;18492:55;;18552:12;18591:18;;18567:20;:42;;18552:57;;18623:8;;;;;;;;;;;18622:9;:20;;;;;18635:7;18622:20;:34;;;;;18646:10;;;;;;;;;;;18622:34;:67;;;;;18660:25;:29;18686:2;18660:29;;;;;;;;;;;;;;;;;;;;;;;;;18622:67;18618:1516;;;18708:4;18697:8;;:15;;;;;;;;;;;;;;;;;;18723:26;18752:19;;18723:48;;18777:24;18806:17;;18777:46;;18829:24;18858:17;;18829:46;;18881:21;18910:23;18931:1;18910:16;:20;;:23;;;;:::i;:::-;18881:52;;18944:19;18966:59;19011:13;18966:40;18989:16;18966:18;:22;;:40;;;;:::i;:::-;:44;;:59;;;;:::i;:::-;18944:81;;19045:22;19070:21;19045:46;;19100:36;19117:18;;19100:16;:36::i;:::-;19142:18;19163:41;19189:14;19163:21;:25;;:41;;;;:::i;:::-;19142:62;;19215:21;19242:49;19279:11;19242:32;19257:16;19242:10;:14;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;19215:76;;19297:21;19324:46;19358:11;19324:29;19339:13;19324:10;:14;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;19297:73;;19376:23;19403:48;19437:13;19403:29;19418:13;19403:10;:14;;:29;;;;:::i;:::-;:33;;:48;;;;:::i;:::-;19376:75;;19481:1;19465:13;:17;19462:206;;;19507:19;;;;;;;;;;;19499:37;;:52;19537:13;19499:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19581:80;19603:57;19648:11;19603:40;19626:16;19603:18;;:22;;:40;;;;:::i;:::-;:44;;:57;;;;:::i;:::-;19581:17;;:21;;:80;;;;:::i;:::-;19561:17;:100;;;;19462:206;19697:1;19681:13;:17;19678:196;;;19715:42;19728:13;19743;19715:12;:42::i;:::-;19787:80;19809:57;19854:11;19809:40;19832:16;19809:18;;:22;;:40;;;;:::i;:::-;:44;;:57;;;;:::i;:::-;19787:17;;:21;;:80;;;;:::i;:::-;19767:17;:100;;;;19678:196;19905:1;19887:15;:19;19884:218;;;19931:21;;;;;;;;;;;19923:39;;:56;19963:15;19923:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20011:84;20035:59;20082:11;20035:42;20058:18;20035;;:22;;:42;;;;:::i;:::-;:46;;:59;;;;:::i;:::-;20011:19;;:23;;:84;;;;:::i;:::-;19989:19;:106;;;;19884:218;20123:5;20112:8;;:16;;;;;;;;;;;;;;;;;;18691:1443;;;;;;;;;;18618:1516;20148:12;20164:8;;;;;;;;;;;20163:9;20148:24;;20180:18;:24;20199:4;20180:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;20208:18;:22;20227:2;20208:22;;;;;;;;;;;;;;;;;;;;;;;;;20180:50;20177:101;;;20261:5;20251:15;;20177:101;20289:7;20286:300;;;20311:14;20343:117;20354:6;20362:25;:29;20388:2;20362:29;;;;;;;;;;;;;;;;;;;;;;;;;20394:25;:31;20420:4;20394:31;;;;;;;;;;;;;;;;;;;;;;;;;20393:32;:66;;;;;20430:25;:29;20456:2;20430:29;;;;;;;;;;;;;;;;;;;;;;;;;20429:30;20393:66;20343:10;:117::i;:::-;20334:126;;20478:1;20469:6;:10;20466:115;;;20494:44;20510:4;20524;20531:6;20494:15;:44::i;:::-;20556:18;20567:6;20556;:10;;:18;;;;:::i;:::-;20547:27;;20466:115;20302:284;20286:300;20596:33;20612:4;20618:2;20622:6;20596:15;:33::i;:::-;17706:2931;;;17627:3010;;;:::o;9236:166::-;9322:7;9355:1;9350;:6;;9358:12;9342:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9393:1;9389;:5;;;;:::i;:::-;9382:12;;9236:166;;;;;:::o;16586:306::-;16712:5;16677:40;;:25;:31;16703:4;16677:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;16669:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;16823:5;16789:25;:31;16815:4;16789:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16878:5;16844:40;;16872:4;16844:40;;;;;;;;;;;;16586:306;;:::o;22596:103::-;22636:7;22662:29;22682:8;22662:15;:19;;:29;;;;:::i;:::-;22655:36;;22596:103;:::o;8914:153::-;8972:7;9004:1;9000;:5;8992:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9058:1;9054;:5;;;;:::i;:::-;9047:12;;8914:153;;;;:::o;21829:475::-;21895:21;21933:1;21919:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21895:40;;21964:4;21946;21951:1;21946:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21990:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21980:4;21985:1;21980:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22027:62;22044:4;22059:15;;;;;;;;;;;22077:11;22027:8;:62::i;:::-;22100:15;;;;;;;;;;;:66;;;22181:11;22207:1;22223:4;22250;22270:15;22100:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21884:420;21829:475;:::o;8518:158::-;8576:7;8609:1;8604;:6;;8596:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8667:1;8663;:5;;;;:::i;:::-;8656:12;;8518:158;;;;:::o;8685:220::-;8743:7;8772:1;8767;:6;8763:20;;;8782:1;8775:8;;;;8763:20;8794:9;8810:1;8806;:5;;;;:::i;:::-;8794:17;;8839:1;8834;8830;:5;;;;:::i;:::-;:10;8822:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8896:1;8889:8;;;8685:220;;;;;:::o;21456:367::-;21537:62;21554:4;21569:15;;;;;;;;;;;21587:11;21537:8;:62::i;:::-;21610:15;;;;;;;;;;;:31;;;21649:9;21682:4;21702:11;21728:1;21745;21769:4;21789:15;21610:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21456:367;;:::o;20643:807::-;20717:7;20737:16;20768:23;20794:93;20881:5;20794:82;20805:3;:70;;20831:4;:44;;20858:14;20873:1;20858:17;;;;;;;;:::i;:::-;;;;;;;;;;20831:44;;;20838:14;20853:1;20838:17;;;;;;;;:::i;:::-;;;;;;;;;;20831:44;20805:70;;;20811:14;20826:1;20811:17;;;;;;;;:::i;:::-;;;;;;;;;;20805:70;20794:6;:10;;:82;;;;:::i;:::-;:86;;:93;;;;:::i;:::-;20768:119;;20923:40;20947:15;20923:19;;:23;;:40;;;;:::i;:::-;20901:19;:62;;;;20972:21;20996:87;21077:5;20996:76;21007:3;:64;;21031:4;:40;;21056:12;21069:1;21056:15;;;;;;;;:::i;:::-;;;;;;;;;;21031:40;;;21038:12;21051:1;21038:15;;;;;;;;:::i;:::-;;;;;;;;;;21031:40;21007:64;;;21013:12;21026:1;21013:15;;;;;;;;:::i;:::-;;;;;;;;;;21007:64;20996:6;:10;;:76;;;;:::i;:::-;:80;;:87;;;;:::i;:::-;20972:111;;21117:36;21139:13;21117:17;;:21;;:36;;;;:::i;:::-;21097:17;:56;;;;21162:21;21186:87;21267:5;21186:76;21197:3;:64;;21221:4;:40;;21246:12;21259:1;21246:15;;;;;;;;:::i;:::-;;;;;;;;;;21221:40;;;21228:12;21241:1;21228:15;;;;;;;;:::i;:::-;;;;;;;;;;21221:40;21197:64;;;21203:12;21216:1;21203:15;;;;;;;;:::i;:::-;;;;;;;;;;21197:64;21186:6;:10;;:76;;;;:::i;:::-;:80;;:87;;;;:::i;:::-;21162:111;;21307:36;21329:13;21307:17;;:21;;:36;;;;:::i;:::-;21287:17;:56;;;;21363:53;21402:13;21363:34;21383:13;21363:15;:19;;:34;;;;:::i;:::-;:38;;:53;;;;:::i;:::-;21352:64;;21434:8;21427:15;;;;;;20643:807;;;;;:::o;5042:535::-;5166:1;5148:20;;:6;:20;;;;5140:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5250:1;5229:23;;:9;:23;;;;5221:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5303:47;5324:6;5332:9;5343:6;5303:20;:47::i;:::-;5381:71;5403:6;5381:71;;;;;;;;;;;;;;;;;:9;:17;5391:6;5381:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5361:9;:17;5371:6;5361:17;;;;;;;;;;;;;;;:91;;;;5486:32;5511:6;5486:9;:20;5496:9;5486:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5463:9;:20;5473:9;5463:20;;;;;;;;;;;;;;;:55;;;;5551:9;5534:35;;5543:6;5534:35;;;5562:6;5534:35;;;;;;:::i;:::-;;;;;;;;5042:535;;;:::o;6429:92::-;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:152::-;4268:9;4301:37;4332:5;4301:37;:::i;:::-;4288:50;;4192:152;;;:::o;4350:183::-;4463:63;4520:5;4463:63;:::i;:::-;4458:3;4451:76;4350:183;;:::o;4539:274::-;4658:4;4696:2;4685:9;4681:18;4673:26;;4709:97;4803:1;4792:9;4788:17;4779:6;4709:97;:::i;:::-;4539:274;;;;:::o;4819:118::-;4906:24;4924:5;4906:24;:::i;:::-;4901:3;4894:37;4819:118;;:::o;4943:222::-;5036:4;5074:2;5063:9;5059:18;5051:26;;5087:71;5155:1;5144:9;5140:17;5131:6;5087:71;:::i;:::-;4943:222;;;;:::o;5171:619::-;5248:6;5256;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5694:2;5720:53;5765:7;5756:6;5745:9;5741:22;5720:53;:::i;:::-;5710:63;;5665:118;5171:619;;;;;:::o;5796:329::-;5855:6;5904:2;5892:9;5883:7;5879:23;5875:32;5872:119;;;5910:79;;:::i;:::-;5872:119;6030:1;6055:53;6100:7;6091:6;6080:9;6076:22;6055:53;:::i;:::-;6045:63;;6001:117;5796:329;;;;:::o;6131:86::-;6166:7;6206:4;6199:5;6195:16;6184:27;;6131:86;;;:::o;6223:112::-;6306:22;6322:5;6306:22;:::i;:::-;6301:3;6294:35;6223:112;;:::o;6341:214::-;6430:4;6468:2;6457:9;6453:18;6445:26;;6481:67;6545:1;6534:9;6530:17;6521:6;6481:67;:::i;:::-;6341:214;;;;:::o;6561:329::-;6620:6;6669:2;6657:9;6648:7;6644:23;6640:32;6637:119;;;6675:79;;:::i;:::-;6637:119;6795:1;6820:53;6865:7;6856:6;6845:9;6841:22;6820:53;:::i;:::-;6810:63;;6766:117;6561:329;;;;:::o;6896:619::-;6973:6;6981;6989;7038:2;7026:9;7017:7;7013:23;7009:32;7006:119;;;7044:79;;:::i;:::-;7006:119;7164:1;7189:53;7234:7;7225:6;7214:9;7210:22;7189:53;:::i;:::-;7179:63;;7135:117;7291:2;7317:53;7362:7;7353:6;7342:9;7338:22;7317:53;:::i;:::-;7307:63;;7262:118;7419:2;7445:53;7490:7;7481:6;7470:9;7466:22;7445:53;:::i;:::-;7435:63;;7390:118;6896:619;;;;;:::o;7521:116::-;7591:21;7606:5;7591:21;:::i;:::-;7584:5;7581:32;7571:60;;7627:1;7624;7617:12;7571:60;7521:116;:::o;7643:133::-;7686:5;7724:6;7711:20;7702:29;;7740:30;7764:5;7740:30;:::i;:::-;7643:133;;;;:::o;7782:468::-;7847:6;7855;7904:2;7892:9;7883:7;7879:23;7875:32;7872:119;;;7910:79;;:::i;:::-;7872:119;8030:1;8055:53;8100:7;8091:6;8080:9;8076:22;8055:53;:::i;:::-;8045:63;;8001:117;8157:2;8183:50;8225:7;8216:6;8205:9;8201:22;8183:50;:::i;:::-;8173:60;;8128:115;7782:468;;;;;:::o;8256:104::-;8301:7;8330:24;8348:5;8330:24;:::i;:::-;8319:35;;8256:104;;;:::o;8366:138::-;8447:32;8473:5;8447:32;:::i;:::-;8440:5;8437:43;8427:71;;8494:1;8491;8484:12;8427:71;8366:138;:::o;8510:155::-;8564:5;8602:6;8589:20;8580:29;;8618:41;8653:5;8618:41;:::i;:::-;8510:155;;;;:::o;8671:345::-;8738:6;8787:2;8775:9;8766:7;8762:23;8758:32;8755:119;;;8793:79;;:::i;:::-;8755:119;8913:1;8938:61;8991:7;8982:6;8971:9;8967:22;8938:61;:::i;:::-;8928:71;;8884:125;8671:345;;;;:::o;9022:474::-;9090:6;9098;9147:2;9135:9;9126:7;9122:23;9118:32;9115:119;;;9153:79;;:::i;:::-;9115:119;9273:1;9298:53;9343:7;9334:6;9323:9;9319:22;9298:53;:::i;:::-;9288:63;;9244:117;9400:2;9426:53;9471:7;9462:6;9451:9;9447:22;9426:53;:::i;:::-;9416:63;;9371:118;9022:474;;;;;:::o;9502:::-;9570:6;9578;9627:2;9615:9;9606:7;9602:23;9598:32;9595:119;;;9633:79;;:::i;:::-;9595:119;9753:1;9778:53;9823:7;9814:6;9803:9;9799:22;9778:53;:::i;:::-;9768:63;;9724:117;9880:2;9906:53;9951:7;9942:6;9931:9;9927:22;9906:53;:::i;:::-;9896:63;;9851:118;9502:474;;;;;:::o;9982:323::-;10038:6;10087:2;10075:9;10066:7;10062:23;10058:32;10055:119;;;10093:79;;:::i;:::-;10055:119;10213:1;10238:50;10280:7;10271:6;10260:9;10256:22;10238:50;:::i;:::-;10228:60;;10184:114;9982:323;;;;:::o;10311:180::-;10359:77;10356:1;10349:88;10456:4;10453:1;10446:15;10480:4;10477:1;10470:15;10497:320;10541:6;10578:1;10572:4;10568:12;10558:22;;10625:1;10619:4;10615:12;10646:18;10636:81;;10702:4;10694:6;10690:17;10680:27;;10636:81;10764:2;10756:6;10753:14;10733:18;10730:38;10727:84;;;10783:18;;:::i;:::-;10727:84;10548:269;10497:320;;;:::o;10823:182::-;10963:34;10959:1;10951:6;10947:14;10940:58;10823:182;:::o;11011:366::-;11153:3;11174:67;11238:2;11233:3;11174:67;:::i;:::-;11167:74;;11250:93;11339:3;11250:93;:::i;:::-;11368:2;11363:3;11359:12;11352:19;;11011:366;;;:::o;11383:419::-;11549:4;11587:2;11576:9;11572:18;11564:26;;11636:9;11630:4;11626:20;11622:1;11611:9;11607:17;11600:47;11664:131;11790:4;11664:131;:::i;:::-;11656:139;;11383:419;;;:::o;11808:172::-;11948:24;11944:1;11936:6;11932:14;11925:48;11808:172;:::o;11986:366::-;12128:3;12149:67;12213:2;12208:3;12149:67;:::i;:::-;12142:74;;12225:93;12314:3;12225:93;:::i;:::-;12343:2;12338:3;12334:12;12327:19;;11986:366;;;:::o;12358:419::-;12524:4;12562:2;12551:9;12547:18;12539:26;;12611:9;12605:4;12601:20;12597:1;12586:9;12582:17;12575:47;12639:131;12765:4;12639:131;:::i;:::-;12631:139;;12358:419;;;:::o;12783:180::-;12831:77;12828:1;12821:88;12928:4;12925:1;12918:15;12952:4;12949:1;12942:15;12969:181;13109:33;13105:1;13097:6;13093:14;13086:57;12969:181;:::o;13156:366::-;13298:3;13319:67;13383:2;13378:3;13319:67;:::i;:::-;13312:74;;13395:93;13484:3;13395:93;:::i;:::-;13513:2;13508:3;13504:12;13497:19;;13156:366;;;:::o;13528:419::-;13694:4;13732:2;13721:9;13717:18;13709:26;;13781:9;13775:4;13771:20;13767:1;13756:9;13752:17;13745:47;13809:131;13935:4;13809:131;:::i;:::-;13801:139;;13528:419;;;:::o;13953:182::-;14093:34;14089:1;14081:6;14077:14;14070:58;13953:182;:::o;14141:366::-;14283:3;14304:67;14368:2;14363:3;14304:67;:::i;:::-;14297:74;;14380:93;14469:3;14380:93;:::i;:::-;14498:2;14493:3;14489:12;14482:19;;14141:366;;;:::o;14513:419::-;14679:4;14717:2;14706:9;14702:18;14694:26;;14766:9;14760:4;14756:20;14752:1;14741:9;14737:17;14730:47;14794:131;14920:4;14794:131;:::i;:::-;14786:139;;14513:419;;;:::o;14938:181::-;15078:33;15074:1;15066:6;15062:14;15055:57;14938:181;:::o;15125:366::-;15267:3;15288:67;15352:2;15347:3;15288:67;:::i;:::-;15281:74;;15364:93;15453:3;15364:93;:::i;:::-;15482:2;15477:3;15473:12;15466:19;;15125:366;;;:::o;15497:419::-;15663:4;15701:2;15690:9;15686:18;15678:26;;15750:9;15744:4;15740:20;15736:1;15725:9;15721:17;15714:47;15778:131;15904:4;15778:131;:::i;:::-;15770:139;;15497:419;;;:::o;15922:235::-;16062:34;16058:1;16050:6;16046:14;16039:58;16131:18;16126:2;16118:6;16114:15;16107:43;15922:235;:::o;16163:366::-;16305:3;16326:67;16390:2;16385:3;16326:67;:::i;:::-;16319:74;;16402:93;16491:3;16402:93;:::i;:::-;16520:2;16515:3;16511:12;16504:19;;16163:366;;;:::o;16535:419::-;16701:4;16739:2;16728:9;16724:18;16716:26;;16788:9;16782:4;16778:20;16774:1;16763:9;16759:17;16752:47;16816:131;16942:4;16816:131;:::i;:::-;16808:139;;16535:419;;;:::o;16960:248::-;17100:34;17096:1;17088:6;17084:14;17077:58;17169:31;17164:2;17156:6;17152:15;17145:56;16960:248;:::o;17214:366::-;17356:3;17377:67;17441:2;17436:3;17377:67;:::i;:::-;17370:74;;17453:93;17542:3;17453:93;:::i;:::-;17571:2;17566:3;17562:12;17555:19;;17214:366;;;:::o;17586:419::-;17752:4;17790:2;17779:9;17775:18;17767:26;;17839:9;17833:4;17829:20;17825:1;17814:9;17810:17;17803:47;17867:131;17993:4;17867:131;:::i;:::-;17859:139;;17586:419;;;:::o;18011:289::-;18151:34;18147:1;18139:6;18135:14;18128:58;18220:34;18215:2;18207:6;18203:15;18196:59;18289:3;18284:2;18276:6;18272:15;18265:28;18011:289;:::o;18306:366::-;18448:3;18469:67;18533:2;18528:3;18469:67;:::i;:::-;18462:74;;18545:93;18634:3;18545:93;:::i;:::-;18663:2;18658:3;18654:12;18647:19;;18306:366;;;:::o;18678:419::-;18844:4;18882:2;18871:9;18867:18;18859:26;;18931:9;18925:4;18921:20;18917:1;18906:9;18902:17;18895:47;18959:131;19085:4;18959:131;:::i;:::-;18951:139;;18678:419;;;:::o;19103:332::-;19224:4;19262:2;19251:9;19247:18;19239:26;;19275:71;19343:1;19332:9;19328:17;19319:6;19275:71;:::i;:::-;19356:72;19424:2;19413:9;19409:18;19400:6;19356:72;:::i;:::-;19103:332;;;;;:::o;19441:137::-;19495:5;19526:6;19520:13;19511:22;;19542:30;19566:5;19542:30;:::i;:::-;19441:137;;;;:::o;19584:345::-;19651:6;19700:2;19688:9;19679:7;19675:23;19671:32;19668:119;;;19706:79;;:::i;:::-;19668:119;19826:1;19851:61;19904:7;19895:6;19884:9;19880:22;19851:61;:::i;:::-;19841:71;;19797:125;19584:345;;;;:::o;19935:226::-;20075:34;20071:1;20063:6;20059:14;20052:58;20144:9;20139:2;20131:6;20127:15;20120:34;19935:226;:::o;20167:366::-;20309:3;20330:67;20394:2;20389:3;20330:67;:::i;:::-;20323:74;;20406:93;20495:3;20406:93;:::i;:::-;20524:2;20519:3;20515:12;20508:19;;20167:366;;;:::o;20539:419::-;20705:4;20743:2;20732:9;20728:18;20720:26;;20792:9;20786:4;20782:20;20778:1;20767:9;20763:17;20756:47;20820:131;20946:4;20820:131;:::i;:::-;20812:139;;20539:419;;;:::o;20964:229::-;21104:34;21100:1;21092:6;21088:14;21081:58;21173:12;21168:2;21160:6;21156:15;21149:37;20964:229;:::o;21199:366::-;21341:3;21362:67;21426:2;21421:3;21362:67;:::i;:::-;21355:74;;21438:93;21527:3;21438:93;:::i;:::-;21556:2;21551:3;21547:12;21540:19;;21199:366;;;:::o;21571:419::-;21737:4;21775:2;21764:9;21760:18;21752:26;;21824:9;21818:4;21814:20;21810:1;21799:9;21795:17;21788:47;21852:131;21978:4;21852:131;:::i;:::-;21844:139;;21571:419;;;:::o;21996:174::-;22136:26;22132:1;22124:6;22120:14;22113:50;21996:174;:::o;22176:366::-;22318:3;22339:67;22403:2;22398:3;22339:67;:::i;:::-;22332:74;;22415:93;22504:3;22415:93;:::i;:::-;22533:2;22528:3;22524:12;22517:19;;22176:366;;;:::o;22548:419::-;22714:4;22752:2;22741:9;22737:18;22729:26;;22801:9;22795:4;22791:20;22787:1;22776:9;22772:17;22765:47;22829:131;22955:4;22829:131;:::i;:::-;22821:139;;22548:419;;;:::o;22973:225::-;23113:34;23109:1;23101:6;23097:14;23090:58;23182:8;23177:2;23169:6;23165:15;23158:33;22973:225;:::o;23204:366::-;23346:3;23367:67;23431:2;23426:3;23367:67;:::i;:::-;23360:74;;23443:93;23532:3;23443:93;:::i;:::-;23561:2;23556:3;23552:12;23545:19;;23204:366;;;:::o;23576:419::-;23742:4;23780:2;23769:9;23765:18;23757:26;;23829:9;23823:4;23819:20;23815:1;23804:9;23800:17;23793:47;23857:131;23983:4;23857:131;:::i;:::-;23849:139;;23576:419;;;:::o;24001:180::-;24049:77;24046:1;24039:88;24146:4;24143:1;24136:15;24170:4;24167:1;24160:15;24187:305;24227:3;24246:20;24264:1;24246:20;:::i;:::-;24241:25;;24280:20;24298:1;24280:20;:::i;:::-;24275:25;;24434:1;24366:66;24362:74;24359:1;24356:81;24353:107;;;24440:18;;:::i;:::-;24353:107;24484:1;24481;24477:9;24470:16;;24187:305;;;;:::o;24498:177::-;24638:29;24634:1;24626:6;24622:14;24615:53;24498:177;:::o;24681:366::-;24823:3;24844:67;24908:2;24903:3;24844:67;:::i;:::-;24837:74;;24920:93;25009:3;24920:93;:::i;:::-;25038:2;25033:3;25029:12;25022:19;;24681:366;;;:::o;25053:419::-;25219:4;25257:2;25246:9;25242:18;25234:26;;25306:9;25300:4;25296:20;25292:1;25281:9;25277:17;25270:47;25334:131;25460:4;25334:131;:::i;:::-;25326:139;;25053:419;;;:::o;25478:223::-;25618:34;25614:1;25606:6;25602:14;25595:58;25687:6;25682:2;25674:6;25670:15;25663:31;25478:223;:::o;25707:366::-;25849:3;25870:67;25934:2;25929:3;25870:67;:::i;:::-;25863:74;;25946:93;26035:3;25946:93;:::i;:::-;26064:2;26059:3;26055:12;26048:19;;25707:366;;;:::o;26079:419::-;26245:4;26283:2;26272:9;26268:18;26260:26;;26332:9;26326:4;26322:20;26318:1;26307:9;26303:17;26296:47;26360:131;26486:4;26360:131;:::i;:::-;26352:139;;26079:419;;;:::o;26504:221::-;26644:34;26640:1;26632:6;26628:14;26621:58;26713:4;26708:2;26700:6;26696:15;26689:29;26504:221;:::o;26731:366::-;26873:3;26894:67;26958:2;26953:3;26894:67;:::i;:::-;26887:74;;26970:93;27059:3;26970:93;:::i;:::-;27088:2;27083:3;27079:12;27072:19;;26731:366;;;:::o;27103:419::-;27269:4;27307:2;27296:9;27292:18;27284:26;;27356:9;27350:4;27346:20;27342:1;27331:9;27327:17;27320:47;27384:131;27510:4;27384:131;:::i;:::-;27376:139;;27103:419;;;:::o;27528:224::-;27668:34;27664:1;27656:6;27652:14;27645:58;27737:7;27732:2;27724:6;27720:15;27713:32;27528:224;:::o;27758:366::-;27900:3;27921:67;27985:2;27980:3;27921:67;:::i;:::-;27914:74;;27997:93;28086:3;27997:93;:::i;:::-;28115:2;28110:3;28106:12;28099:19;;27758:366;;;:::o;28130:419::-;28296:4;28334:2;28323:9;28319:18;28311:26;;28383:9;28377:4;28373:20;28369:1;28358:9;28354:17;28347:47;28411:131;28537:4;28411:131;:::i;:::-;28403:139;;28130:419;;;:::o;28555:222::-;28695:34;28691:1;28683:6;28679:14;28672:58;28764:5;28759:2;28751:6;28747:15;28740:30;28555:222;:::o;28783:366::-;28925:3;28946:67;29010:2;29005:3;28946:67;:::i;:::-;28939:74;;29022:93;29111:3;29022:93;:::i;:::-;29140:2;29135:3;29131:12;29124:19;;28783:366;;;:::o;29155:419::-;29321:4;29359:2;29348:9;29344:18;29336:26;;29408:9;29402:4;29398:20;29394:1;29383:9;29379:17;29372:47;29436:131;29562:4;29436:131;:::i;:::-;29428:139;;29155:419;;;:::o;29580:220::-;29720:34;29716:1;29708:6;29704:14;29697:58;29789:3;29784:2;29776:6;29772:15;29765:28;29580:220;:::o;29806:366::-;29948:3;29969:67;30033:2;30028:3;29969:67;:::i;:::-;29962:74;;30045:93;30134:3;30045:93;:::i;:::-;30163:2;30158:3;30154:12;30147:19;;29806:366;;;:::o;30178:419::-;30344:4;30382:2;30371:9;30367:18;30359:26;;30431:9;30425:4;30421:20;30417:1;30406:9;30402:17;30395:47;30459:131;30585:4;30459:131;:::i;:::-;30451:139;;30178:419;;;:::o;30603:222::-;30743:34;30739:1;30731:6;30727:14;30720:58;30812:5;30807:2;30799:6;30795:15;30788:30;30603:222;:::o;30831:366::-;30973:3;30994:67;31058:2;31053:3;30994:67;:::i;:::-;30987:74;;31070:93;31159:3;31070:93;:::i;:::-;31188:2;31183:3;31179:12;31172:19;;30831:366;;;:::o;31203:419::-;31369:4;31407:2;31396:9;31392:18;31384:26;;31456:9;31450:4;31446:20;31442:1;31431:9;31427:17;31420:47;31484:131;31610:4;31484:131;:::i;:::-;31476:139;;31203:419;;;:::o;31628:227::-;31768:34;31764:1;31756:6;31752:14;31745:58;31837:10;31832:2;31824:6;31820:15;31813:35;31628:227;:::o;31861:366::-;32003:3;32024:67;32088:2;32083:3;32024:67;:::i;:::-;32017:74;;32100:93;32189:3;32100:93;:::i;:::-;32218:2;32213:3;32209:12;32202:19;;31861:366;;;:::o;32233:419::-;32399:4;32437:2;32426:9;32422:18;32414:26;;32486:9;32480:4;32476:20;32472:1;32461:9;32457:17;32450:47;32514:131;32640:4;32514:131;:::i;:::-;32506:139;;32233:419;;;:::o;32658:233::-;32798:34;32794:1;32786:6;32782:14;32775:58;32867:16;32862:2;32854:6;32850:15;32843:41;32658:233;:::o;32897:366::-;33039:3;33060:67;33124:2;33119:3;33060:67;:::i;:::-;33053:74;;33136:93;33225:3;33136:93;:::i;:::-;33254:2;33249:3;33245:12;33238:19;;32897:366;;;:::o;33269:419::-;33435:4;33473:2;33462:9;33458:18;33450:26;;33522:9;33516:4;33512:20;33508:1;33497:9;33493:17;33486:47;33550:131;33676:4;33550:131;:::i;:::-;33542:139;;33269:419;;;:::o;33694:191::-;33734:4;33754:20;33772:1;33754:20;:::i;:::-;33749:25;;33788:20;33806:1;33788:20;:::i;:::-;33783:25;;33827:1;33824;33821:8;33818:34;;;33832:18;;:::i;:::-;33818:34;33877:1;33874;33870:9;33862:17;;33694:191;;;;:::o;33891:243::-;34031:34;34027:1;34019:6;34015:14;34008:58;34100:26;34095:2;34087:6;34083:15;34076:51;33891:243;:::o;34140:366::-;34282:3;34303:67;34367:2;34362:3;34303:67;:::i;:::-;34296:74;;34379:93;34468:3;34379:93;:::i;:::-;34497:2;34492:3;34488:12;34481:19;;34140:366;;;:::o;34512:419::-;34678:4;34716:2;34705:9;34701:18;34693:26;;34765:9;34759:4;34755:20;34751:1;34740:9;34736:17;34729:47;34793:131;34919:4;34793:131;:::i;:::-;34785:139;;34512:419;;;:::o;34937:176::-;35077:28;35073:1;35065:6;35061:14;35054:52;34937:176;:::o;35119:366::-;35261:3;35282:67;35346:2;35341:3;35282:67;:::i;:::-;35275:74;;35358:93;35447:3;35358:93;:::i;:::-;35476:2;35471:3;35467:12;35460:19;;35119:366;;;:::o;35491:419::-;35657:4;35695:2;35684:9;35680:18;35672:26;;35744:9;35738:4;35734:20;35730:1;35719:9;35715:17;35708:47;35772:131;35898:4;35772:131;:::i;:::-;35764:139;;35491:419;;;:::o;35916:180::-;35964:77;35961:1;35954:88;36061:4;36058:1;36051:15;36085:4;36082:1;36075:15;36102:185;36142:1;36159:20;36177:1;36159:20;:::i;:::-;36154:25;;36193:20;36211:1;36193:20;:::i;:::-;36188:25;;36232:1;36222:35;;36237:18;;:::i;:::-;36222:35;36279:1;36276;36272:9;36267:14;;36102:185;;;;:::o;36293:180::-;36341:77;36338:1;36331:88;36438:4;36435:1;36428:15;36462:4;36459:1;36452:15;36479:143;36536:5;36567:6;36561:13;36552:22;;36583:33;36610:5;36583:33;:::i;:::-;36479:143;;;;:::o;36628:351::-;36698:6;36747:2;36735:9;36726:7;36722:23;36718:32;36715:119;;;36753:79;;:::i;:::-;36715:119;36873:1;36898:64;36954:7;36945:6;36934:9;36930:22;36898:64;:::i;:::-;36888:74;;36844:128;36628:351;;;;:::o;36985:85::-;37030:7;37059:5;37048:16;;36985:85;;;:::o;37076:158::-;37134:9;37167:61;37185:42;37194:32;37220:5;37194:32;:::i;:::-;37185:42;:::i;:::-;37167:61;:::i;:::-;37154:74;;37076:158;;;:::o;37240:147::-;37335:45;37374:5;37335:45;:::i;:::-;37330:3;37323:58;37240:147;;:::o;37393:114::-;37460:6;37494:5;37488:12;37478:22;;37393:114;;;:::o;37513:184::-;37612:11;37646:6;37641:3;37634:19;37686:4;37681:3;37677:14;37662:29;;37513:184;;;;:::o;37703:132::-;37770:4;37793:3;37785:11;;37823:4;37818:3;37814:14;37806:22;;37703:132;;;:::o;37841:108::-;37918:24;37936:5;37918:24;:::i;:::-;37913:3;37906:37;37841:108;;:::o;37955:179::-;38024:10;38045:46;38087:3;38079:6;38045:46;:::i;:::-;38123:4;38118:3;38114:14;38100:28;;37955:179;;;;:::o;38140:113::-;38210:4;38242;38237:3;38233:14;38225:22;;38140:113;;;:::o;38289:732::-;38408:3;38437:54;38485:5;38437:54;:::i;:::-;38507:86;38586:6;38581:3;38507:86;:::i;:::-;38500:93;;38617:56;38667:5;38617:56;:::i;:::-;38696:7;38727:1;38712:284;38737:6;38734:1;38731:13;38712:284;;;38813:6;38807:13;38840:63;38899:3;38884:13;38840:63;:::i;:::-;38833:70;;38926:60;38979:6;38926:60;:::i;:::-;38916:70;;38772:224;38759:1;38756;38752:9;38747:14;;38712:284;;;38716:14;39012:3;39005:10;;38413:608;;;38289:732;;;;:::o;39027:831::-;39290:4;39328:3;39317:9;39313:19;39305:27;;39342:71;39410:1;39399:9;39395:17;39386:6;39342:71;:::i;:::-;39423:80;39499:2;39488:9;39484:18;39475:6;39423:80;:::i;:::-;39550:9;39544:4;39540:20;39535:2;39524:9;39520:18;39513:48;39578:108;39681:4;39672:6;39578:108;:::i;:::-;39570:116;;39696:72;39764:2;39753:9;39749:18;39740:6;39696:72;:::i;:::-;39778:73;39846:3;39835:9;39831:19;39822:6;39778:73;:::i;:::-;39027:831;;;;;;;;:::o;39864:180::-;40004:32;40000:1;39992:6;39988:14;39981:56;39864:180;:::o;40050:366::-;40192:3;40213:67;40277:2;40272:3;40213:67;:::i;:::-;40206:74;;40289:93;40378:3;40289:93;:::i;:::-;40407:2;40402:3;40398:12;40391:19;;40050:366;;;:::o;40422:419::-;40588:4;40626:2;40615:9;40611:18;40603:26;;40675:9;40669:4;40665:20;40661:1;40650:9;40646:17;40639:47;40703:131;40829:4;40703:131;:::i;:::-;40695:139;;40422:419;;;:::o;40847:348::-;40887:7;40910:20;40928:1;40910:20;:::i;:::-;40905:25;;40944:20;40962:1;40944:20;:::i;:::-;40939:25;;41132:1;41064:66;41060:74;41057:1;41054:81;41049:1;41042:9;41035:17;41031:105;41028:131;;;41139:18;;:::i;:::-;41028:131;41187:1;41184;41180:9;41169:20;;40847:348;;;;:::o;41201:220::-;41341:34;41337:1;41329:6;41325:14;41318:58;41410:3;41405:2;41397:6;41393:15;41386:28;41201:220;:::o;41427:366::-;41569:3;41590:67;41654:2;41649:3;41590:67;:::i;:::-;41583:74;;41666:93;41755:3;41666:93;:::i;:::-;41784:2;41779:3;41775:12;41768:19;;41427:366;;;:::o;41799:419::-;41965:4;42003:2;41992:9;41988:18;41980:26;;42052:9;42046:4;42042:20;42038:1;42027:9;42023:17;42016:47;42080:131;42206:4;42080:131;:::i;:::-;42072:139;;41799:419;;;:::o;42224:807::-;42473:4;42511:3;42500:9;42496:19;42488:27;;42525:71;42593:1;42582:9;42578:17;42569:6;42525:71;:::i;:::-;42606:72;42674:2;42663:9;42659:18;42650:6;42606:72;:::i;:::-;42688:80;42764:2;42753:9;42749:18;42740:6;42688:80;:::i;:::-;42778;42854:2;42843:9;42839:18;42830:6;42778:80;:::i;:::-;42868:73;42936:3;42925:9;42921:19;42912:6;42868:73;:::i;:::-;42951;43019:3;43008:9;43004:19;42995:6;42951:73;:::i;:::-;42224:807;;;;;;;;;:::o;43037:143::-;43094:5;43125:6;43119:13;43110:22;;43141:33;43168:5;43141:33;:::i;:::-;43037:143;;;;:::o;43186:663::-;43274:6;43282;43290;43339:2;43327:9;43318:7;43314:23;43310:32;43307:119;;;43345:79;;:::i;:::-;43307:119;43465:1;43490:64;43546:7;43537:6;43526:9;43522:22;43490:64;:::i;:::-;43480:74;;43436:128;43603:2;43629:64;43685:7;43676:6;43665:9;43661:22;43629:64;:::i;:::-;43619:74;;43574:129;43742:2;43768:64;43824:7;43815:6;43804:9;43800:22;43768:64;:::i;:::-;43758:74;;43713:129;43186:663;;;;;:::o

Swarm Source

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