ETH Price: $2,745.27 (+1.44%)

Token

Crocilon (CROC)
 

Overview

Max Total Supply

10,000,000 CROC

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
145,593.104360977627277751 CROC

Value
$0.00
0x8872e559d179d6b4cb969c889259474adce32e89
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:
Crocilon

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-20
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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

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

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

interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += 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 += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), 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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

contract Crocilon is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 1_000 * 10e18;
    uint256 public maxTxAmount = 10_000_000 * 10**18;
    uint256 public maxWalletAmount = 200_000 * 10**18;
    
    address public marketingWallet = 0x329e64C06eD3f24b1Ddd4c6a9F0347f95D2fAaBD;
    address public devWallet = 0x329e64C06eD3f24b1Ddd4c6a9F0347f95D2fAaBD;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(20,0,5);
    Taxes public sellTaxes = Taxes(20,0,5);
    uint256 public totTax = 25;
    uint256 public totSellTax = 25;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Crocilon", "CROC") {
        _mint(msg.sender, 1e7 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
  
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
 
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

                    uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
        function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
        }
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    receive() external payable {}
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060095569021e19e0c9bab2400000600a556a084595161401484a000000600b55692a5a058fc295ed000000600c5573329e64c06ed3f24b1ddd4c6a9f0347f95d2faabd600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073329e64c06ed3f24b1ddd4c6a9f0347f95d2faabd600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060148152602001600081526020016005815250600f600082015181600001556020820151816001015560408201518160020155505060405180606001604052806014815260200160008152602001600581525060126000820151816000015560208201518160010155604082015181600201555050601960155560196016553480156200017557600080fd5b506040518060400160405280600881526020017f43726f63696c6f6e0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f43524f43000000000000000000000000000000000000000000000000000000008152508160039081620001f3919062000ad1565b50806004908162000205919062000ad1565b505050620002286200021c6200061760201b60201c565b6200061f60201b60201c565b62000267336200023d620006e560201b60201c565b600a6200024b919062000d48565b629896806200025b919062000d99565b620006ee60201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034c919062000e4e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003da919062000e4e565b6040518363ffffffff1660e01b8152600401620003f992919062000e91565b6020604051808303816000875af115801562000419573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043f919062000e4e565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000faa565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007579062000f1f565b60405180910390fd5b62000774600083836200085260201b60201c565b806002600082825462000788919062000f41565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007df919062000f41565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000846919062000f8d565b60405180910390a35050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008d957607f821691505b602082108103620008ef57620008ee62000891565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200091a565b6200096586836200091a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009b2620009ac620009a6846200097d565b62000987565b6200097d565b9050919050565b6000819050919050565b620009ce8362000991565b620009e6620009dd82620009b9565b84845462000927565b825550505050565b600090565b620009fd620009ee565b62000a0a818484620009c3565b505050565b5b8181101562000a325762000a26600082620009f3565b60018101905062000a10565b5050565b601f82111562000a815762000a4b81620008f5565b62000a56846200090a565b8101602085101562000a66578190505b62000a7e62000a75856200090a565b83018262000a0f565b50505b505050565b600082821c905092915050565b600062000aa66000198460080262000a86565b1980831691505092915050565b600062000ac1838362000a93565b9150826002028217905092915050565b62000adc8262000857565b67ffffffffffffffff81111562000af85762000af762000862565b5b62000b048254620008c0565b62000b1182828562000a36565b600060209050601f83116001811462000b49576000841562000b34578287015190505b62000b40858262000ab3565b86555062000bb0565b601f19841662000b5986620008f5565b60005b8281101562000b835784890151825560018201915060208501945060208101905062000b5c565b8683101562000ba3578489015162000b9f601f89168262000a93565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c465780860481111562000c1e5762000c1d62000bb8565b5b600185161562000c2e5780820291505b808102905062000c3e8562000be7565b945062000bfe565b94509492505050565b60008262000c61576001905062000d34565b8162000c71576000905062000d34565b816001811462000c8a576002811462000c955762000ccb565b600191505062000d34565b60ff84111562000caa5762000ca962000bb8565b5b8360020a91508482111562000cc45762000cc362000bb8565b5b5062000d34565b5060208310610133831016604e8410600b841016171562000d055782820a90508381111562000cff5762000cfe62000bb8565b5b62000d34565b62000d14848484600162000bf4565b9250905081840481111562000d2e5762000d2d62000bb8565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d55826200097d565b915062000d628362000d3b565b925062000d917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c4f565b905092915050565b600062000da6826200097d565b915062000db3836200097d565b925082820262000dc3816200097d565b9150828204841483151762000ddd5762000ddc62000bb8565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e168262000de9565b9050919050565b62000e288162000e09565b811462000e3457600080fd5b50565b60008151905062000e488162000e1d565b92915050565b60006020828403121562000e675762000e6662000de4565b5b600062000e778482850162000e37565b91505092915050565b62000e8b8162000e09565b82525050565b600060408201905062000ea8600083018562000e80565b62000eb7602083018462000e80565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f07601f8362000ebe565b915062000f148262000ecf565b602082019050919050565b6000602082019050818103600083015262000f3a8162000ef8565b9050919050565b600062000f4e826200097d565b915062000f5b836200097d565b925082820190508082111562000f765762000f7562000bb8565b5b92915050565b62000f87816200097d565b82525050565b600060208201905062000fa4600083018462000f7c565b92915050565b6146318062000fba6000396000f3fe6080604052600436106102765760003560e01c806382aa7c681161014f578063aa4bde28116100c1578063e01af92c1161007a578063e01af92c14610975578063e545fd6d1461099e578063e9dae5ed146109c7578063f2fde38b146109f0578063f66895a314610a19578063f887ea4014610a465761027d565b8063aa4bde2814610855578063aacebbe314610880578063c18bc195146108a9578063d34628cc146108d2578063dbe66ca0146108fb578063dd62ed3e146109385761027d565b806395d89b411161011357806395d89b41146107335780639d0014b11461075e5780639e252f0014610787578063a457c2d7146107b0578063a8aa1b31146107ed578063a9059cbb146108185761027d565b806382aa7c68146106605780638c0b5e22146106895780638cd4426d146106b45780638da5cb5b146106dd5780638ea5220f146107085761027d565b8063313ce567116101e85780636256d181116101ac5780636256d181146105605780636ddd17131461058957806370a08231146105b4578063715018a6146105f1578063728f8eea1461060857806375f0a874146106355761027d565b8063313ce5671461047957806339509351146104a457806340b28c2f146104e15780634ada218b1461050a57806350c9a88f146105355761027d565b80631816467f1161023a5780631816467f146103695780632253163d1461039257806323b872dd146103bd57806326b5d32f146103fa578063274a533c14610423578063293b7ef41461044e5761027d565b80630445b6671461028257806306fdde03146102ad57806308733214146102d8578063095ea7b31461030157806318160ddd1461033e5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a71565b6040516102a49190613133565b60405180910390f35b3480156102b957600080fd5b506102c2610a77565b6040516102cf91906131de565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613240565b610b09565b005b34801561030d57600080fd5b50610328600480360381019061032391906132f1565b610be5565b604051610335919061334c565b60405180910390f35b34801561034a57600080fd5b50610353610c03565b6040516103609190613133565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190613367565b610c0d565b005b34801561039e57600080fd5b506103a7610ccd565b6040516103b49190613133565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613394565b610cd3565b6040516103f1919061334c565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190613240565b610dd4565b005b34801561042f57600080fd5b50610438610f61565b6040516104459190613133565b60405180910390f35b34801561045a57600080fd5b50610463610f67565b6040516104709190613133565b60405180910390f35b34801561048557600080fd5b5061048e610f6d565b60405161049b9190613403565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906132f1565b610f76565b6040516104d8919061334c565b60405180910390f35b3480156104ed57600080fd5b506105086004803603810190610503919061345c565b611022565b005b34801561051657600080fd5b5061051f611124565b60405161052c919061334c565b60405180910390f35b34801561054157600080fd5b5061054a611137565b6040516105579190613133565b60405180910390f35b34801561056c57600080fd5b506105876004803603810190610582919061349c565b61113d565b005b34801561059557600080fd5b5061059e6111d6565b6040516105ab919061334c565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190613367565b6111e9565b6040516105e89190613133565b60405180910390f35b3480156105fd57600080fd5b50610606611231565b005b34801561061457600080fd5b5061061d6112b9565b60405161062c939291906134c9565b60405180910390f35b34801561064157600080fd5b5061064a6112d1565b604051610657919061350f565b60405180910390f35b34801561066c57600080fd5b506106876004803603810190610682919061349c565b6112f7565b005b34801561069557600080fd5b5061069e61140a565b6040516106ab9190613133565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d691906132f1565b611410565b005b3480156106e957600080fd5b506106f2611516565b6040516106ff919061350f565b60405180910390f35b34801561071457600080fd5b5061071d611540565b60405161072a919061350f565b60405180910390f35b34801561073f57600080fd5b50610748611566565b60405161075591906131de565b60405180910390f35b34801561076a57600080fd5b506107856004803603810190610780919061349c565b6115f8565b005b34801561079357600080fd5b506107ae60048036038101906107a9919061349c565b61167e565b005b3480156107bc57600080fd5b506107d760048036038101906107d291906132f1565b61172d565b6040516107e4919061334c565b60405180910390f35b3480156107f957600080fd5b50610802611821565b60405161080f919061350f565b60405180910390f35b34801561082457600080fd5b5061083f600480360381019061083a91906132f1565b611847565b60405161084c919061334c565b60405180910390f35b34801561086157600080fd5b5061086a611865565b6040516108779190613133565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a29190613367565b61186b565b005b3480156108b557600080fd5b506108d060048036038101906108cb919061349c565b61192b565b005b3480156108de57600080fd5b506108f960048036038101906108f49190613672565b6119c4565b005b34801561090757600080fd5b50610922600480360381019061091d9190613367565b611ad5565b60405161092f919061334c565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a91906136bb565b611af5565b60405161096c9190613133565b60405180910390f35b34801561098157600080fd5b5061099c60048036038101906109979190613727565b611b7c565b005b3480156109aa57600080fd5b506109c560048036038101906109c09190613754565b611c15565b005b3480156109d357600080fd5b506109ee60048036038101906109e99190613240565b611cec565b005b3480156109fc57600080fd5b50610a176004803603810190610a129190613367565b611dc8565b005b348015610a2557600080fd5b50610a2e611ebf565b604051610a3d939291906134c9565b60405180910390f35b348015610a5257600080fd5b50610a5b611ed7565b604051610a6891906137f3565b60405180910390f35b600a5481565b606060038054610a869061383d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab29061383d565b8015610aff5780601f10610ad457610100808354040283529160200191610aff565b820191906000526020600020905b815481529060010190602001808311610ae257829003601f168201915b5050505050905090565b610b11611efd565b73ffffffffffffffffffffffffffffffffffffffff16610b2f611516565b73ffffffffffffffffffffffffffffffffffffffff1614610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c906138ba565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610bd09190613909565b610bda9190613909565b601681905550505050565b6000610bf9610bf2611efd565b8484611f05565b6001905092915050565b6000600254905090565b610c15611efd565b73ffffffffffffffffffffffffffffffffffffffff16610c33611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c80906138ba565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000610ce08484846120ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d2b611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da2906139af565b60405180910390fd5b610dc885610db7611efd565b8584610dc391906139cf565b611f05565b60019150509392505050565b610ddc611efd565b73ffffffffffffffffffffffffffffffffffffffff16610dfa611516565b73ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e47906138ba565b60405180910390fd5b6000479050610e5e84612797565b60008147610e6c91906139cf565b90506000831115610ee457610ee38385610e869190613909565b8483610e929190613a03565b610e9c9190613a74565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b6000841115610f5a57610f598385610efc9190613909565b8583610f089190613a03565b610f129190613a74565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611018610f83611efd565b848460016000610f91611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110139190613909565b611f05565b6001905092915050565b61102a611efd565b73ffffffffffffffffffffffffffffffffffffffff16611048611516565b73ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611095906138ba565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611145611efd565b73ffffffffffffffffffffffffffffffffffffffff16611163611516565b73ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906138ba565b60405180910390fd5b670de0b6b3a7640000816111cd9190613a03565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611239611efd565b73ffffffffffffffffffffffffffffffffffffffff16611257611516565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906138ba565b60405180910390fd5b6112b76000612ace565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112ff611efd565b73ffffffffffffffffffffffffffffffffffffffff1661131d611516565b73ffffffffffffffffffffffffffffffffffffffff1614611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a906138ba565b60405180910390fd5b600760169054906101000a900460ff16156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613af1565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611418611efd565b73ffffffffffffffffffffffffffffffffffffffff16611436611516565b73ffffffffffffffffffffffffffffffffffffffff161461148c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611483906138ba565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114b0611516565b836040518363ffffffff1660e01b81526004016114ce929190613b11565b6020604051808303816000875af11580156114ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190613b4f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115759061383d565b80601f01602080910402602001604051908101604052809291908181526020018280546115a19061383d565b80156115ee5780601f106115c3576101008083540402835291602001916115ee565b820191906000526020600020905b8154815290600101906020018083116115d157829003601f168201915b5050505050905090565b611600611efd565b73ffffffffffffffffffffffffffffffffffffffff1661161e611516565b73ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b906138ba565b60405180910390fd5b80600a8190555050565b611686611efd565b73ffffffffffffffffffffffffffffffffffffffff166116a4611516565b73ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f1906138ba565b60405180910390fd5b61172a81611706611516565b73ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b50565b6000806001600061173c611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f090613bee565b60405180910390fd5b611816611804611efd565b85858461181191906139cf565b611f05565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061185b611854611efd565b84846120ce565b6001905092915050565b600c5481565b611873611efd565b73ffffffffffffffffffffffffffffffffffffffff16611891611516565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906138ba565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611933611efd565b73ffffffffffffffffffffffffffffffffffffffff16611951611516565b73ffffffffffffffffffffffffffffffffffffffff16146119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e906138ba565b60405180910390fd5b670de0b6b3a7640000816119bb9190613a03565b600c8190555050565b6119cc611efd565b73ffffffffffffffffffffffffffffffffffffffff166119ea611516565b73ffffffffffffffffffffffffffffffffffffffff1614611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906138ba565b60405180910390fd5b60005b8151811015611ad157600160186000848481518110611a6557611a64613c0e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ac990613c3d565b915050611a43565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b84611efd565b73ffffffffffffffffffffffffffffffffffffffff16611ba2611516565b73ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef906138ba565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c1d611efd565b73ffffffffffffffffffffffffffffffffffffffff16611c3b611516565b73ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c88906138ba565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611cf4611efd565b73ffffffffffffffffffffffffffffffffffffffff16611d12611516565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906138ba565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284611db39190613909565b611dbd9190613909565b601581905550505050565b611dd0611efd565b73ffffffffffffffffffffffffffffffffffffffff16611dee611516565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b906138ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90613cf7565b60405180910390fd5b611ebc81612ace565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613d89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613e1b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c19190613133565b60405180910390a3505050565b60008111612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210890613ead565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b55750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613f19565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122985750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122b15750600760149054906101000a900460ff16155b1561256d57600760169054906101000a900460ff16612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc90613f85565b60405180910390fd5b436009546008546123169190613909565b111561247957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123ca576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612478576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b548111156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590613ff1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461256c57600c5481612520846111e9565b61252a9190613909565b111561256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256290614083565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806125d35750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126275750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561263557600090506126c9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126ab5760646016548361269a9190613a03565b6126a49190613a74565b90506126c8565b6064601554836126bb9190613a03565b6126c59190613a74565b90505b5b600760159054906101000a900460ff1680156126f25750600760149054906101000a900460ff16155b801561274c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127585750600081115b1561276657612765612b94565b5b61277c8484838561277791906139cf565b612d98565b600081111561279157612790843083612d98565b5b50505050565b6000600267ffffffffffffffff8111156127b4576127b361352f565b5b6040519080825280602002602001820160405280156127e25781602001602082028036833780820191505090505b50905030816000815181106127fa576127f9613c0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c591906140b8565b816001815181106128d9576128d8613c0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061294030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f05565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129a49594939291906141de565b600060405180830381600087803b1580156129be57600080fd5b505af11580156129d2573d6000803e3d6000fd5b505050505050565b80471015612a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1490614284565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a43906142d5565b60006040518083038185875af1925050503d8060008114612a80576040519150601f19603f3d011682016040523d82523d6000602084013e612a85565b606091505b5050905080612ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac09061435c565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612d96576001600760146101000a81548160ff0219169083151502179055506000612bce306111e9565b9050600a548110612d795760006002601654612bea9190613a03565b905060008160126001015484612c009190613a03565b612c0a9190613a74565b905060008184612c1a91906139cf565b90506000479050612c2a82612797565b60008147612c3891906139cf565b9050600060126001015486612c4d91906139cf565b82612c589190613a74565b9050600060126001015482612c6d9190613a03565b90506000811115612c8357612c828682613015565b5b6000601260000154600284612c989190613a03565b612ca29190613a03565b90506000811115612cf957612cf881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b6000601260020154600285612d0e9190613a03565b612d189190613a03565b90506000811115612d6f57612d6e81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfe906143ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6d90614480565b60405180910390fd5b612e81838383613115565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe90614512565b60405180910390fd5b8181612f1391906139cf565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fa39190613909565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130079190613133565b60405180910390a350505050565b61304230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f05565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130cb96959493929190614532565b60606040518083038185885af11580156130e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061310e91906145a8565b5050505050565b505050565b6000819050919050565b61312d8161311a565b82525050565b60006020820190506131486000830184613124565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561318857808201518184015260208101905061316d565b60008484015250505050565b6000601f19601f8301169050919050565b60006131b08261314e565b6131ba8185613159565b93506131ca81856020860161316a565b6131d381613194565b840191505092915050565b600060208201905081810360008301526131f881846131a5565b905092915050565b6000604051905090565b600080fd5b600080fd5b61321d8161311a565b811461322857600080fd5b50565b60008135905061323a81613214565b92915050565b6000806000606084860312156132595761325861320a565b5b60006132678682870161322b565b93505060206132788682870161322b565b92505060406132898682870161322b565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132be82613293565b9050919050565b6132ce816132b3565b81146132d957600080fd5b50565b6000813590506132eb816132c5565b92915050565b600080604083850312156133085761330761320a565b5b6000613316858286016132dc565b92505060206133278582860161322b565b9150509250929050565b60008115159050919050565b61334681613331565b82525050565b6000602082019050613361600083018461333d565b92915050565b60006020828403121561337d5761337c61320a565b5b600061338b848285016132dc565b91505092915050565b6000806000606084860312156133ad576133ac61320a565b5b60006133bb868287016132dc565b93505060206133cc868287016132dc565b92505060406133dd8682870161322b565b9150509250925092565b600060ff82169050919050565b6133fd816133e7565b82525050565b600060208201905061341860008301846133f4565b92915050565b6000613429826132b3565b9050919050565b6134398161341e565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b600080604083850312156134735761347261320a565b5b600061348185828601613447565b9250506020613492858286016132dc565b9150509250929050565b6000602082840312156134b2576134b161320a565b5b60006134c08482850161322b565b91505092915050565b60006060820190506134de6000830186613124565b6134eb6020830185613124565b6134f86040830184613124565b949350505050565b613509816132b3565b82525050565b60006020820190506135246000830184613500565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61356782613194565b810181811067ffffffffffffffff821117156135865761358561352f565b5b80604052505050565b6000613599613200565b90506135a5828261355e565b919050565b600067ffffffffffffffff8211156135c5576135c461352f565b5b602082029050602081019050919050565b600080fd5b60006135ee6135e9846135aa565b61358f565b90508083825260208201905060208402830185811115613611576136106135d6565b5b835b8181101561363a578061362688826132dc565b845260208401935050602081019050613613565b5050509392505050565b600082601f8301126136595761365861352a565b5b81356136698482602086016135db565b91505092915050565b6000602082840312156136885761368761320a565b5b600082013567ffffffffffffffff8111156136a6576136a561320f565b5b6136b284828501613644565b91505092915050565b600080604083850312156136d2576136d161320a565b5b60006136e0858286016132dc565b92505060206136f1858286016132dc565b9150509250929050565b61370481613331565b811461370f57600080fd5b50565b600081359050613721816136fb565b92915050565b60006020828403121561373d5761373c61320a565b5b600061374b84828501613712565b91505092915050565b6000806040838503121561376b5761376a61320a565b5b6000613779858286016132dc565b925050602061378a85828601613712565b9150509250929050565b6000819050919050565b60006137b96137b46137af84613293565b613794565b613293565b9050919050565b60006137cb8261379e565b9050919050565b60006137dd826137c0565b9050919050565b6137ed816137d2565b82525050565b600060208201905061380860008301846137e4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061385557607f821691505b6020821081036138685761386761380e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a4602083613159565b91506138af8261386e565b602082019050919050565b600060208201905081810360008301526138d381613897565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139148261311a565b915061391f8361311a565b9250828201905080821115613937576139366138da565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613999602883613159565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b60006139da8261311a565b91506139e58361311a565b92508282039050818111156139fd576139fc6138da565b5b92915050565b6000613a0e8261311a565b9150613a198361311a565b9250828202613a278161311a565b91508282048414831517613a3e57613a3d6138da565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7f8261311a565b9150613a8a8361311a565b925082613a9a57613a99613a45565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613adb601683613159565b9150613ae682613aa5565b602082019050919050565b60006020820190508181036000830152613b0a81613ace565b9050919050565b6000604082019050613b266000830185613500565b613b336020830184613124565b9392505050565b600081519050613b49816136fb565b92915050565b600060208284031215613b6557613b6461320a565b5b6000613b7384828501613b3a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bd8602583613159565b9150613be382613b7c565b604082019050919050565b60006020820190508181036000830152613c0781613bcb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613c488261311a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c7a57613c796138da565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ce1602683613159565b9150613cec82613c85565b604082019050919050565b60006020820190508181036000830152613d1081613cd4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d73602483613159565b9150613d7e82613d17565b604082019050919050565b60006020820190508181036000830152613da281613d66565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e05602283613159565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e97602983613159565b9150613ea282613e3b565b604082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613f03601983613159565b9150613f0e82613ecd565b602082019050919050565b60006020820190508181036000830152613f3281613ef6565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613f6f601683613159565b9150613f7a82613f39565b602082019050919050565b60006020820190508181036000830152613f9e81613f62565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613fdb601d83613159565b9150613fe682613fa5565b602082019050919050565b6000602082019050818103600083015261400a81613fce565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061406d602183613159565b915061407882614011565b604082019050919050565b6000602082019050818103600083015261409c81614060565b9050919050565b6000815190506140b2816132c5565b92915050565b6000602082840312156140ce576140cd61320a565b5b60006140dc848285016140a3565b91505092915050565b6000819050919050565b600061410a614105614100846140e5565b613794565b61311a565b9050919050565b61411a816140ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614155816132b3565b82525050565b6000614167838361414c565b60208301905092915050565b6000602082019050919050565b600061418b82614120565b614195818561412b565b93506141a08361413c565b8060005b838110156141d15781516141b8888261415b565b97506141c383614173565b9250506001810190506141a4565b5085935050505092915050565b600060a0820190506141f36000830188613124565b6142006020830187614111565b81810360408301526142128186614180565b90506142216060830185613500565b61422e6080830184613124565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061426e601d83613159565b915061427982614238565b602082019050919050565b6000602082019050818103600083015261429d81614261565b9050919050565b600081905092915050565b50565b60006142bf6000836142a4565b91506142ca826142af565b600082019050919050565b60006142e0826142b2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614346603a83613159565b9150614351826142ea565b604082019050919050565b6000602082019050818103600083015261437581614339565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143d8602583613159565b91506143e38261437c565b604082019050919050565b60006020820190508181036000830152614407816143cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061446a602383613159565b91506144758261440e565b604082019050919050565b600060208201905081810360008301526144998161445d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144fc602683613159565b9150614507826144a0565b604082019050919050565b6000602082019050818103600083015261452b816144ef565b9050919050565b600060c0820190506145476000830189613500565b6145546020830188613124565b6145616040830187614111565b61456e6060830186614111565b61457b6080830185613500565b61458860a0830184613124565b979650505050505050565b6000815190506145a281613214565b92915050565b6000806000606084860312156145c1576145c061320a565b5b60006145cf86828701614593565b93505060206145e086828701614593565b92505060406145f186828701614593565b915050925092509256fea2646970667358221220595ad691afcc2a689a8e8212981b74849c79954318d9de470e4772b82d79b32b64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102765760003560e01c806382aa7c681161014f578063aa4bde28116100c1578063e01af92c1161007a578063e01af92c14610975578063e545fd6d1461099e578063e9dae5ed146109c7578063f2fde38b146109f0578063f66895a314610a19578063f887ea4014610a465761027d565b8063aa4bde2814610855578063aacebbe314610880578063c18bc195146108a9578063d34628cc146108d2578063dbe66ca0146108fb578063dd62ed3e146109385761027d565b806395d89b411161011357806395d89b41146107335780639d0014b11461075e5780639e252f0014610787578063a457c2d7146107b0578063a8aa1b31146107ed578063a9059cbb146108185761027d565b806382aa7c68146106605780638c0b5e22146106895780638cd4426d146106b45780638da5cb5b146106dd5780638ea5220f146107085761027d565b8063313ce567116101e85780636256d181116101ac5780636256d181146105605780636ddd17131461058957806370a08231146105b4578063715018a6146105f1578063728f8eea1461060857806375f0a874146106355761027d565b8063313ce5671461047957806339509351146104a457806340b28c2f146104e15780634ada218b1461050a57806350c9a88f146105355761027d565b80631816467f1161023a5780631816467f146103695780632253163d1461039257806323b872dd146103bd57806326b5d32f146103fa578063274a533c14610423578063293b7ef41461044e5761027d565b80630445b6671461028257806306fdde03146102ad57806308733214146102d8578063095ea7b31461030157806318160ddd1461033e5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a71565b6040516102a49190613133565b60405180910390f35b3480156102b957600080fd5b506102c2610a77565b6040516102cf91906131de565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613240565b610b09565b005b34801561030d57600080fd5b50610328600480360381019061032391906132f1565b610be5565b604051610335919061334c565b60405180910390f35b34801561034a57600080fd5b50610353610c03565b6040516103609190613133565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190613367565b610c0d565b005b34801561039e57600080fd5b506103a7610ccd565b6040516103b49190613133565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613394565b610cd3565b6040516103f1919061334c565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190613240565b610dd4565b005b34801561042f57600080fd5b50610438610f61565b6040516104459190613133565b60405180910390f35b34801561045a57600080fd5b50610463610f67565b6040516104709190613133565b60405180910390f35b34801561048557600080fd5b5061048e610f6d565b60405161049b9190613403565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c691906132f1565b610f76565b6040516104d8919061334c565b60405180910390f35b3480156104ed57600080fd5b506105086004803603810190610503919061345c565b611022565b005b34801561051657600080fd5b5061051f611124565b60405161052c919061334c565b60405180910390f35b34801561054157600080fd5b5061054a611137565b6040516105579190613133565b60405180910390f35b34801561056c57600080fd5b506105876004803603810190610582919061349c565b61113d565b005b34801561059557600080fd5b5061059e6111d6565b6040516105ab919061334c565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190613367565b6111e9565b6040516105e89190613133565b60405180910390f35b3480156105fd57600080fd5b50610606611231565b005b34801561061457600080fd5b5061061d6112b9565b60405161062c939291906134c9565b60405180910390f35b34801561064157600080fd5b5061064a6112d1565b604051610657919061350f565b60405180910390f35b34801561066c57600080fd5b506106876004803603810190610682919061349c565b6112f7565b005b34801561069557600080fd5b5061069e61140a565b6040516106ab9190613133565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d691906132f1565b611410565b005b3480156106e957600080fd5b506106f2611516565b6040516106ff919061350f565b60405180910390f35b34801561071457600080fd5b5061071d611540565b60405161072a919061350f565b60405180910390f35b34801561073f57600080fd5b50610748611566565b60405161075591906131de565b60405180910390f35b34801561076a57600080fd5b506107856004803603810190610780919061349c565b6115f8565b005b34801561079357600080fd5b506107ae60048036038101906107a9919061349c565b61167e565b005b3480156107bc57600080fd5b506107d760048036038101906107d291906132f1565b61172d565b6040516107e4919061334c565b60405180910390f35b3480156107f957600080fd5b50610802611821565b60405161080f919061350f565b60405180910390f35b34801561082457600080fd5b5061083f600480360381019061083a91906132f1565b611847565b60405161084c919061334c565b60405180910390f35b34801561086157600080fd5b5061086a611865565b6040516108779190613133565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a29190613367565b61186b565b005b3480156108b557600080fd5b506108d060048036038101906108cb919061349c565b61192b565b005b3480156108de57600080fd5b506108f960048036038101906108f49190613672565b6119c4565b005b34801561090757600080fd5b50610922600480360381019061091d9190613367565b611ad5565b60405161092f919061334c565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a91906136bb565b611af5565b60405161096c9190613133565b60405180910390f35b34801561098157600080fd5b5061099c60048036038101906109979190613727565b611b7c565b005b3480156109aa57600080fd5b506109c560048036038101906109c09190613754565b611c15565b005b3480156109d357600080fd5b506109ee60048036038101906109e99190613240565b611cec565b005b3480156109fc57600080fd5b50610a176004803603810190610a129190613367565b611dc8565b005b348015610a2557600080fd5b50610a2e611ebf565b604051610a3d939291906134c9565b60405180910390f35b348015610a5257600080fd5b50610a5b611ed7565b604051610a6891906137f3565b60405180910390f35b600a5481565b606060038054610a869061383d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab29061383d565b8015610aff5780601f10610ad457610100808354040283529160200191610aff565b820191906000526020600020905b815481529060010190602001808311610ae257829003601f168201915b5050505050905090565b610b11611efd565b73ffffffffffffffffffffffffffffffffffffffff16610b2f611516565b73ffffffffffffffffffffffffffffffffffffffff1614610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c906138ba565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610bd09190613909565b610bda9190613909565b601681905550505050565b6000610bf9610bf2611efd565b8484611f05565b6001905092915050565b6000600254905090565b610c15611efd565b73ffffffffffffffffffffffffffffffffffffffff16610c33611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c80906138ba565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b6000610ce08484846120ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d2b611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da2906139af565b60405180910390fd5b610dc885610db7611efd565b8584610dc391906139cf565b611f05565b60019150509392505050565b610ddc611efd565b73ffffffffffffffffffffffffffffffffffffffff16610dfa611516565b73ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e47906138ba565b60405180910390fd5b6000479050610e5e84612797565b60008147610e6c91906139cf565b90506000831115610ee457610ee38385610e869190613909565b8483610e929190613a03565b610e9c9190613a74565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b6000841115610f5a57610f598385610efc9190613909565b8583610f089190613a03565b610f129190613a74565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611018610f83611efd565b848460016000610f91611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110139190613909565b611f05565b6001905092915050565b61102a611efd565b73ffffffffffffffffffffffffffffffffffffffff16611048611516565b73ffffffffffffffffffffffffffffffffffffffff161461109e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611095906138ba565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611145611efd565b73ffffffffffffffffffffffffffffffffffffffff16611163611516565b73ffffffffffffffffffffffffffffffffffffffff16146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906138ba565b60405180910390fd5b670de0b6b3a7640000816111cd9190613a03565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611239611efd565b73ffffffffffffffffffffffffffffffffffffffff16611257611516565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906138ba565b60405180910390fd5b6112b76000612ace565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112ff611efd565b73ffffffffffffffffffffffffffffffffffffffff1661131d611516565b73ffffffffffffffffffffffffffffffffffffffff1614611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a906138ba565b60405180910390fd5b600760169054906101000a900460ff16156113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613af1565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611418611efd565b73ffffffffffffffffffffffffffffffffffffffff16611436611516565b73ffffffffffffffffffffffffffffffffffffffff161461148c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611483906138ba565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114b0611516565b836040518363ffffffff1660e01b81526004016114ce929190613b11565b6020604051808303816000875af11580156114ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190613b4f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115759061383d565b80601f01602080910402602001604051908101604052809291908181526020018280546115a19061383d565b80156115ee5780601f106115c3576101008083540402835291602001916115ee565b820191906000526020600020905b8154815290600101906020018083116115d157829003601f168201915b5050505050905090565b611600611efd565b73ffffffffffffffffffffffffffffffffffffffff1661161e611516565b73ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b906138ba565b60405180910390fd5b80600a8190555050565b611686611efd565b73ffffffffffffffffffffffffffffffffffffffff166116a4611516565b73ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f1906138ba565b60405180910390fd5b61172a81611706611516565b73ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b50565b6000806001600061173c611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f090613bee565b60405180910390fd5b611816611804611efd565b85858461181191906139cf565b611f05565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061185b611854611efd565b84846120ce565b6001905092915050565b600c5481565b611873611efd565b73ffffffffffffffffffffffffffffffffffffffff16611891611516565b73ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906138ba565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611933611efd565b73ffffffffffffffffffffffffffffffffffffffff16611951611516565b73ffffffffffffffffffffffffffffffffffffffff16146119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e906138ba565b60405180910390fd5b670de0b6b3a7640000816119bb9190613a03565b600c8190555050565b6119cc611efd565b73ffffffffffffffffffffffffffffffffffffffff166119ea611516565b73ffffffffffffffffffffffffffffffffffffffff1614611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906138ba565b60405180910390fd5b60005b8151811015611ad157600160186000848481518110611a6557611a64613c0e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ac990613c3d565b915050611a43565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b84611efd565b73ffffffffffffffffffffffffffffffffffffffff16611ba2611516565b73ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef906138ba565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c1d611efd565b73ffffffffffffffffffffffffffffffffffffffff16611c3b611516565b73ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c88906138ba565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611cf4611efd565b73ffffffffffffffffffffffffffffffffffffffff16611d12611516565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f906138ba565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284611db39190613909565b611dbd9190613909565b601581905550505050565b611dd0611efd565b73ffffffffffffffffffffffffffffffffffffffff16611dee611516565b73ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b906138ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaa90613cf7565b60405180910390fd5b611ebc81612ace565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613d89565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613e1b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c19190613133565b60405180910390a3505050565b60008111612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210890613ead565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121b55750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613f19565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122985750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122b15750600760149054906101000a900460ff16155b1561256d57600760169054906101000a900460ff16612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc90613f85565b60405180910390fd5b436009546008546123169190613909565b111561247957600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123ca576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612478576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b548111156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590613ff1565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461256c57600c5481612520846111e9565b61252a9190613909565b111561256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256290614083565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806125d35750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126275750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561263557600090506126c9565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126ab5760646016548361269a9190613a03565b6126a49190613a74565b90506126c8565b6064601554836126bb9190613a03565b6126c59190613a74565b90505b5b600760159054906101000a900460ff1680156126f25750600760149054906101000a900460ff16155b801561274c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127585750600081115b1561276657612765612b94565b5b61277c8484838561277791906139cf565b612d98565b600081111561279157612790843083612d98565b5b50505050565b6000600267ffffffffffffffff8111156127b4576127b361352f565b5b6040519080825280602002602001820160405280156127e25781602001602082028036833780820191505090505b50905030816000815181106127fa576127f9613c0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c591906140b8565b816001815181106128d9576128d8613c0e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061294030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f05565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129a49594939291906141de565b600060405180830381600087803b1580156129be57600080fd5b505af11580156129d2573d6000803e3d6000fd5b505050505050565b80471015612a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1490614284565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a43906142d5565b60006040518083038185875af1925050503d8060008114612a80576040519150601f19603f3d011682016040523d82523d6000602084013e612a85565b606091505b5050905080612ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac09061435c565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612d96576001600760146101000a81548160ff0219169083151502179055506000612bce306111e9565b9050600a548110612d795760006002601654612bea9190613a03565b905060008160126001015484612c009190613a03565b612c0a9190613a74565b905060008184612c1a91906139cf565b90506000479050612c2a82612797565b60008147612c3891906139cf565b9050600060126001015486612c4d91906139cf565b82612c589190613a74565b9050600060126001015482612c6d9190613a03565b90506000811115612c8357612c828682613015565b5b6000601260000154600284612c989190613a03565b612ca29190613a03565b90506000811115612cf957612cf881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b6000601260020154600285612d0e9190613a03565b612d189190613a03565b90506000811115612d6f57612d6e81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129da90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfe906143ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6d90614480565b60405180910390fd5b612e81838383613115565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe90614512565b60405180910390fd5b8181612f1391906139cf565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fa39190613909565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130079190613133565b60405180910390a350505050565b61304230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f05565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016130cb96959493929190614532565b60606040518083038185885af11580156130e9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061310e91906145a8565b5050505050565b505050565b6000819050919050565b61312d8161311a565b82525050565b60006020820190506131486000830184613124565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561318857808201518184015260208101905061316d565b60008484015250505050565b6000601f19601f8301169050919050565b60006131b08261314e565b6131ba8185613159565b93506131ca81856020860161316a565b6131d381613194565b840191505092915050565b600060208201905081810360008301526131f881846131a5565b905092915050565b6000604051905090565b600080fd5b600080fd5b61321d8161311a565b811461322857600080fd5b50565b60008135905061323a81613214565b92915050565b6000806000606084860312156132595761325861320a565b5b60006132678682870161322b565b93505060206132788682870161322b565b92505060406132898682870161322b565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132be82613293565b9050919050565b6132ce816132b3565b81146132d957600080fd5b50565b6000813590506132eb816132c5565b92915050565b600080604083850312156133085761330761320a565b5b6000613316858286016132dc565b92505060206133278582860161322b565b9150509250929050565b60008115159050919050565b61334681613331565b82525050565b6000602082019050613361600083018461333d565b92915050565b60006020828403121561337d5761337c61320a565b5b600061338b848285016132dc565b91505092915050565b6000806000606084860312156133ad576133ac61320a565b5b60006133bb868287016132dc565b93505060206133cc868287016132dc565b92505060406133dd8682870161322b565b9150509250925092565b600060ff82169050919050565b6133fd816133e7565b82525050565b600060208201905061341860008301846133f4565b92915050565b6000613429826132b3565b9050919050565b6134398161341e565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b600080604083850312156134735761347261320a565b5b600061348185828601613447565b9250506020613492858286016132dc565b9150509250929050565b6000602082840312156134b2576134b161320a565b5b60006134c08482850161322b565b91505092915050565b60006060820190506134de6000830186613124565b6134eb6020830185613124565b6134f86040830184613124565b949350505050565b613509816132b3565b82525050565b60006020820190506135246000830184613500565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61356782613194565b810181811067ffffffffffffffff821117156135865761358561352f565b5b80604052505050565b6000613599613200565b90506135a5828261355e565b919050565b600067ffffffffffffffff8211156135c5576135c461352f565b5b602082029050602081019050919050565b600080fd5b60006135ee6135e9846135aa565b61358f565b90508083825260208201905060208402830185811115613611576136106135d6565b5b835b8181101561363a578061362688826132dc565b845260208401935050602081019050613613565b5050509392505050565b600082601f8301126136595761365861352a565b5b81356136698482602086016135db565b91505092915050565b6000602082840312156136885761368761320a565b5b600082013567ffffffffffffffff8111156136a6576136a561320f565b5b6136b284828501613644565b91505092915050565b600080604083850312156136d2576136d161320a565b5b60006136e0858286016132dc565b92505060206136f1858286016132dc565b9150509250929050565b61370481613331565b811461370f57600080fd5b50565b600081359050613721816136fb565b92915050565b60006020828403121561373d5761373c61320a565b5b600061374b84828501613712565b91505092915050565b6000806040838503121561376b5761376a61320a565b5b6000613779858286016132dc565b925050602061378a85828601613712565b9150509250929050565b6000819050919050565b60006137b96137b46137af84613293565b613794565b613293565b9050919050565b60006137cb8261379e565b9050919050565b60006137dd826137c0565b9050919050565b6137ed816137d2565b82525050565b600060208201905061380860008301846137e4565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061385557607f821691505b6020821081036138685761386761380e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a4602083613159565b91506138af8261386e565b602082019050919050565b600060208201905081810360008301526138d381613897565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139148261311a565b915061391f8361311a565b9250828201905080821115613937576139366138da565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613999602883613159565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b60006139da8261311a565b91506139e58361311a565b92508282039050818111156139fd576139fc6138da565b5b92915050565b6000613a0e8261311a565b9150613a198361311a565b9250828202613a278161311a565b91508282048414831517613a3e57613a3d6138da565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7f8261311a565b9150613a8a8361311a565b925082613a9a57613a99613a45565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613adb601683613159565b9150613ae682613aa5565b602082019050919050565b60006020820190508181036000830152613b0a81613ace565b9050919050565b6000604082019050613b266000830185613500565b613b336020830184613124565b9392505050565b600081519050613b49816136fb565b92915050565b600060208284031215613b6557613b6461320a565b5b6000613b7384828501613b3a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bd8602583613159565b9150613be382613b7c565b604082019050919050565b60006020820190508181036000830152613c0781613bcb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613c488261311a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c7a57613c796138da565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ce1602683613159565b9150613cec82613c85565b604082019050919050565b60006020820190508181036000830152613d1081613cd4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d73602483613159565b9150613d7e82613d17565b604082019050919050565b60006020820190508181036000830152613da281613d66565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e05602283613159565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e97602983613159565b9150613ea282613e3b565b604082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613f03601983613159565b9150613f0e82613ecd565b602082019050919050565b60006020820190508181036000830152613f3281613ef6565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613f6f601683613159565b9150613f7a82613f39565b602082019050919050565b60006020820190508181036000830152613f9e81613f62565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613fdb601d83613159565b9150613fe682613fa5565b602082019050919050565b6000602082019050818103600083015261400a81613fce565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061406d602183613159565b915061407882614011565b604082019050919050565b6000602082019050818103600083015261409c81614060565b9050919050565b6000815190506140b2816132c5565b92915050565b6000602082840312156140ce576140cd61320a565b5b60006140dc848285016140a3565b91505092915050565b6000819050919050565b600061410a614105614100846140e5565b613794565b61311a565b9050919050565b61411a816140ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614155816132b3565b82525050565b6000614167838361414c565b60208301905092915050565b6000602082019050919050565b600061418b82614120565b614195818561412b565b93506141a08361413c565b8060005b838110156141d15781516141b8888261415b565b97506141c383614173565b9250506001810190506141a4565b5085935050505092915050565b600060a0820190506141f36000830188613124565b6142006020830187614111565b81810360408301526142128186614180565b90506142216060830185613500565b61422e6080830184613124565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061426e601d83613159565b915061427982614238565b602082019050919050565b6000602082019050818103600083015261429d81614261565b9050919050565b600081905092915050565b50565b60006142bf6000836142a4565b91506142ca826142af565b600082019050919050565b60006142e0826142b2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614346603a83613159565b9150614351826142ea565b604082019050919050565b6000602082019050818103600083015261437581614339565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143d8602583613159565b91506143e38261437c565b604082019050919050565b60006020820190508181036000830152614407816143cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061446a602383613159565b91506144758261440e565b604082019050919050565b600060208201905081810360008301526144998161445d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144fc602683613159565b9150614507826144a0565b604082019050919050565b6000602082019050818103600083015261452b816144ef565b9050919050565b600060c0820190506145476000830189613500565b6145546020830188613124565b6145616040830187614111565b61456e6060830186614111565b61457b6080830185613500565b61458860a0830184613124565b979650505050505050565b6000815190506145a281613214565b92915050565b6000806000606084860312156145c1576145c061320a565b5b60006145cf86828701614593565b93505060206145e086828701614593565b92505060406145f186828701614593565b915050925092509256fea2646970667358221220595ad691afcc2a689a8e8212981b74849c79954318d9de470e4772b82d79b32b64736f6c63430008110033

Deployed Bytecode Sourcemap

7763:8158:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8081:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1698:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13856:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2612:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2019:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14208:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8644:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2789:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15311:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8004:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8611:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1918:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3219:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14318:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7969:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8039:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14795:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7939:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2135:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6540:94;;;;;;;;;;;;;:::i;:::-;;8525:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8249:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13364:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8132:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15041:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6317:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8331:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1806:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13246:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15191:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3442:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7879:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2270:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8187:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14082:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14916:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14471:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8687:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2453:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13145:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14649:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13646:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6642:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8566:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7851:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8081:44;;;;:::o;1698:100::-;1752:13;1785:5;1778:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:100;:::o;13856:214::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13973:35:::1;;;;;;;;13979:10;13973:35;;;;13991:10;13973:35;;;;14003:4;13973:35;;::::0;13961:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;14058:4;14045:10;14032;:23;;;;:::i;:::-;:30;;;;:::i;:::-;14019:10;:43;;;;13856:214:::0;;;:::o;2612:169::-;2695:4;2712:39;2721:12;:10;:12::i;:::-;2735:7;2744:6;2712:8;:39::i;:::-;2769:4;2762:11;;2612:169;;;;:::o;2019:108::-;2080:7;2107:12;;2100:19;;2019:108;:::o;14208:102::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14293:9:::1;14281;;:21;;;;;;;;;;;;;;;;;;14208:102:::0;:::o;8644:30::-;;;;:::o;2789:422::-;2895:4;2912:36;2922:6;2930:9;2941:6;2912:9;:36::i;:::-;2961:24;2988:11;:19;3000:6;2988:19;;;;;;;;;;;;;;;:33;3008:12;:10;:12::i;:::-;2988:33;;;;;;;;;;;;;;;;2961:60;;3060:6;3040:16;:26;;3032:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3122:57;3131:6;3139:12;:10;:12::i;:::-;3172:6;3153:16;:25;;;;:::i;:::-;3122:8;:57::i;:::-;3199:4;3192:11;;;2789:422;;;;;:::o;15311:546::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15428:19:::1;15450:21;15428:43;;15482:24;15499:6;15482:16;:24::i;:::-;15517:18;15562:11;15538:21;:35;;;;:::i;:::-;15517:56;;15609:1;15587:19;:23;15584:136;;;15612:108;15699:19;15683:13;:35;;;;:::i;:::-;15660:19;15647:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;15620:15;;;;;;;;;;;15612:34;;;;:108;;;;:::i;:::-;15584:136;15750:1;15734:13;:17;15731:118;;;15753:96;15828:19;15812:13;:35;;;;:::i;:::-;15795:13;15782:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;15761:9;;;;;;;;;;;15753:28;;;;:96;;;;:::i;:::-;15731:118;15417:440;;15311:546:::0;;;:::o;8004:28::-;;;;:::o;8611:26::-;;;;:::o;1918:93::-;1976:5;2001:2;1994:9;;1918:93;:::o;3219:215::-;3307:4;3324:80;3333:12;:10;:12::i;:::-;3347:7;3393:10;3356:11;:25;3368:12;:10;:12::i;:::-;3356:25;;;;;;;;;;;;;;;:34;3382:7;3356:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3324:8;:80::i;:::-;3422:4;3415:11;;3219:215;;;;:::o;14318:137::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14417:7:::1;14408:6;;:16;;;;;;;;;;;;;;;;;;14442:5;14435:4;;:12;;;;;;;;;;;;;;;;;;14318:137:::0;;:::o;7969:26::-;;;;;;;;;;;;;:::o;8039:29::-;;;;:::o;14795:109::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14890:6:::1;14881;:15;;;;:::i;:::-;14867:11;:29;;;;14795:109:::0;:::o;7939:23::-;;;;;;;;;;;;;:::o;2135:127::-;2209:7;2236:9;:18;2246:7;2236:18;;;;;;;;;;;;;;;;2229:25;;2135:127;;;:::o;6540:94::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6605:21:::1;6623:1;6605:9;:21::i;:::-;6540:94::o:0;8525:34::-;;;;;;;;;;;;;;;;;;;:::o;8249:75::-;;;;;;;;;;;;;:::o;13364:274::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13450:14:::1;;;;;;;;;;;13449:15;13441:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13519:4;13502:14;;:21;;;;;;;;;;;;;;;;;;13548:4;13534:11;;:18;;;;;;;;;;;;;;;;;;13579:12;13563:13;:28;;;;13615:15;13602:10;:28;;;;13364:274:::0;:::o;8132:48::-;;;;:::o;15041:142::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15136:12:::1;15129:29;;;15159:7;:5;:7::i;:::-;15168:6;15129:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15041:142:::0;;:::o;6317:87::-;6363:7;6390:6;;;;;;;;;;;6383:13;;6317:87;:::o;8331:69::-;;;;;;;;;;;;;:::o;1806:104::-;1862:13;1895:7;1888:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1806:104;:::o;13246:110::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13338:10:::1;13322:13;:26;;;;13246:110:::0;:::o;15191:112::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15258:37:::1;15285:9;15266:7;:5;:7::i;:::-;15258:26;;;;:37;;;;:::i;:::-;15191:112:::0;:::o;3442:377::-;3535:4;3552:24;3579:11;:25;3591:12;:10;:12::i;:::-;3579:25;;;;;;;;;;;;;;;:34;3605:7;3579:34;;;;;;;;;;;;;;;;3552:61;;3652:15;3632:16;:35;;3624:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3720:67;3729:12;:10;:12::i;:::-;3743:7;3771:15;3752:16;:34;;;;:::i;:::-;3720:8;:67::i;:::-;3807:4;3800:11;;;3442:377;;;;:::o;7879:19::-;;;;;;;;;;;;;:::o;2270:175::-;2356:4;2373:42;2383:12;:10;:12::i;:::-;2397:9;2408:6;2373:9;:42::i;:::-;2433:4;2426:11;;2270:175;;;;:::o;8187:49::-;;;;:::o;14082:114::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14179:9:::1;14161:15;;:27;;;;;;;;;;;;;;;;;;14082:114:::0;:::o;14916:117::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15019:6:::1;15010;:15;;;;:::i;:::-;14992;:33;;;;14916:117:::0;:::o;14471:172::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14546:6:::1;14541:91;14562:6;:13;14558:1;:17;14541:91;;;14616:4;14597:5;:16;14603:6;14610:1;14603:9;;;;;;;;:::i;:::-;;;;;;;;14597:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14577:3;;;;;:::i;:::-;;;;14541:91;;;;14471:172:::0;:::o;8687:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;2453:151::-;2542:7;2569:11;:18;2581:5;2569:18;;;;;;;;;;;;;;;:27;2588:7;2569:27;;;;;;;;;;;;;;;;2562:34;;2453:151;;;;:::o;13145:93::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13225:5:::1;13211:11;;:19;;;;;;;;;;;;;;;;;;13145:93:::0;:::o;14649:134::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14770:5:::1;14741:16;:26;14758:8;14741:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14649:134:::0;;:::o;13646:202::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13755:35:::1;;;;;;;;13761:10;13755:35;;;;13773:10;13755:35;;;;13785:4;13755:35;;::::0;13747:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;13836:4;13823:10;13810;:23;;;;:::i;:::-;:30;;;;:::i;:::-;13801:6;:39;;;;13646:202:::0;;;:::o;6642:192::-;6463:12;:10;:12::i;:::-;6452:23;;:7;:5;:7::i;:::-;:23;;;6444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6751:1:::1;6731:22;;:8;:22;;::::0;6723:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6807:19;6817:8;6807:9;:19::i;:::-;6642:192:::0;:::o;8566:38::-;;;;;;;;;;;;;;;;;;;:::o;7851:21::-;;;;;;;;;;;;;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;5287:346::-;5406:1;5389:19;;:5;:19;;;5381:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5487:1;5468:21;;:7;:21;;;5460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5571:6;5541:11;:18;5553:5;5541:18;;;;;;;;;;;;;;;:27;5560:7;5541:27;;;;;;;;;;;;;;;:36;;;;5609:7;5593:32;;5602:5;5593:32;;;5618:6;5593:32;;;;;;:::i;:::-;;;;;;;;5287:346;;;:::o;9498:1389::-;9614:1;9605:6;:10;9597:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9681:5;:13;9687:6;9681:13;;;;;;;;;;;;;;;;;;;;;;;;;9680:14;:35;;;;;9699:5;:16;9705:9;9699:16;;;;;;;;;;;;;;;;;;;;;;;;;9698:17;9680:35;9672:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9788:16;:24;9805:6;9788:24;;;;;;;;;;;;;;;;;;;;;;;;;9787:25;:57;;;;;9817:16;:27;9834:9;9817:27;;;;;;;;;;;;;;;;;;;;;;;;;9816:28;9787:57;:70;;;;;9849:8;;;;;;;;;;;9848:9;9787:70;9784:589;;;9881:14;;;;;;;;;;;9873:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9969:12;9956:10;;9940:13;;:26;;;;:::i;:::-;:41;9937:183;;;10017:4;;;;;;;;;;;10004:17;;:9;:17;;;10001:45;;10042:4;10023:5;:16;10029:9;10023:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10001:45;10078:4;;;;;;;;;;;10068:14;;:6;:14;;;10065:39;;10100:4;10084:5;:13;10090:6;10084:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;10065:39;9937:183;10152:11;;10142:6;:21;;10134:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10228:4;;;;;;;;;;;10215:17;;:9;:17;;;10212:150;;10293:15;;10283:6;10260:20;10270:9;10260;:20::i;:::-;:29;;;;:::i;:::-;:48;;10252:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;10212:150;9784:589;10385:11;10425:8;;;;;;;;;;;:36;;;;10437:16;:24;10454:6;10437:24;;;;;;;;;;;;;;;;;;;;;;;;;10425:36;:67;;;;10465:16;:27;10482:9;10465:27;;;;;;;;;;;;;;;;;;;;;;;;;10425:67;10421:235;;;10500:1;10494:7;;10421:235;;;10560:4;;;;;;;;;;;10547:17;;:9;:17;;;10544:100;;10594:3;10581:10;;10572:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10566:31;;10544:100;;;10641:3;10632:6;;10623;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10617:27;;10544:100;10421:235;10682:11;;;;;;;;;;;:24;;;;;10698:8;;;;;;;;;;;10697:9;10682:24;:42;;;;;10720:4;;;;;;;;;;;10710:14;;:6;:14;;;;10682:42;:53;;;;;10734:1;10728:3;:7;10682:53;10678:72;;;10737:13;:11;:13::i;:::-;10678:72;10763:48;10779:6;10787:9;10807:3;10798:6;:12;;;;:::i;:::-;10763:15;:48::i;:::-;10831:1;10825:3;:7;10822:55;;;10834:43;10850:6;10866:4;10873:3;10834:15;:43::i;:::-;10822:55;9586:1301;9498:1389;;;:::o;12232:400::-;12298:21;12336:1;12322:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12298:40;;12367:4;12349;12354:1;12349:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12393:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12383:4;12388:1;12383:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12419:53;12436:4;12451:6;;;;;;;;;;;12460:11;12419:8;:53::i;:::-;12511:6;;;;;;;;;;;:57;;;12569:11;12582:1;12585:4;12599;12606:15;12511:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12287:345;12232:400;:::o;5762:317::-;5877:6;5852:21;:31;;5844:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5931:12;5949:9;:14;;5971:6;5949:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5930:52;;;6001:7;5993:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;5833:246;5762:317;;:::o;6842:173::-;6898:16;6917:6;;;;;;;;;;;6898:25;;6943:8;6934:6;;:17;;;;;;;;;;;;;;;;;;6998:8;6967:40;;6988:8;6967:40;;;;;;;;;;;;6887:128;6842:173;:::o;10895:1327::-;8829:8;;;;;;;;;;;8824:104;;8865:4;8854:8;;:15;;;;;;;;;;;;;;;;;;10944:23:::1;10970:24;10988:4;10970:9;:24::i;:::-;10944:50;;11028:13;;11009:15;:32;11005:1210;;11068:19;11103:1;11090:10;;:14;;;;:::i;:::-;11068:36;;11119:32;11194:11;11172:9;:19;;;11154:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11119:86;;11220:14;11255:24;11237:15;:42;;;;:::i;:::-;11220:59;;11300:22;11325:21;11300:46;;11367:24;11384:6;11367:16;:24::i;:::-;11412:20;11459:14;11435:21;:38;;;;:::i;:::-;11412:61;;11488:19;11539:9;:19;;;11525:11;:33;;;;:::i;:::-;11509:12;:50;;;;:::i;:::-;11488:71;;11574:29;11620:9;:19;;;11606:11;:33;;;;:::i;:::-;11574:65;;11687:1;11663:21;:25;11660:170;;;11753:61;11766:24;11792:21;11753:12;:61::i;:::-;11660:170;11850:20;11891:9;:19;;;11887:1;11873:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;11850:60;;11943:1;11928:12;:16;11925:103;;;11964:48;11999:12;11972:15;;;;;;;;;;;11964:34;;;;:48;;;;:::i;:::-;11925:103;12056:14;12091:9;:13;;;12087:1;12073:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;12056:48;;12131:1;12122:6;:10;12119:85;;;12152:36;12181:6;12160:9;;;;;;;;;;;12152:28;;;;:36;;;;:::i;:::-;12119:85;11043:1172;;;;;;;;;11005:1210;10933:1289;8911:5:::0;8900:8;;:16;;;;;;;;;;;;;;;;;;8824:104;10895:1327::o;3827:604::-;3951:1;3933:20;;:6;:20;;;3925:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4035:1;4014:23;;:9;:23;;;4006:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4090:47;4111:6;4119:9;4130:6;4090:20;:47::i;:::-;4150:21;4174:9;:17;4184:6;4174:17;;;;;;;;;;;;;;;;4150:41;;4227:6;4210:13;:23;;4202:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4323:6;4307:13;:22;;;;:::i;:::-;4287:9;:17;4297:6;4287:17;;;;;;;;;;;;;;;:42;;;;4364:6;4340:9;:20;4350:9;4340:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4405:9;4388:35;;4397:6;4388:35;;;4416:6;4388:35;;;;;;:::i;:::-;;;;;;;;3914:517;3827:604;;;:::o;12640:497::-;12788:53;12805:4;12820:6;;;;;;;;;;;12829:11;12788:8;:53::i;:::-;12884:6;;;;;;;;;;;:22;;;12914:9;12947:4;12967:11;12993:1;13036;13079:9;;;;;;;;;;;13103:15;12884:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12640:497;;:::o;5641:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:122;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:619::-;2461:6;2469;2477;2526:2;2514:9;2505:7;2501:23;2497:32;2494:119;;;2532:79;;:::i;:::-;2494:119;2652:1;2677:53;2722:7;2713:6;2702:9;2698:22;2677:53;:::i;:::-;2667:63;;2623:117;2779:2;2805:53;2850:7;2841:6;2830:9;2826:22;2805:53;:::i;:::-;2795:63;;2750:118;2907:2;2933:53;2978:7;2969:6;2958:9;2954:22;2933:53;:::i;:::-;2923:63;;2878:118;2384:619;;;;;:::o;3009:126::-;3046:7;3086:42;3079:5;3075:54;3064:65;;3009:126;;;:::o;3141:96::-;3178:7;3207:24;3225:5;3207:24;:::i;:::-;3196:35;;3141:96;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:619::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:111::-;5865:7;5894:24;5912:5;5894:24;:::i;:::-;5883:35;;5813:111;;;:::o;5930:152::-;6018:39;6051:5;6018:39;:::i;:::-;6011:5;6008:50;5998:78;;6072:1;6069;6062:12;5998:78;5930:152;:::o;6088:169::-;6149:5;6187:6;6174:20;6165:29;;6203:48;6245:5;6203:48;:::i;:::-;6088:169;;;;:::o;6263:504::-;6346:6;6354;6403:2;6391:9;6382:7;6378:23;6374:32;6371:119;;;6409:79;;:::i;:::-;6371:119;6529:1;6554:68;6614:7;6605:6;6594:9;6590:22;6554:68;:::i;:::-;6544:78;;6500:132;6671:2;6697:53;6742:7;6733:6;6722:9;6718:22;6697:53;:::i;:::-;6687:63;;6642:118;6263:504;;;;;:::o;6773:329::-;6832:6;6881:2;6869:9;6860:7;6856:23;6852:32;6849:119;;;6887:79;;:::i;:::-;6849:119;7007:1;7032:53;7077:7;7068:6;7057:9;7053:22;7032:53;:::i;:::-;7022:63;;6978:117;6773:329;;;;:::o;7108:442::-;7257:4;7295:2;7284:9;7280:18;7272:26;;7308:71;7376:1;7365:9;7361:17;7352:6;7308:71;:::i;:::-;7389:72;7457:2;7446:9;7442:18;7433:6;7389:72;:::i;:::-;7471;7539:2;7528:9;7524:18;7515:6;7471:72;:::i;:::-;7108:442;;;;;;:::o;7556:118::-;7643:24;7661:5;7643:24;:::i;:::-;7638:3;7631:37;7556:118;;:::o;7680:222::-;7773:4;7811:2;7800:9;7796:18;7788:26;;7824:71;7892:1;7881:9;7877:17;7868:6;7824:71;:::i;:::-;7680:222;;;;:::o;7908:117::-;8017:1;8014;8007:12;8031:180;8079:77;8076:1;8069:88;8176:4;8173:1;8166:15;8200:4;8197:1;8190:15;8217:281;8300:27;8322:4;8300:27;:::i;:::-;8292:6;8288:40;8430:6;8418:10;8415:22;8394:18;8382:10;8379:34;8376:62;8373:88;;;8441:18;;:::i;:::-;8373:88;8481:10;8477:2;8470:22;8260:238;8217:281;;:::o;8504:129::-;8538:6;8565:20;;:::i;:::-;8555:30;;8594:33;8622:4;8614:6;8594:33;:::i;:::-;8504:129;;;:::o;8639:311::-;8716:4;8806:18;8798:6;8795:30;8792:56;;;8828:18;;:::i;:::-;8792:56;8878:4;8870:6;8866:17;8858:25;;8938:4;8932;8928:15;8920:23;;8639:311;;;:::o;8956:117::-;9065:1;9062;9055:12;9096:710;9192:5;9217:81;9233:64;9290:6;9233:64;:::i;:::-;9217:81;:::i;:::-;9208:90;;9318:5;9347:6;9340:5;9333:21;9381:4;9374:5;9370:16;9363:23;;9434:4;9426:6;9422:17;9414:6;9410:30;9463:3;9455:6;9452:15;9449:122;;;9482:79;;:::i;:::-;9449:122;9597:6;9580:220;9614:6;9609:3;9606:15;9580:220;;;9689:3;9718:37;9751:3;9739:10;9718:37;:::i;:::-;9713:3;9706:50;9785:4;9780:3;9776:14;9769:21;;9656:144;9640:4;9635:3;9631:14;9624:21;;9580:220;;;9584:21;9198:608;;9096:710;;;;;:::o;9829:370::-;9900:5;9949:3;9942:4;9934:6;9930:17;9926:27;9916:122;;9957:79;;:::i;:::-;9916:122;10074:6;10061:20;10099:94;10189:3;10181:6;10174:4;10166:6;10162:17;10099:94;:::i;:::-;10090:103;;9906:293;9829:370;;;;:::o;10205:539::-;10289:6;10338:2;10326:9;10317:7;10313:23;10309:32;10306:119;;;10344:79;;:::i;:::-;10306:119;10492:1;10481:9;10477:17;10464:31;10522:18;10514:6;10511:30;10508:117;;;10544:79;;:::i;:::-;10508:117;10649:78;10719:7;10710:6;10699:9;10695:22;10649:78;:::i;:::-;10639:88;;10435:302;10205:539;;;;:::o;10750:474::-;10818:6;10826;10875:2;10863:9;10854:7;10850:23;10846:32;10843:119;;;10881:79;;:::i;:::-;10843:119;11001:1;11026:53;11071:7;11062:6;11051:9;11047:22;11026:53;:::i;:::-;11016:63;;10972:117;11128:2;11154:53;11199:7;11190:6;11179:9;11175:22;11154:53;:::i;:::-;11144:63;;11099:118;10750:474;;;;;:::o;11230:116::-;11300:21;11315:5;11300:21;:::i;:::-;11293:5;11290:32;11280:60;;11336:1;11333;11326:12;11280:60;11230:116;:::o;11352:133::-;11395:5;11433:6;11420:20;11411:29;;11449:30;11473:5;11449:30;:::i;:::-;11352:133;;;;:::o;11491:323::-;11547:6;11596:2;11584:9;11575:7;11571:23;11567:32;11564:119;;;11602:79;;:::i;:::-;11564:119;11722:1;11747:50;11789:7;11780:6;11769:9;11765:22;11747:50;:::i;:::-;11737:60;;11693:114;11491:323;;;;:::o;11820:468::-;11885:6;11893;11942:2;11930:9;11921:7;11917:23;11913:32;11910:119;;;11948:79;;:::i;:::-;11910:119;12068:1;12093:53;12138:7;12129:6;12118:9;12114:22;12093:53;:::i;:::-;12083:63;;12039:117;12195:2;12221:50;12263:7;12254:6;12243:9;12239:22;12221:50;:::i;:::-;12211:60;;12166:115;11820:468;;;;;:::o;12294:60::-;12322:3;12343:5;12336:12;;12294:60;;;:::o;12360:142::-;12410:9;12443:53;12461:34;12470:24;12488:5;12470:24;:::i;:::-;12461:34;:::i;:::-;12443:53;:::i;:::-;12430:66;;12360:142;;;:::o;12508:126::-;12558:9;12591:37;12622:5;12591:37;:::i;:::-;12578:50;;12508:126;;;:::o;12640:141::-;12705:9;12738:37;12769:5;12738:37;:::i;:::-;12725:50;;12640:141;;;:::o;12787:161::-;12889:52;12935:5;12889:52;:::i;:::-;12884:3;12877:65;12787:161;;:::o;12954:252::-;13062:4;13100:2;13089:9;13085:18;13077:26;;13113:86;13196:1;13185:9;13181:17;13172:6;13113:86;:::i;:::-;12954:252;;;;:::o;13212:180::-;13260:77;13257:1;13250:88;13357:4;13354:1;13347:15;13381:4;13378:1;13371:15;13398:320;13442:6;13479:1;13473:4;13469:12;13459:22;;13526:1;13520:4;13516:12;13547:18;13537:81;;13603:4;13595:6;13591:17;13581:27;;13537:81;13665:2;13657:6;13654:14;13634:18;13631:38;13628:84;;13684:18;;:::i;:::-;13628:84;13449:269;13398:320;;;:::o;13724:182::-;13864:34;13860:1;13852:6;13848:14;13841:58;13724:182;:::o;13912:366::-;14054:3;14075:67;14139:2;14134:3;14075:67;:::i;:::-;14068:74;;14151:93;14240:3;14151:93;:::i;:::-;14269:2;14264:3;14260:12;14253:19;;13912:366;;;:::o;14284:419::-;14450:4;14488:2;14477:9;14473:18;14465:26;;14537:9;14531:4;14527:20;14523:1;14512:9;14508:17;14501:47;14565:131;14691:4;14565:131;:::i;:::-;14557:139;;14284:419;;;:::o;14709:180::-;14757:77;14754:1;14747:88;14854:4;14851:1;14844:15;14878:4;14875:1;14868:15;14895:191;14935:3;14954:20;14972:1;14954:20;:::i;:::-;14949:25;;14988:20;15006:1;14988:20;:::i;:::-;14983:25;;15031:1;15028;15024:9;15017:16;;15052:3;15049:1;15046:10;15043:36;;;15059:18;;:::i;:::-;15043:36;14895:191;;;;:::o;15092:227::-;15232:34;15228:1;15220:6;15216:14;15209:58;15301:10;15296:2;15288:6;15284:15;15277:35;15092:227;:::o;15325:366::-;15467:3;15488:67;15552:2;15547:3;15488:67;:::i;:::-;15481:74;;15564:93;15653:3;15564:93;:::i;:::-;15682:2;15677:3;15673:12;15666:19;;15325:366;;;:::o;15697:419::-;15863:4;15901:2;15890:9;15886:18;15878:26;;15950:9;15944:4;15940:20;15936:1;15925:9;15921:17;15914:47;15978:131;16104:4;15978:131;:::i;:::-;15970:139;;15697:419;;;:::o;16122:194::-;16162:4;16182:20;16200:1;16182:20;:::i;:::-;16177:25;;16216:20;16234:1;16216:20;:::i;:::-;16211:25;;16260:1;16257;16253:9;16245:17;;16284:1;16278:4;16275:11;16272:37;;;16289:18;;:::i;:::-;16272:37;16122:194;;;;:::o;16322:410::-;16362:7;16385:20;16403:1;16385:20;:::i;:::-;16380:25;;16419:20;16437:1;16419:20;:::i;:::-;16414:25;;16474:1;16471;16467:9;16496:30;16514:11;16496:30;:::i;:::-;16485:41;;16675:1;16666:7;16662:15;16659:1;16656:22;16636:1;16629:9;16609:83;16586:139;;16705:18;;:::i;:::-;16586:139;16370:362;16322:410;;;;:::o;16738:180::-;16786:77;16783:1;16776:88;16883:4;16880:1;16873:15;16907:4;16904:1;16897:15;16924:185;16964:1;16981:20;16999:1;16981:20;:::i;:::-;16976:25;;17015:20;17033:1;17015:20;:::i;:::-;17010:25;;17054:1;17044:35;;17059:18;;:::i;:::-;17044:35;17101:1;17098;17094:9;17089:14;;16924:185;;;;:::o;17115:172::-;17255:24;17251:1;17243:6;17239:14;17232:48;17115:172;:::o;17293:366::-;17435:3;17456:67;17520:2;17515:3;17456:67;:::i;:::-;17449:74;;17532:93;17621:3;17532:93;:::i;:::-;17650:2;17645:3;17641:12;17634:19;;17293:366;;;:::o;17665:419::-;17831:4;17869:2;17858:9;17854:18;17846:26;;17918:9;17912:4;17908:20;17904:1;17893:9;17889:17;17882:47;17946:131;18072:4;17946:131;:::i;:::-;17938:139;;17665:419;;;:::o;18090:332::-;18211:4;18249:2;18238:9;18234:18;18226:26;;18262:71;18330:1;18319:9;18315:17;18306:6;18262:71;:::i;:::-;18343:72;18411:2;18400:9;18396:18;18387:6;18343:72;:::i;:::-;18090:332;;;;;:::o;18428:137::-;18482:5;18513:6;18507:13;18498:22;;18529:30;18553:5;18529:30;:::i;:::-;18428:137;;;;:::o;18571:345::-;18638:6;18687:2;18675:9;18666:7;18662:23;18658:32;18655:119;;;18693:79;;:::i;:::-;18655:119;18813:1;18838:61;18891:7;18882:6;18871:9;18867:22;18838:61;:::i;:::-;18828:71;;18784:125;18571:345;;;;:::o;18922:224::-;19062:34;19058:1;19050:6;19046:14;19039:58;19131:7;19126:2;19118:6;19114:15;19107:32;18922:224;:::o;19152:366::-;19294:3;19315:67;19379:2;19374:3;19315:67;:::i;:::-;19308:74;;19391:93;19480:3;19391:93;:::i;:::-;19509:2;19504:3;19500:12;19493:19;;19152:366;;;:::o;19524:419::-;19690:4;19728:2;19717:9;19713:18;19705:26;;19777:9;19771:4;19767:20;19763:1;19752:9;19748:17;19741:47;19805:131;19931:4;19805:131;:::i;:::-;19797:139;;19524:419;;;:::o;19949:180::-;19997:77;19994:1;19987:88;20094:4;20091:1;20084:15;20118:4;20115:1;20108:15;20135:233;20174:3;20197:24;20215:5;20197:24;:::i;:::-;20188:33;;20243:66;20236:5;20233:77;20230:103;;20313:18;;:::i;:::-;20230:103;20360:1;20353:5;20349:13;20342:20;;20135:233;;;:::o;20374:225::-;20514:34;20510:1;20502:6;20498:14;20491:58;20583:8;20578:2;20570:6;20566:15;20559:33;20374:225;:::o;20605:366::-;20747:3;20768:67;20832:2;20827:3;20768:67;:::i;:::-;20761:74;;20844:93;20933:3;20844:93;:::i;:::-;20962:2;20957:3;20953:12;20946:19;;20605:366;;;:::o;20977:419::-;21143:4;21181:2;21170:9;21166:18;21158:26;;21230:9;21224:4;21220:20;21216:1;21205:9;21201:17;21194:47;21258:131;21384:4;21258:131;:::i;:::-;21250:139;;20977:419;;;:::o;21402:223::-;21542:34;21538:1;21530:6;21526:14;21519:58;21611:6;21606:2;21598:6;21594:15;21587:31;21402:223;:::o;21631:366::-;21773:3;21794:67;21858:2;21853:3;21794:67;:::i;:::-;21787:74;;21870:93;21959:3;21870:93;:::i;:::-;21988:2;21983:3;21979:12;21972:19;;21631:366;;;:::o;22003:419::-;22169:4;22207:2;22196:9;22192:18;22184:26;;22256:9;22250:4;22246:20;22242:1;22231:9;22227:17;22220:47;22284:131;22410:4;22284:131;:::i;:::-;22276:139;;22003:419;;;:::o;22428:221::-;22568:34;22564:1;22556:6;22552:14;22545:58;22637:4;22632:2;22624:6;22620:15;22613:29;22428:221;:::o;22655:366::-;22797:3;22818:67;22882:2;22877:3;22818:67;:::i;:::-;22811:74;;22894:93;22983:3;22894:93;:::i;:::-;23012:2;23007:3;23003:12;22996:19;;22655:366;;;:::o;23027:419::-;23193:4;23231:2;23220:9;23216:18;23208:26;;23280:9;23274:4;23270:20;23266:1;23255:9;23251:17;23244:47;23308:131;23434:4;23308:131;:::i;:::-;23300:139;;23027:419;;;:::o;23452:228::-;23592:34;23588:1;23580:6;23576:14;23569:58;23661:11;23656:2;23648:6;23644:15;23637:36;23452:228;:::o;23686:366::-;23828:3;23849:67;23913:2;23908:3;23849:67;:::i;:::-;23842:74;;23925:93;24014:3;23925:93;:::i;:::-;24043:2;24038:3;24034:12;24027:19;;23686:366;;;:::o;24058:419::-;24224:4;24262:2;24251:9;24247:18;24239:26;;24311:9;24305:4;24301:20;24297:1;24286:9;24282:17;24275:47;24339:131;24465:4;24339:131;:::i;:::-;24331:139;;24058:419;;;:::o;24483:175::-;24623:27;24619:1;24611:6;24607:14;24600:51;24483:175;:::o;24664:366::-;24806:3;24827:67;24891:2;24886:3;24827:67;:::i;:::-;24820:74;;24903:93;24992:3;24903:93;:::i;:::-;25021:2;25016:3;25012:12;25005:19;;24664:366;;;:::o;25036:419::-;25202:4;25240:2;25229:9;25225:18;25217:26;;25289:9;25283:4;25279:20;25275:1;25264:9;25260:17;25253:47;25317:131;25443:4;25317:131;:::i;:::-;25309:139;;25036:419;;;:::o;25461:172::-;25601:24;25597:1;25589:6;25585:14;25578:48;25461:172;:::o;25639:366::-;25781:3;25802:67;25866:2;25861:3;25802:67;:::i;:::-;25795:74;;25878:93;25967:3;25878:93;:::i;:::-;25996:2;25991:3;25987:12;25980:19;;25639:366;;;:::o;26011:419::-;26177:4;26215:2;26204:9;26200:18;26192:26;;26264:9;26258:4;26254:20;26250:1;26239:9;26235:17;26228:47;26292:131;26418:4;26292:131;:::i;:::-;26284:139;;26011:419;;;:::o;26436:179::-;26576:31;26572:1;26564:6;26560:14;26553:55;26436:179;:::o;26621:366::-;26763:3;26784:67;26848:2;26843:3;26784:67;:::i;:::-;26777:74;;26860:93;26949:3;26860:93;:::i;:::-;26978:2;26973:3;26969:12;26962:19;;26621:366;;;:::o;26993:419::-;27159:4;27197:2;27186:9;27182:18;27174:26;;27246:9;27240:4;27236:20;27232:1;27221:9;27217:17;27210:47;27274:131;27400:4;27274:131;:::i;:::-;27266:139;;26993:419;;;:::o;27418:220::-;27558:34;27554:1;27546:6;27542:14;27535:58;27627:3;27622:2;27614:6;27610:15;27603:28;27418:220;:::o;27644:366::-;27786:3;27807:67;27871:2;27866:3;27807:67;:::i;:::-;27800:74;;27883:93;27972:3;27883:93;:::i;:::-;28001:2;27996:3;27992:12;27985:19;;27644:366;;;:::o;28016:419::-;28182:4;28220:2;28209:9;28205:18;28197:26;;28269:9;28263:4;28259:20;28255:1;28244:9;28240:17;28233:47;28297:131;28423:4;28297:131;:::i;:::-;28289:139;;28016:419;;;:::o;28441:143::-;28498:5;28529:6;28523:13;28514:22;;28545:33;28572:5;28545:33;:::i;:::-;28441:143;;;;:::o;28590:351::-;28660:6;28709:2;28697:9;28688:7;28684:23;28680:32;28677:119;;;28715:79;;:::i;:::-;28677:119;28835:1;28860:64;28916:7;28907:6;28896:9;28892:22;28860:64;:::i;:::-;28850:74;;28806:128;28590:351;;;;:::o;28947:85::-;28992:7;29021:5;29010:16;;28947:85;;;:::o;29038:158::-;29096:9;29129:61;29147:42;29156:32;29182:5;29156:32;:::i;:::-;29147:42;:::i;:::-;29129:61;:::i;:::-;29116:74;;29038:158;;;:::o;29202:147::-;29297:45;29336:5;29297:45;:::i;:::-;29292:3;29285:58;29202:147;;:::o;29355:114::-;29422:6;29456:5;29450:12;29440:22;;29355:114;;;:::o;29475:184::-;29574:11;29608:6;29603:3;29596:19;29648:4;29643:3;29639:14;29624:29;;29475:184;;;;:::o;29665:132::-;29732:4;29755:3;29747:11;;29785:4;29780:3;29776:14;29768:22;;29665:132;;;:::o;29803:108::-;29880:24;29898:5;29880:24;:::i;:::-;29875:3;29868:37;29803:108;;:::o;29917:179::-;29986:10;30007:46;30049:3;30041:6;30007:46;:::i;:::-;30085:4;30080:3;30076:14;30062:28;;29917:179;;;;:::o;30102:113::-;30172:4;30204;30199:3;30195:14;30187:22;;30102:113;;;:::o;30251:732::-;30370:3;30399:54;30447:5;30399:54;:::i;:::-;30469:86;30548:6;30543:3;30469:86;:::i;:::-;30462:93;;30579:56;30629:5;30579:56;:::i;:::-;30658:7;30689:1;30674:284;30699:6;30696:1;30693:13;30674:284;;;30775:6;30769:13;30802:63;30861:3;30846:13;30802:63;:::i;:::-;30795:70;;30888:60;30941:6;30888:60;:::i;:::-;30878:70;;30734:224;30721:1;30718;30714:9;30709:14;;30674:284;;;30678:14;30974:3;30967:10;;30375:608;;;30251:732;;;;:::o;30989:831::-;31252:4;31290:3;31279:9;31275:19;31267:27;;31304:71;31372:1;31361:9;31357:17;31348:6;31304:71;:::i;:::-;31385:80;31461:2;31450:9;31446:18;31437:6;31385:80;:::i;:::-;31512:9;31506:4;31502:20;31497:2;31486:9;31482:18;31475:48;31540:108;31643:4;31634:6;31540:108;:::i;:::-;31532:116;;31658:72;31726:2;31715:9;31711:18;31702:6;31658:72;:::i;:::-;31740:73;31808:3;31797:9;31793:19;31784:6;31740:73;:::i;:::-;30989:831;;;;;;;;:::o;31826:179::-;31966:31;31962:1;31954:6;31950:14;31943:55;31826:179;:::o;32011:366::-;32153:3;32174:67;32238:2;32233:3;32174:67;:::i;:::-;32167:74;;32250:93;32339:3;32250:93;:::i;:::-;32368:2;32363:3;32359:12;32352:19;;32011:366;;;:::o;32383:419::-;32549:4;32587:2;32576:9;32572:18;32564:26;;32636:9;32630:4;32626:20;32622:1;32611:9;32607:17;32600:47;32664:131;32790:4;32664:131;:::i;:::-;32656:139;;32383:419;;;:::o;32808:147::-;32909:11;32946:3;32931:18;;32808:147;;;;:::o;32961:114::-;;:::o;33081:398::-;33240:3;33261:83;33342:1;33337:3;33261:83;:::i;:::-;33254:90;;33353:93;33442:3;33353:93;:::i;:::-;33471:1;33466:3;33462:11;33455:18;;33081:398;;;:::o;33485:379::-;33669:3;33691:147;33834:3;33691:147;:::i;:::-;33684:154;;33855:3;33848:10;;33485:379;;;:::o;33870:245::-;34010:34;34006:1;33998:6;33994:14;33987:58;34079:28;34074:2;34066:6;34062:15;34055:53;33870:245;:::o;34121:366::-;34263:3;34284:67;34348:2;34343:3;34284:67;:::i;:::-;34277:74;;34360:93;34449:3;34360:93;:::i;:::-;34478:2;34473:3;34469:12;34462:19;;34121:366;;;:::o;34493:419::-;34659:4;34697:2;34686:9;34682:18;34674:26;;34746:9;34740:4;34736:20;34732:1;34721:9;34717:17;34710:47;34774:131;34900:4;34774:131;:::i;:::-;34766:139;;34493:419;;;:::o;34918:224::-;35058:34;35054:1;35046:6;35042:14;35035:58;35127:7;35122:2;35114:6;35110:15;35103:32;34918:224;:::o;35148:366::-;35290:3;35311:67;35375:2;35370:3;35311:67;:::i;:::-;35304:74;;35387:93;35476:3;35387:93;:::i;:::-;35505:2;35500:3;35496:12;35489:19;;35148:366;;;:::o;35520:419::-;35686:4;35724:2;35713:9;35709:18;35701:26;;35773:9;35767:4;35763:20;35759:1;35748:9;35744:17;35737:47;35801:131;35927:4;35801:131;:::i;:::-;35793:139;;35520:419;;;:::o;35945:222::-;36085:34;36081:1;36073:6;36069:14;36062:58;36154:5;36149:2;36141:6;36137:15;36130:30;35945:222;:::o;36173:366::-;36315:3;36336:67;36400:2;36395:3;36336:67;:::i;:::-;36329:74;;36412:93;36501:3;36412:93;:::i;:::-;36530:2;36525:3;36521:12;36514:19;;36173:366;;;:::o;36545:419::-;36711:4;36749:2;36738:9;36734:18;36726:26;;36798:9;36792:4;36788:20;36784:1;36773:9;36769:17;36762:47;36826:131;36952:4;36826:131;:::i;:::-;36818:139;;36545:419;;;:::o;36970:225::-;37110:34;37106:1;37098:6;37094:14;37087:58;37179:8;37174:2;37166:6;37162:15;37155:33;36970:225;:::o;37201:366::-;37343:3;37364:67;37428:2;37423:3;37364:67;:::i;:::-;37357:74;;37440:93;37529:3;37440:93;:::i;:::-;37558:2;37553:3;37549:12;37542:19;;37201:366;;;:::o;37573:419::-;37739:4;37777:2;37766:9;37762:18;37754:26;;37826:9;37820:4;37816:20;37812:1;37801:9;37797:17;37790:47;37854:131;37980:4;37854:131;:::i;:::-;37846:139;;37573:419;;;:::o;37998:807::-;38247:4;38285:3;38274:9;38270:19;38262:27;;38299:71;38367:1;38356:9;38352:17;38343:6;38299:71;:::i;:::-;38380:72;38448:2;38437:9;38433:18;38424:6;38380:72;:::i;:::-;38462:80;38538:2;38527:9;38523:18;38514:6;38462:80;:::i;:::-;38552;38628:2;38617:9;38613:18;38604:6;38552:80;:::i;:::-;38642:73;38710:3;38699:9;38695:19;38686:6;38642:73;:::i;:::-;38725;38793:3;38782:9;38778:19;38769:6;38725:73;:::i;:::-;37998:807;;;;;;;;;:::o;38811:143::-;38868:5;38899:6;38893:13;38884:22;;38915:33;38942:5;38915:33;:::i;:::-;38811:143;;;;:::o;38960:663::-;39048:6;39056;39064;39113:2;39101:9;39092:7;39088:23;39084:32;39081:119;;;39119:79;;:::i;:::-;39081:119;39239:1;39264:64;39320:7;39311:6;39300:9;39296:22;39264:64;:::i;:::-;39254:74;;39210:128;39377:2;39403:64;39459:7;39450:6;39439:9;39435:22;39403:64;:::i;:::-;39393:74;;39348:129;39516:2;39542:64;39598:7;39589:6;39578:9;39574:22;39542:64;:::i;:::-;39532:74;;39487:129;38960:663;;;;;:::o

Swarm Source

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