ETH Price: $3,435.86 (-0.54%)
Gas: 8 Gwei

Token

Ethereal Fluid (ICHOR)
 

Overview

Max Total Supply

10,000,000,000 ICHOR

Holders

167

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
41,089,587.272189201 ICHOR

Value
$0.00
0xa9b98f808ff48b3e99c04f0f30439b0f01bc0667
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:
ICHOR

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/*
;chor
*/

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}  

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

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

contract ICHOR is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant _tTotal = 1e10 * 10**9;
    
    uint256 private _buyProjectFee = 4;
    uint256 private _previousBuyProjectFee = _buyProjectFee;
    
    uint256 private _sellProjectFee = 4;
    uint256 private _previousSellProjectFee = _sellProjectFee;
       
    address payable private _projectWallet;
    
    string private constant _name = "Ethereal Fluid";
    string private constant _symbol = "ICHOR";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private tradingActiveBlock = 0; // 0 means trading is not active
    uint256 private blocksToBlacklist = 9;
    uint256 private _maxBuyAmount = _tTotal;
    uint256 private _maxSellAmount = _tTotal;
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private swapTokensAtAmount = 0;
    
    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event MaxSellAmountUpdated(uint _maxSellAmount);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address _uniswapV2Router, address projectWallet) {
        uniswapV2Router = IUniswapV2Router02(_uniswapV2Router);

        _projectWallet = payable(projectWallet);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_projectWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFee = false;
        bool shouldSwap = false;
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            require(!bots[from] && !bots[to]);

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from] && cooldownEnabled) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        _tokenTransfer(from,to,amount,takeFee, shouldSwap);
    }

    function swapBack() private {
        uint256 tokensForProject = balanceOf(address(this));
        
        bool success;
        
        if(tokensForProject == 0) {return;}

        if(tokensForProject > swapTokensAtAmount * 10) {
            tokensForProject = swapTokensAtAmount * 10;
        }
                
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(tokensForProject); 
                              
        (success,) = address(_projectWallet).call{value: address(this).balance - initialETHBalance}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
       
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");        
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxBuyAmount = 5e7 * 10**9;
        _maxSellAmount = 5e7 * 10**9;
        _maxWalletAmount = 1e8 * 10**9;
        swapTokensAtAmount = 5e6 * 10**9;
        tradingOpen = true;
        tradingActiveBlock = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setMaxBuyAmount(uint256 maxBuy) public onlyOwner {
        _maxBuyAmount = maxBuy;
    }

    function setMaxSellAmount(uint256 maxSell) public onlyOwner {
        _maxSellAmount = maxSell;
    }
    
    function setMaxWalletAmount(uint256 maxToken) public onlyOwner {
        _maxWalletAmount = maxToken;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount) public onlyOwner {
        require(newAmount >= 1e3 * 10**9, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= 5e6 * 10**9, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function setProjectWallet(address projectWallet) public onlyOwner() {
        require(projectWallet != address(0), "projectWallet address cannot be 0");
        _isExcludedFromFee[_projectWallet] = false;
        _projectWallet = payable(projectWallet);
        _isExcludedFromFee[_projectWallet] = true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyFee(uint256 buyProjectFee) external onlyOwner {
        require(buyProjectFee <= 5, "Buy tax is hard coded to remain under 5%");
        _buyProjectFee = buyProjectFee;
    }

    function setSellFee(uint256 sellProjectFee) external onlyOwner {
        require(sellProjectFee <= 99, "this is to help get rid of bots at launch. rest assured there are no bots when you ape frens!");
        _sellProjectFee = sellProjectFee;
        
    }

    function setBlocksToBlacklist(uint256 blocks) public onlyOwner {
        blocksToBlacklist = blocks;
    }

    function removeAllFee() private {
        if(_buyProjectFee == 0 && _sellProjectFee == 0) return;
        
        _previousBuyProjectFee = _buyProjectFee;
        _previousSellProjectFee = _sellProjectFee;
                
        _buyProjectFee = 0;
        _sellProjectFee = 0;        
    }
    
    function restoreAllFee() private {
        _buyProjectFee = _previousBuyProjectFee;
        _sellProjectFee = _previousSellProjectFee;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 pjctFee;
        if(tradingActiveBlock + blocksToBlacklist >= block.number){
            pjctFee = 99;            
        } else {
            if (isSell) {
                pjctFee = _sellProjectFee;                
            } else {
                pjctFee = _buyProjectFee;                
            }
        }
                
        uint256 tokensForProject = amount.mul(pjctFee).div(100);
        if(tokensForProject > 0) {
            _transferStandard(sender, address(this), tokensForProject);
        }
            
        return amount -= tokensForProject;
    }

    receive() external payable {}

    function manualswap() public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_uniswapV2Router","type":"address"},{"internalType":"address","name":"projectWallet","type":"address"}],"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":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","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":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setBlocksToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyProjectFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"projectWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellProjectFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260046007556007546008556004600955600954600a556000600d60166101000a81548160ff0219169083151502179055506000600d60176101000a81548160ff0219169083151502179055506000600d60186101000a81548160ff0219169083151502179055506000600e556009600f55678ac7230489e80000601055678ac7230489e80000601155678ac7230489e800006012556000601355348015620000ab57600080fd5b5060405162004be638038062004be68339818101604052810190620000d1919062000466565b6000620000e36200041e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550678ac7230489e8000060026000620002206200041e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620002746200042660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003a76200041e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e800006040516200040e9190620004b8565b60405180910390a350506200052d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620004608162000513565b92915050565b600080604083850312156200047a57600080fd5b60006200048a858286016200044f565b92505060206200049d858286016200044f565b9150509250929050565b620004b28162000509565b82525050565b6000602082019050620004cf6000830184620004a7565b92915050565b6000620004e282620004e9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6200051e81620004d5565b81146200052a57600080fd5b50565b6146a9806200053d6000396000f3fe6080604052600436106101d15760003560e01c80638b4cee08116100f7578063c9567bf911610095578063e99c9d0911610064578063e99c9d0914610643578063ea2f0b371461066c578063f34eb0b814610695578063f5648a4f146106be576101d8565b8063c9567bf91461059d578063dd62ed3e146105b4578063e01af92c146105f1578063e6f7ef4d1461061a576101d8565b8063a9059cbb116100d1578063a9059cbb146104f7578063afa4f3b214610534578063b515566a1461055d578063c3c8cd8014610586576101d8565b80638b4cee08146104785780638da5cb5b146104a157806395d89b41146104cc576101d8565b806327a14fc21161016f5780635932ead11161013e5780635932ead1146103d257806370a08231146103fb578063715018a6146104385780638a7804471461044f576101d8565b806327a14fc21461032a578063313ce56714610353578063437823ec1461037e57806349bd5a5e146103a7576101d8565b80631694505e116101ab5780631694505e1461026e57806318160ddd1461029957806323b872dd146102c4578063273123b714610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780630cc835a314610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106d5565b6040516101ff9190613aa2565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906134b4565b610712565b60405161023c9190613a6c565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190613583565b610730565b005b34801561027a57600080fd5b50610283610813565b6040516102909190613a87565b60405180910390f35b3480156102a557600080fd5b506102ae610839565b6040516102bb9190613ce4565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190613465565b610849565b6040516102f89190613a6c565b60405180910390f35b34801561030d57600080fd5b50610328600480360381019061032391906133d7565b610922565b005b34801561033657600080fd5b50610351600480360381019061034c9190613583565b610a12565b005b34801561035f57600080fd5b50610368610ab1565b6040516103759190613d59565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a091906133d7565b610aba565b005b3480156103b357600080fd5b506103bc610baa565b6040516103c9919061399e565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613531565b610bd0565b005b34801561040757600080fd5b50610422600480360381019061041d91906133d7565b610c82565b60405161042f9190613ce4565b60405180910390f35b34801561044457600080fd5b5061044d610ccb565b005b34801561045b57600080fd5b50610476600480360381019061047191906133d7565b610e1e565b005b34801561048457600080fd5b5061049f600480360381019061049a9190613583565b61105b565b005b3480156104ad57600080fd5b506104b661113e565b6040516104c3919061399e565b60405180910390f35b3480156104d857600080fd5b506104e1611167565b6040516104ee9190613aa2565b60405180910390f35b34801561050357600080fd5b5061051e600480360381019061051991906134b4565b6111a4565b60405161052b9190613a6c565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190613583565b6111c2565b005b34801561056957600080fd5b50610584600480360381019061057f91906134f0565b6112f3565b005b34801561059257600080fd5b5061059b611443565b005b3480156105a957600080fd5b506105b26114f1565b005b3480156105c057600080fd5b506105db60048036038101906105d69190613429565b611a66565b6040516105e89190613ce4565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613531565b611aed565b005b34801561062657600080fd5b50610641600480360381019061063c9190613583565b611b9f565b005b34801561064f57600080fd5b5061066a60048036038101906106659190613583565b611c3e565b005b34801561067857600080fd5b50610693600480360381019061068e91906133d7565b611cdd565b005b3480156106a157600080fd5b506106bc60048036038101906106b79190613583565b611dcd565b005b3480156106ca57600080fd5b506106d3611e6c565b005b60606040518060400160405280600e81526020017f457468657265616c20466c756964000000000000000000000000000000000000815250905090565b600061072661071f611f72565b8484611f7a565b6001905092915050565b610738611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bc90613c24565b60405180910390fd5b6005811115610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090613b24565b60405180910390fd5b8060078190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b6000610856848484612145565b61091784610862611f72565b6109128560405180606001604052806028815260200161464c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c8611f72565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e59092919063ffffffff16565b611f7a565b600190509392505050565b61092a611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90613c24565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a1a611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e90613c24565b60405180910390fd5b8060128190555050565b60006009905090565b610ac2611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690613c24565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd8611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613c24565b60405180910390fd5b80600d60186101000a81548160ff02191690831515021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cd3611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790613c24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e26611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613c24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a90613b44565b60405180910390fd5b600060046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611063611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790613c24565b60405180910390fd5b6063811115611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90613b64565b60405180910390fd5b8060098190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4943484f52000000000000000000000000000000000000000000000000000000815250905090565b60006111b86111b1611f72565b8484612145565b6001905092915050565b6111ca611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90613c24565b60405180910390fd5b64e8d4a5100081101561129f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129690613b84565b60405180910390fd5b6611c37937e080008111156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090613ba4565b60405180910390fd5b8060138190555050565b6112fb611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90613c24565b60405180910390fd5b60005b815181101561143f576001600560008484815181106113d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061143790614029565b91505061138b565b5050565b61144b611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf90613c24565b60405180910390fd5b60006114e330610c82565b90506114ee81612a49565b50565b6114f9611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90613c24565b60405180910390fd5b600d60149054906101000a900460ff16156115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90613ca4565b60405180910390fd5b61160b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e80000611f7a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167357600080fd5b505afa158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab9190613400565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561172f57600080fd5b505afa158015611743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117679190613400565b6040518363ffffffff1660e01b81526004016117849291906139b9565b602060405180830381600087803b15801561179e57600080fd5b505af11580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190613400565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061185f30610c82565b60008061186a61113e565b426040518863ffffffff1660e01b815260040161188c96959493929190613a0b565b6060604051808303818588803b1580156118a557600080fd5b505af11580156118b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118de91906135ac565b5050506001600d60176101000a81548160ff0219169083151502179055506001600d60186101000a81548160ff02191690831515021790555066b1a2bc2ec5000060108190555066b1a2bc2ec5000060118190555067016345785d8a00006012819055506611c37937e080006013819055506001600d60146101000a81548160ff02191690831515021790555043600e81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a119291906139e2565b602060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a63919061355a565b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611af5611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7990613c24565b60405180910390fd5b80600d60176101000a81548160ff02191690831515021790555050565b611ba7611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b90613c24565b60405180910390fd5b80600f8190555050565b611c46611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90613c24565b60405180910390fd5b8060118190555050565b611ce5611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990613c24565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611dd5611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990613c24565b60405180910390fd5b8060108190555050565b611e74611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890613c24565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611f2790613989565b60006040518083038185875af1925050503d8060008114611f64576040519150601f19603f3d011682016040523d82523d6000602084013e611f69565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe190613c84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190613ae4565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121389190613ce4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ac90613c64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221c90613ac4565b60405180910390fd5b60008111612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f90613c44565b60405180910390fd5b60008061227361113e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156122e157506122b161113e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561231a5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612354575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561236d5750600d60159054906101000a900460ff16155b156127e357600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124165750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61241f57600080fd5b60019150600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156124ce5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156125245750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561253c5750600d60189054906101000a900460ff165b1561267a57601054831115612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d90613be4565b60405180910390fd5b6012548361259386610c82565b61259d9190613e25565b11156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d590613bc4565b60405180910390fd5b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061262957600080fd5b601e426126369190613e25565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156127255750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561277b5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127935750600d60189054906101000a900460ff165b156127e2576011548311156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490613cc4565b60405180910390fd5b600190505b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128845750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561288e57600091505b600061289930610c82565b90506000601354821180156128ab5750825b90508080156128c65750600d60179054906101000a900460ff165b80156128df5750600d60159054906101000a900460ff16155b80156129355750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561298b5750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129cf576001600d60156101000a81548160ff0219169083151502179055506129b3612d43565b6000600d60156101000a81548160ff0219169083151502179055505b6129dc8787878787612e36565b50505050505050565b6000838311158290612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a249190613aa2565b60405180910390fd5b5060008385612a3c9190613f06565b9050809150509392505050565b6001600d60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612aa7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612ad55781602001602082028036833780820191505090505b5090503081600081518110612b13577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb557600080fd5b505afa158015612bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bed9190613400565b81600181518110612c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c8e30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cf2959493929190613cff565b600060405180830381600087803b158015612d0c57600080fd5b505af1158015612d20573d6000803e3d6000fd5b50505050506000600d60166101000a81548160ff02191690831515021790555050565b6000612d4e30610c82565b9050600080821415612d61575050612e34565b600a601354612d709190613eac565b821115612d8957600a601354612d869190613eac565b91505b6000479050612d9783612a49565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168147612ddc9190613f06565b604051612de890613989565b60006040518083038185875af1925050503d8060008114612e25576040519150601f19603f3d011682016040523d82523d6000602084013e612e2a565b606091505b5050809250505050505b565b81612e4857612e43612e76565b612e56565b612e53858483612eb9565b92505b612e61858585612f4b565b81612e6f57612e6e6130df565b5b5050505050565b6000600754148015612e8a57506000600954145b15612e9457612eb7565b600754600881905550600954600a81905550600060078190555060006009819055505b565b60008043600f54600e54612ecd9190613e25565b10612edb5760639050612ef2565b8215612eeb576009549050612ef1565b60075490505b5b6000612f1a6064612f0c84886130f390919063ffffffff16565b61316e90919063ffffffff16565b90506000811115612f3157612f30863083612f4b565b5b8085612f3d9190613f06565b945084925050509392505050565b612f9d81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061303281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320290919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130d29190613ce4565b60405180910390a3505050565b600854600781905550600a54600981905550565b6000808314156131065760009050613168565b600082846131149190613eac565b90508284826131239190613e7b565b14613163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315a90613c04565b60405180910390fd5b809150505b92915050565b60006131b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613260565b905092915050565b60006131fa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129e5565b905092915050565b60008082846132119190613e25565b905083811015613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324d90613b04565b60405180910390fd5b8091505092915050565b600080831182906132a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329e9190613aa2565b60405180910390fd5b50600083856132b69190613e7b565b9050809150509392505050565b60006132d66132d184613d99565b613d74565b905080838252602082019050828560208602820111156132f557600080fd5b60005b85811015613325578161330b888261332f565b8452602084019350602083019250506001810190506132f8565b5050509392505050565b60008135905061333e81614606565b92915050565b60008151905061335381614606565b92915050565b600082601f83011261336a57600080fd5b813561337a8482602086016132c3565b91505092915050565b6000813590506133928161461d565b92915050565b6000815190506133a78161461d565b92915050565b6000813590506133bc81614634565b92915050565b6000815190506133d181614634565b92915050565b6000602082840312156133e957600080fd5b60006133f78482850161332f565b91505092915050565b60006020828403121561341257600080fd5b600061342084828501613344565b91505092915050565b6000806040838503121561343c57600080fd5b600061344a8582860161332f565b925050602061345b8582860161332f565b9150509250929050565b60008060006060848603121561347a57600080fd5b60006134888682870161332f565b93505060206134998682870161332f565b92505060406134aa868287016133ad565b9150509250925092565b600080604083850312156134c757600080fd5b60006134d58582860161332f565b92505060206134e6858286016133ad565b9150509250929050565b60006020828403121561350257600080fd5b600082013567ffffffffffffffff81111561351c57600080fd5b61352884828501613359565b91505092915050565b60006020828403121561354357600080fd5b600061355184828501613383565b91505092915050565b60006020828403121561356c57600080fd5b600061357a84828501613398565b91505092915050565b60006020828403121561359557600080fd5b60006135a3848285016133ad565b91505092915050565b6000806000606084860312156135c157600080fd5b60006135cf868287016133c2565b93505060206135e0868287016133c2565b92505060406135f1868287016133c2565b9150509250925092565b60006136078383613613565b60208301905092915050565b61361c81613f3a565b82525050565b61362b81613f3a565b82525050565b600061363c82613dd5565b6136468185613df8565b935061365183613dc5565b8060005b8381101561368257815161366988826135fb565b975061367483613deb565b925050600181019050613655565b5085935050505092915050565b61369881613f4c565b82525050565b6136a781613f8f565b82525050565b6136b681613fb3565b82525050565b60006136c782613de0565b6136d18185613e14565b93506136e1818560208601613fc5565b6136ea816140ff565b840191505092915050565b6000613702602383613e14565b915061370d82614110565b604082019050919050565b6000613725602283613e14565b91506137308261415f565b604082019050919050565b6000613748601b83613e14565b9150613753826141ae565b602082019050919050565b600061376b602883613e14565b9150613776826141d7565b604082019050919050565b600061378e602183613e14565b915061379982614226565b604082019050919050565b60006137b1605d83613e14565b91506137bc82614275565b606082019050919050565b60006137d4603583613e14565b91506137df826142ea565b604082019050919050565b60006137f7603483613e14565b915061380282614339565b604082019050919050565b600061381a602483613e14565b915061382582614388565b604082019050919050565b600061383d602983613e14565b9150613848826143d7565b604082019050919050565b6000613860602183613e14565b915061386b82614426565b604082019050919050565b6000613883602083613e14565b915061388e82614475565b602082019050919050565b60006138a6602983613e14565b91506138b18261449e565b604082019050919050565b60006138c9602583613e14565b91506138d4826144ed565b604082019050919050565b60006138ec600083613e09565b91506138f78261453c565b600082019050919050565b600061390f602483613e14565b915061391a8261453f565b604082019050919050565b6000613932601783613e14565b915061393d8261458e565b602082019050919050565b6000613955602a83613e14565b9150613960826145b7565b604082019050919050565b61397481613f78565b82525050565b61398381613f82565b82525050565b6000613994826138df565b9150819050919050565b60006020820190506139b36000830184613622565b92915050565b60006040820190506139ce6000830185613622565b6139db6020830184613622565b9392505050565b60006040820190506139f76000830185613622565b613a04602083018461396b565b9392505050565b600060c082019050613a206000830189613622565b613a2d602083018861396b565b613a3a60408301876136ad565b613a4760608301866136ad565b613a546080830185613622565b613a6160a083018461396b565b979650505050505050565b6000602082019050613a81600083018461368f565b92915050565b6000602082019050613a9c600083018461369e565b92915050565b60006020820190508181036000830152613abc81846136bc565b905092915050565b60006020820190508181036000830152613add816136f5565b9050919050565b60006020820190508181036000830152613afd81613718565b9050919050565b60006020820190508181036000830152613b1d8161373b565b9050919050565b60006020820190508181036000830152613b3d8161375e565b9050919050565b60006020820190508181036000830152613b5d81613781565b9050919050565b60006020820190508181036000830152613b7d816137a4565b9050919050565b60006020820190508181036000830152613b9d816137c7565b9050919050565b60006020820190508181036000830152613bbd816137ea565b9050919050565b60006020820190508181036000830152613bdd8161380d565b9050919050565b60006020820190508181036000830152613bfd81613830565b9050919050565b60006020820190508181036000830152613c1d81613853565b9050919050565b60006020820190508181036000830152613c3d81613876565b9050919050565b60006020820190508181036000830152613c5d81613899565b9050919050565b60006020820190508181036000830152613c7d816138bc565b9050919050565b60006020820190508181036000830152613c9d81613902565b9050919050565b60006020820190508181036000830152613cbd81613925565b9050919050565b60006020820190508181036000830152613cdd81613948565b9050919050565b6000602082019050613cf9600083018461396b565b92915050565b600060a082019050613d14600083018861396b565b613d2160208301876136ad565b8181036040830152613d338186613631565b9050613d426060830185613622565b613d4f608083018461396b565b9695505050505050565b6000602082019050613d6e600083018461397a565b92915050565b6000613d7e613d8f565b9050613d8a8282613ff8565b919050565b6000604051905090565b600067ffffffffffffffff821115613db457613db36140d0565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613e3082613f78565b9150613e3b83613f78565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e7057613e6f614072565b5b828201905092915050565b6000613e8682613f78565b9150613e9183613f78565b925082613ea157613ea06140a1565b5b828204905092915050565b6000613eb782613f78565b9150613ec283613f78565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613efb57613efa614072565b5b828202905092915050565b6000613f1182613f78565b9150613f1c83613f78565b925082821015613f2f57613f2e614072565b5b828203905092915050565b6000613f4582613f58565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613f9a82613fa1565b9050919050565b6000613fac82613f58565b9050919050565b6000613fbe82613f78565b9050919050565b60005b83811015613fe3578082015181840152602081019050613fc8565b83811115613ff2576000848401525b50505050565b614001826140ff565b810181811067ffffffffffffffff821117156140205761401f6140d0565b5b80604052505050565b600061403482613f78565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561406757614066614072565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f42757920746178206973206861726420636f64656420746f2072656d61696e2060008201527f756e646572203525000000000000000000000000000000000000000000000000602082015250565b7f70726f6a65637457616c6c657420616464726573732063616e6e6f742062652060008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b7f7468697320697320746f2068656c702067657420726964206f6620626f74732060008201527f6174206c61756e63682e2072657374206173737572656420746865726520617260208201527f65206e6f20626f7473207768656e20796f7520617065206672656e7321000000604082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b61460f81613f3a565b811461461a57600080fd5b50565b61462681613f4c565b811461463157600080fd5b50565b61463d81613f78565b811461464857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203d31b08fa95daf5d7eafcf6a1a06d1242e89107dbd2dac67fd5e1d03f032d54a64736f6c634300080400330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000071c7122ed2b8e5608b4beb65cf69f944e3d888f

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80638b4cee08116100f7578063c9567bf911610095578063e99c9d0911610064578063e99c9d0914610643578063ea2f0b371461066c578063f34eb0b814610695578063f5648a4f146106be576101d8565b8063c9567bf91461059d578063dd62ed3e146105b4578063e01af92c146105f1578063e6f7ef4d1461061a576101d8565b8063a9059cbb116100d1578063a9059cbb146104f7578063afa4f3b214610534578063b515566a1461055d578063c3c8cd8014610586576101d8565b80638b4cee08146104785780638da5cb5b146104a157806395d89b41146104cc576101d8565b806327a14fc21161016f5780635932ead11161013e5780635932ead1146103d257806370a08231146103fb578063715018a6146104385780638a7804471461044f576101d8565b806327a14fc21461032a578063313ce56714610353578063437823ec1461037e57806349bd5a5e146103a7576101d8565b80631694505e116101ab5780631694505e1461026e57806318160ddd1461029957806323b872dd146102c4578063273123b714610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780630cc835a314610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106d5565b6040516101ff9190613aa2565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906134b4565b610712565b60405161023c9190613a6c565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190613583565b610730565b005b34801561027a57600080fd5b50610283610813565b6040516102909190613a87565b60405180910390f35b3480156102a557600080fd5b506102ae610839565b6040516102bb9190613ce4565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190613465565b610849565b6040516102f89190613a6c565b60405180910390f35b34801561030d57600080fd5b50610328600480360381019061032391906133d7565b610922565b005b34801561033657600080fd5b50610351600480360381019061034c9190613583565b610a12565b005b34801561035f57600080fd5b50610368610ab1565b6040516103759190613d59565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a091906133d7565b610aba565b005b3480156103b357600080fd5b506103bc610baa565b6040516103c9919061399e565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613531565b610bd0565b005b34801561040757600080fd5b50610422600480360381019061041d91906133d7565b610c82565b60405161042f9190613ce4565b60405180910390f35b34801561044457600080fd5b5061044d610ccb565b005b34801561045b57600080fd5b50610476600480360381019061047191906133d7565b610e1e565b005b34801561048457600080fd5b5061049f600480360381019061049a9190613583565b61105b565b005b3480156104ad57600080fd5b506104b661113e565b6040516104c3919061399e565b60405180910390f35b3480156104d857600080fd5b506104e1611167565b6040516104ee9190613aa2565b60405180910390f35b34801561050357600080fd5b5061051e600480360381019061051991906134b4565b6111a4565b60405161052b9190613a6c565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190613583565b6111c2565b005b34801561056957600080fd5b50610584600480360381019061057f91906134f0565b6112f3565b005b34801561059257600080fd5b5061059b611443565b005b3480156105a957600080fd5b506105b26114f1565b005b3480156105c057600080fd5b506105db60048036038101906105d69190613429565b611a66565b6040516105e89190613ce4565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613531565b611aed565b005b34801561062657600080fd5b50610641600480360381019061063c9190613583565b611b9f565b005b34801561064f57600080fd5b5061066a60048036038101906106659190613583565b611c3e565b005b34801561067857600080fd5b50610693600480360381019061068e91906133d7565b611cdd565b005b3480156106a157600080fd5b506106bc60048036038101906106b79190613583565b611dcd565b005b3480156106ca57600080fd5b506106d3611e6c565b005b60606040518060400160405280600e81526020017f457468657265616c20466c756964000000000000000000000000000000000000815250905090565b600061072661071f611f72565b8484611f7a565b6001905092915050565b610738611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bc90613c24565b60405180910390fd5b6005811115610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080090613b24565b60405180910390fd5b8060078190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b6000610856848484612145565b61091784610862611f72565b6109128560405180606001604052806028815260200161464c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c8611f72565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129e59092919063ffffffff16565b611f7a565b600190509392505050565b61092a611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90613c24565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a1a611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e90613c24565b60405180910390fd5b8060128190555050565b60006009905090565b610ac2611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690613c24565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd8611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90613c24565b60405180910390fd5b80600d60186101000a81548160ff02191690831515021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cd3611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790613c24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e26611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613c24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a90613b44565b60405180910390fd5b600060046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611063611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790613c24565b60405180910390fd5b6063811115611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b90613b64565b60405180910390fd5b8060098190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4943484f52000000000000000000000000000000000000000000000000000000815250905090565b60006111b86111b1611f72565b8484612145565b6001905092915050565b6111ca611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90613c24565b60405180910390fd5b64e8d4a5100081101561129f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129690613b84565b60405180910390fd5b6611c37937e080008111156112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090613ba4565b60405180910390fd5b8060138190555050565b6112fb611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90613c24565b60405180910390fd5b60005b815181101561143f576001600560008484815181106113d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061143790614029565b91505061138b565b5050565b61144b611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf90613c24565b60405180910390fd5b60006114e330610c82565b90506114ee81612a49565b50565b6114f9611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90613c24565b60405180910390fd5b600d60149054906101000a900460ff16156115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cd90613ca4565b60405180910390fd5b61160b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e80000611f7a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167357600080fd5b505afa158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab9190613400565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561172f57600080fd5b505afa158015611743573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117679190613400565b6040518363ffffffff1660e01b81526004016117849291906139b9565b602060405180830381600087803b15801561179e57600080fd5b505af11580156117b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d69190613400565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061185f30610c82565b60008061186a61113e565b426040518863ffffffff1660e01b815260040161188c96959493929190613a0b565b6060604051808303818588803b1580156118a557600080fd5b505af11580156118b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118de91906135ac565b5050506001600d60176101000a81548160ff0219169083151502179055506001600d60186101000a81548160ff02191690831515021790555066b1a2bc2ec5000060108190555066b1a2bc2ec5000060118190555067016345785d8a00006012819055506611c37937e080006013819055506001600d60146101000a81548160ff02191690831515021790555043600e81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611a119291906139e2565b602060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a63919061355a565b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611af5611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7990613c24565b60405180910390fd5b80600d60176101000a81548160ff02191690831515021790555050565b611ba7611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2b90613c24565b60405180910390fd5b80600f8190555050565b611c46611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90613c24565b60405180910390fd5b8060118190555050565b611ce5611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6990613c24565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611dd5611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990613c24565b60405180910390fd5b8060108190555050565b611e74611f72565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef890613c24565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611f2790613989565b60006040518083038185875af1925050503d8060008114611f64576040519150601f19603f3d011682016040523d82523d6000602084013e611f69565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe190613c84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190613ae4565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121389190613ce4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ac90613c64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221c90613ac4565b60405180910390fd5b60008111612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225f90613c44565b60405180910390fd5b60008061227361113e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156122e157506122b161113e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561231a5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612354575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561236d5750600d60159054906101000a900460ff16155b156127e357600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124165750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61241f57600080fd5b60019150600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156124ce5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156125245750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561253c5750600d60189054906101000a900460ff165b1561267a57601054831115612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d90613be4565b60405180910390fd5b6012548361259386610c82565b61259d9190613e25565b11156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d590613bc4565b60405180910390fd5b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061262957600080fd5b601e426126369190613e25565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156127255750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561277b5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127935750600d60189054906101000a900460ff165b156127e2576011548311156127dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d490613cc4565b60405180910390fd5b600190505b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128845750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561288e57600091505b600061289930610c82565b90506000601354821180156128ab5750825b90508080156128c65750600d60179054906101000a900460ff165b80156128df5750600d60159054906101000a900460ff16155b80156129355750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561298b5750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129cf576001600d60156101000a81548160ff0219169083151502179055506129b3612d43565b6000600d60156101000a81548160ff0219169083151502179055505b6129dc8787878787612e36565b50505050505050565b6000838311158290612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a249190613aa2565b60405180910390fd5b5060008385612a3c9190613f06565b9050809150509392505050565b6001600d60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612aa7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612ad55781602001602082028036833780820191505090505b5090503081600081518110612b13577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb557600080fd5b505afa158015612bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bed9190613400565b81600181518110612c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c8e30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7a565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cf2959493929190613cff565b600060405180830381600087803b158015612d0c57600080fd5b505af1158015612d20573d6000803e3d6000fd5b50505050506000600d60166101000a81548160ff02191690831515021790555050565b6000612d4e30610c82565b9050600080821415612d61575050612e34565b600a601354612d709190613eac565b821115612d8957600a601354612d869190613eac565b91505b6000479050612d9783612a49565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168147612ddc9190613f06565b604051612de890613989565b60006040518083038185875af1925050503d8060008114612e25576040519150601f19603f3d011682016040523d82523d6000602084013e612e2a565b606091505b5050809250505050505b565b81612e4857612e43612e76565b612e56565b612e53858483612eb9565b92505b612e61858585612f4b565b81612e6f57612e6e6130df565b5b5050505050565b6000600754148015612e8a57506000600954145b15612e9457612eb7565b600754600881905550600954600a81905550600060078190555060006009819055505b565b60008043600f54600e54612ecd9190613e25565b10612edb5760639050612ef2565b8215612eeb576009549050612ef1565b60075490505b5b6000612f1a6064612f0c84886130f390919063ffffffff16565b61316e90919063ffffffff16565b90506000811115612f3157612f30863083612f4b565b5b8085612f3d9190613f06565b945084925050509392505050565b612f9d81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131b890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061303281600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461320290919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130d29190613ce4565b60405180910390a3505050565b600854600781905550600a54600981905550565b6000808314156131065760009050613168565b600082846131149190613eac565b90508284826131239190613e7b565b14613163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315a90613c04565b60405180910390fd5b809150505b92915050565b60006131b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613260565b905092915050565b60006131fa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129e5565b905092915050565b60008082846132119190613e25565b905083811015613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324d90613b04565b60405180910390fd5b8091505092915050565b600080831182906132a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329e9190613aa2565b60405180910390fd5b50600083856132b69190613e7b565b9050809150509392505050565b60006132d66132d184613d99565b613d74565b905080838252602082019050828560208602820111156132f557600080fd5b60005b85811015613325578161330b888261332f565b8452602084019350602083019250506001810190506132f8565b5050509392505050565b60008135905061333e81614606565b92915050565b60008151905061335381614606565b92915050565b600082601f83011261336a57600080fd5b813561337a8482602086016132c3565b91505092915050565b6000813590506133928161461d565b92915050565b6000815190506133a78161461d565b92915050565b6000813590506133bc81614634565b92915050565b6000815190506133d181614634565b92915050565b6000602082840312156133e957600080fd5b60006133f78482850161332f565b91505092915050565b60006020828403121561341257600080fd5b600061342084828501613344565b91505092915050565b6000806040838503121561343c57600080fd5b600061344a8582860161332f565b925050602061345b8582860161332f565b9150509250929050565b60008060006060848603121561347a57600080fd5b60006134888682870161332f565b93505060206134998682870161332f565b92505060406134aa868287016133ad565b9150509250925092565b600080604083850312156134c757600080fd5b60006134d58582860161332f565b92505060206134e6858286016133ad565b9150509250929050565b60006020828403121561350257600080fd5b600082013567ffffffffffffffff81111561351c57600080fd5b61352884828501613359565b91505092915050565b60006020828403121561354357600080fd5b600061355184828501613383565b91505092915050565b60006020828403121561356c57600080fd5b600061357a84828501613398565b91505092915050565b60006020828403121561359557600080fd5b60006135a3848285016133ad565b91505092915050565b6000806000606084860312156135c157600080fd5b60006135cf868287016133c2565b93505060206135e0868287016133c2565b92505060406135f1868287016133c2565b9150509250925092565b60006136078383613613565b60208301905092915050565b61361c81613f3a565b82525050565b61362b81613f3a565b82525050565b600061363c82613dd5565b6136468185613df8565b935061365183613dc5565b8060005b8381101561368257815161366988826135fb565b975061367483613deb565b925050600181019050613655565b5085935050505092915050565b61369881613f4c565b82525050565b6136a781613f8f565b82525050565b6136b681613fb3565b82525050565b60006136c782613de0565b6136d18185613e14565b93506136e1818560208601613fc5565b6136ea816140ff565b840191505092915050565b6000613702602383613e14565b915061370d82614110565b604082019050919050565b6000613725602283613e14565b91506137308261415f565b604082019050919050565b6000613748601b83613e14565b9150613753826141ae565b602082019050919050565b600061376b602883613e14565b9150613776826141d7565b604082019050919050565b600061378e602183613e14565b915061379982614226565b604082019050919050565b60006137b1605d83613e14565b91506137bc82614275565b606082019050919050565b60006137d4603583613e14565b91506137df826142ea565b604082019050919050565b60006137f7603483613e14565b915061380282614339565b604082019050919050565b600061381a602483613e14565b915061382582614388565b604082019050919050565b600061383d602983613e14565b9150613848826143d7565b604082019050919050565b6000613860602183613e14565b915061386b82614426565b604082019050919050565b6000613883602083613e14565b915061388e82614475565b602082019050919050565b60006138a6602983613e14565b91506138b18261449e565b604082019050919050565b60006138c9602583613e14565b91506138d4826144ed565b604082019050919050565b60006138ec600083613e09565b91506138f78261453c565b600082019050919050565b600061390f602483613e14565b915061391a8261453f565b604082019050919050565b6000613932601783613e14565b915061393d8261458e565b602082019050919050565b6000613955602a83613e14565b9150613960826145b7565b604082019050919050565b61397481613f78565b82525050565b61398381613f82565b82525050565b6000613994826138df565b9150819050919050565b60006020820190506139b36000830184613622565b92915050565b60006040820190506139ce6000830185613622565b6139db6020830184613622565b9392505050565b60006040820190506139f76000830185613622565b613a04602083018461396b565b9392505050565b600060c082019050613a206000830189613622565b613a2d602083018861396b565b613a3a60408301876136ad565b613a4760608301866136ad565b613a546080830185613622565b613a6160a083018461396b565b979650505050505050565b6000602082019050613a81600083018461368f565b92915050565b6000602082019050613a9c600083018461369e565b92915050565b60006020820190508181036000830152613abc81846136bc565b905092915050565b60006020820190508181036000830152613add816136f5565b9050919050565b60006020820190508181036000830152613afd81613718565b9050919050565b60006020820190508181036000830152613b1d8161373b565b9050919050565b60006020820190508181036000830152613b3d8161375e565b9050919050565b60006020820190508181036000830152613b5d81613781565b9050919050565b60006020820190508181036000830152613b7d816137a4565b9050919050565b60006020820190508181036000830152613b9d816137c7565b9050919050565b60006020820190508181036000830152613bbd816137ea565b9050919050565b60006020820190508181036000830152613bdd8161380d565b9050919050565b60006020820190508181036000830152613bfd81613830565b9050919050565b60006020820190508181036000830152613c1d81613853565b9050919050565b60006020820190508181036000830152613c3d81613876565b9050919050565b60006020820190508181036000830152613c5d81613899565b9050919050565b60006020820190508181036000830152613c7d816138bc565b9050919050565b60006020820190508181036000830152613c9d81613902565b9050919050565b60006020820190508181036000830152613cbd81613925565b9050919050565b60006020820190508181036000830152613cdd81613948565b9050919050565b6000602082019050613cf9600083018461396b565b92915050565b600060a082019050613d14600083018861396b565b613d2160208301876136ad565b8181036040830152613d338186613631565b9050613d426060830185613622565b613d4f608083018461396b565b9695505050505050565b6000602082019050613d6e600083018461397a565b92915050565b6000613d7e613d8f565b9050613d8a8282613ff8565b919050565b6000604051905090565b600067ffffffffffffffff821115613db457613db36140d0565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613e3082613f78565b9150613e3b83613f78565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e7057613e6f614072565b5b828201905092915050565b6000613e8682613f78565b9150613e9183613f78565b925082613ea157613ea06140a1565b5b828204905092915050565b6000613eb782613f78565b9150613ec283613f78565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613efb57613efa614072565b5b828202905092915050565b6000613f1182613f78565b9150613f1c83613f78565b925082821015613f2f57613f2e614072565b5b828203905092915050565b6000613f4582613f58565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613f9a82613fa1565b9050919050565b6000613fac82613f58565b9050919050565b6000613fbe82613f78565b9050919050565b60005b83811015613fe3578082015181840152602081019050613fc8565b83811115613ff2576000848401525b50505050565b614001826140ff565b810181811067ffffffffffffffff821117156140205761401f6140d0565b5b80604052505050565b600061403482613f78565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561406757614066614072565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f42757920746178206973206861726420636f64656420746f2072656d61696e2060008201527f756e646572203525000000000000000000000000000000000000000000000000602082015250565b7f70726f6a65637457616c6c657420616464726573732063616e6e6f742062652060008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b7f7468697320697320746f2068656c702067657420726964206f6620626f74732060008201527f6174206c61756e63682e2072657374206173737572656420746865726520617260208201527f65206e6f20626f7473207768656e20796f7520617065206672656e7321000000604082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b61460f81613f3a565b811461461a57600080fd5b50565b61462681613f4c565b811461463157600080fd5b50565b61463d81613f78565b811461464857600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203d31b08fa95daf5d7eafcf6a1a06d1242e89107dbd2dac67fd5e1d03f032d54a64736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000071c7122ed2b8e5608b4beb65cf69f944e3d888f

-----Decoded View---------------
Arg [0] : _uniswapV2Router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : projectWallet (address): 0x071C7122ed2B8e5608B4BeB65cf69f944E3D888F

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000071c7122ed2b8e5608b4beb65cf69f944e3d888f


Deployed Bytecode Sourcemap

3536:12052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5611:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6442:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12672:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4386:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5888:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6611:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13726:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11662:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5797:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12431:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4434:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6932:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5991:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2615:148;;;;;;;;;;;;;:::i;:::-;;12108:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12872:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2401:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5702:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6116:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11783:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11268:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15253:154;;;;;;;;;;;;;:::i;:::-;;10430:826;;;;;;;;;;;;;:::i;:::-;;6291:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7043:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13141:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11547:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12554:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11440:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15425:160;;;;;;;;;;;;;:::i;:::-;;5611:83;5648:13;5681:5;;;;;;;;;;;;;;;;;5674:12;;5611:83;:::o;6442:161::-;6517:4;6534:39;6543:12;:10;:12::i;:::-;6557:7;6566:6;6534:8;:39::i;:::-;6591:4;6584:11;;6442:161;;;;:::o;12672:192::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12769:1:::1;12752:13;:18;;12744:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12843:13;12826:14;:30;;;;12672:192:::0;:::o;4386:41::-;;;;;;;;;;;;;:::o;5888:95::-;5941:7;3934:12;5961:14;;5888:95;:::o;6611:313::-;6709:4;6726:36;6736:6;6744:9;6755:6;6726:9;:36::i;:::-;6773:121;6782:6;6790:12;:10;:12::i;:::-;6804:89;6842:6;6804:89;;;;;;;;;;;;;;;;;:11;:19;6816:6;6804:19;;;;;;;;;;;;;;;:33;6824:12;:10;:12::i;:::-;6804:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6773:8;:121::i;:::-;6912:4;6905:11;;6611:313;;;;;:::o;13726:88::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13801:5:::1;13786:4;:12;13791:6;13786:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13726:88:::0;:::o;11662:109::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11755:8:::1;11736:16;:27;;;;11662:109:::0;:::o;5797:83::-;5838:5;4372:1;5856:16;;5797:83;:::o;12431:111::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12530:4:::1;12500:18;:27;12519:7;12500:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12431:111:::0;:::o;4434:28::-;;;;;;;;;;;;;:::o;6932:103::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7022:5:::1;7004:15;;:23;;;;;;;;;;;;;;;;;;6932:103:::0;:::o;5991:117::-;6057:7;6084;:16;6092:7;6084:16;;;;;;;;;;;;;;;;6077:23;;5991:117;;;:::o;2615:148::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2722:1:::1;2685:40;;2706:6;::::0;::::1;;;;;;;;2685:40;;;;;;;;;;;;2753:1;2736:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2615:148::o:0;12108:315::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12220:1:::1;12195:27;;:13;:27;;;;12187:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12308:5;12271:18;:34;12290:14;;;;;;;;;;;12271:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12349:13;12324:14;;:39;;;;;;;;;;;;;;;;;;12411:4;12374:18;:34;12393:14;;;;;;;;;;;12374:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12108:315:::0;:::o;12872:261::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12972:2:::1;12954:14;:20;;12946:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;13101:14;13083:15;:32;;;;12872:261:::0;:::o;2401:79::-;2439:7;2466:6;;;;;;;;;;;2459:13;;2401:79;:::o;5702:87::-;5741:13;5774:7;;;;;;;;;;;;;;;;;5767:14;;5702:87;:::o;6116:167::-;6194:4;6211:42;6221:12;:10;:12::i;:::-;6235:9;6246:6;6211:9;:42::i;:::-;6271:4;6264:11;;6116:167;;;;:::o;11783:317::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11882:11:::1;11869:9;:24;;11861:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11983:11;11970:9;:24;;11962:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12083:9;12062:18;:30;;;;11783:317:::0;:::o;11268:164::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11342:6:::1;11337:88;11358:5;:12;11354:1;:16;11337:88;;;11409:4;11392;:14;11397:5;11403:1;11397:8;;;;;;;;;;;;;;;;;;;;;;11392:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11372:3;;;;;:::i;:::-;;;;11337:88;;;;11268:164:::0;:::o;15253:154::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15305:23:::1;15331:24;15349:4;15331:9;:24::i;:::-;15305:50;;15366:33;15383:15;15366:16;:33::i;:::-;2598:1;15253:154::o:0;10430:826::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10494:11:::1;;;;;;;;;;;10493:12;10485:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10551:58;10568:4;10583:15;;;;;;;;;;;3934:12;10551:8;:58::i;:::-;10654:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10636:55;;;10700:4;10707:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10636:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10620:13;;:110;;;;;;;;;;;;;;;;;;10741:15;;;;;;;;;;;:31;;;10780:21;10811:4;10817:24;10835:4;10817:9;:24::i;:::-;10842:1;10844::::0;10846:7:::1;:5;:7::i;:::-;10854:15;10741:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10895:4;10881:11;;:18;;;;;;;;;;;;;;;;;;10928:4;10910:15;;:22;;;;;;;;;;;;;;;;;;10959:11;10943:13;:27;;;;10998:11;10981:14;:28;;;;11039:11;11020:16;:30;;;;11082:11;11061:18;:32;;;;11118:4;11104:11;;:18;;;;;;;;;;;;;;;;;;11154:12;11133:18;:33;;;;11184:13;;;;;;;;;;;11177:29;;;11215:15;;;;;;;;;;;11233:14;11177:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10430:826::o:0;6291:143::-;6372:7;6399:11;:18;6411:5;6399:18;;;;;;;;;;;;;;;:27;6418:7;6399:27;;;;;;;;;;;;;;;;6392:34;;6291:143;;;;:::o;7043:94::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7124:5:::1;7110:11;;:19;;;;;;;;;;;;;;;;;;7043:94:::0;:::o;13141:108::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13235:6:::1;13215:17;:26;;;;13141:108:::0;:::o;11547:103::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11635:7:::1;11618:14;:24;;;;11547:103:::0;:::o;12554:110::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12651:5:::1;12621:18;:27;12640:7;12621:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12554:110:::0;:::o;11440:99::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11525:6:::1;11509:13;:22;;;;11440:99:::0;:::o;15425:160::-;2538:12;:10;:12::i;:::-;2528:22;;:6;;;;;;;;;;:22;;;2520:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15483:12:::1;15527:10;15519:24;;15551:21;15519:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15506:71;;;;;2598:1;15425:160::o:0;119:98::-;172:7;199:10;192:17;;119:98;:::o;7145:335::-;7255:1;7238:19;;:5;:19;;;;7230:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7336:1;7317:21;;:7;:21;;;;7309:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7418:6;7388:11;:18;7400:5;7388:18;;;;;;;;;;;;;;;:27;7407:7;7388:27;;;;;;;;;;;;;;;:36;;;;7456:7;7440:32;;7449:5;7440:32;;;7465:6;7440:32;;;;;;:::i;:::-;;;;;;;;7145:335;;;:::o;7488:1850::-;7592:1;7576:18;;:4;:18;;;;7568:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7669:1;7655:16;;:2;:16;;;;7647:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7739:1;7730:6;:10;7722:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7797:12;7828:15;7874:7;:5;:7::i;:::-;7866:15;;:4;:15;;;;:32;;;;;7891:7;:5;:7::i;:::-;7885:13;;:2;:13;;;;7866:32;:52;;;;;7916:1;7902:16;;:2;:16;;;;7866:52;:77;;;;;7936:6;7922:21;;:2;:21;;;;7866:77;:90;;;;;7948:8;;;;;;;;;;;7947:9;7866:90;7862:939;;;7982:4;:10;7987:4;7982:10;;;;;;;;;;;;;;;;;;;;;;;;;7981:11;:24;;;;;7997:4;:8;8002:2;7997:8;;;;;;;;;;;;;;;;;;;;;;;;;7996:9;7981:24;7973:33;;;;;;8033:4;8023:14;;8064:13;;;;;;;;;;;8056:21;;:4;:21;;;:55;;;;;8095:15;;;;;;;;;;;8081:30;;:2;:30;;;;8056:55;:82;;;;;8116:18;:22;8135:2;8116:22;;;;;;;;;;;;;;;;;;;;;;;;;8115:23;8056:82;:101;;;;;8142:15;;;;;;;;;;;8056:101;8052:451;;;8196:13;;8186:6;:23;;8178:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;8308:16;;8298:6;8282:13;8292:2;8282:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;8274:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;8407:15;8392:8;:12;8401:2;8392:12;;;;;;;;;;;;;;;;:30;8384:39;;;;;;8476:10;8457:15;:30;;;;:::i;:::-;8442:8;:12;8451:2;8442:12;;;;;;;;;;;;;;;:45;;;;8052:451;8541:13;;;;;;;;;;;8535:19;;:2;:19;;;:55;;;;;8574:15;;;;;;;;;;;8558:32;;:4;:32;;;;8535:55;:84;;;;;8595:18;:24;8614:4;8595:24;;;;;;;;;;;;;;;;;;;;;;;;;8594:25;8535:84;:103;;;;;8623:15;;;;;;;;;;;8535:103;8531:259;;;8677:14;;8667:6;:24;;8659:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8770:4;8757:17;;8531:259;7862:939;8816:18;:24;8835:4;8816:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8844:18;:22;8863:2;8844:22;;;;;;;;;;;;;;;;;;;;;;;;;8816:50;8813:97;;;8893:5;8883:15;;8813:97;8922:28;8953:24;8971:4;8953:9;:24::i;:::-;8922:55;;8988:12;9027:18;;9004:20;:41;9003:57;;;;;9050:10;9003:57;8988:72;;9077:7;:22;;;;;9088:11;;;;;;;;;;;9077:22;:35;;;;;9104:8;;;;;;;;;;;9103:9;9077:35;:64;;;;;9117:18;:24;9136:4;9117:24;;;;;;;;;;;;;;;;;;;;;;;;;9116:25;9077:64;:91;;;;;9146:18;:22;9165:2;9146:22;;;;;;;;;;;;;;;;;;;;;;;;;9145:23;9077:91;9073:195;;;9196:4;9185:8;;:15;;;;;;;;;;;;;;;;;;9215:10;:8;:10::i;:::-;9251:5;9240:8;;:16;;;;;;;;;;;;;;;;;;9073:195;9280:50;9295:4;9300:2;9303:6;9310:7;9319:10;9280:14;:50::i;:::-;7488:1850;;;;;;;:::o;1256:190::-;1342:7;1375:1;1370;:6;;1378:12;1362:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1402:9;1418:1;1414;:5;;;;:::i;:::-;1402:17;;1437:1;1430:8;;;1256:190;;;;;:::o;9932:483::-;5112:4;5103:6;;:13;;;;;;;;;;;;;;;;;;10010:21:::1;10048:1;10034:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10010:40;;10079:4;10061;10066:1;10061:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;10105:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10095:4;10100:1;10095:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;10138:62;10155:4;10170:15;;;;;;;;;;;10188:11;10138:8;:62::i;:::-;10211:15;;;;;;;;;;;:66;;;10292:11;10318:1;10334:4;10361;10381:15;10211:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5127:1;5148:5:::0;5139:6;;:14;;;;;;;;;;;;;;;;;;9932:483;:::o;9346:578::-;9385:24;9412;9430:4;9412:9;:24::i;:::-;9385:51;;9457:12;9513:1;9493:16;:21;9490:35;;;9517:7;;;;9490:35;9580:2;9559:18;;:23;;;;:::i;:::-;9540:16;:42;9537:116;;;9639:2;9618:18;;:23;;;;:::i;:::-;9599:42;;9537:116;9681:25;9709:21;9681:49;;9743:34;9760:16;9743;:34::i;:::-;9842:14;;;;;;;;;;;9834:28;;9894:17;9870:21;:41;;;;:::i;:::-;9834:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9821:95;;;;;9346:578;;;;:::o;13830:389::-;13955:7;13951:129;;13979:14;:12;:14::i;:::-;13951:129;;;14035:33;14045:6;14053;14061;14035:9;:33::i;:::-;14026:42;;13951:129;14092:44;14110:6;14118:9;14129:6;14092:17;:44::i;:::-;14161:7;14157:55;;14185:15;:13;:15::i;:::-;14157:55;13830:389;;;;;:::o;13257:302::-;13321:1;13303:14;;:19;:43;;;;;13345:1;13326:15;;:20;13303:43;13300:55;;;13348:7;;13300:55;13400:14;;13375:22;:39;;;;13451:15;;13425:23;:41;;;;13512:1;13495:14;:18;;;;13542:1;13524:15;:19;;;;13257:302;:::o;14502:706::-;14583:7;14603:15;14674:12;14653:17;;14632:18;;:38;;;;:::i;:::-;:54;14629:310;;14712:2;14702:12;;14629:310;;;14763:6;14759:169;;;14800:15;;14790:25;;14759:169;;;14882:14;;14872:24;;14759:169;14629:310;14967:24;14994:28;15018:3;14994:19;15005:7;14994:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14967:55;;15055:1;15036:16;:20;15033:110;;;15073:58;15091:6;15107:4;15114:16;15073:17;:58::i;:::-;15033:110;15184:16;15174:26;;;;;:::i;:::-;;;;15167:33;;;;14502:706;;;;;:::o;14227:267::-;14343:28;14363:7;14343;:15;14351:6;14343:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14325:7;:15;14333:6;14325:15;;;;;;;;;;;;;;;:46;;;;14403:31;14426:7;14403;:18;14411:9;14403:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;14382:7;:18;14390:9;14382:18;;;;;;;;;;;;;;;:52;;;;14467:9;14450:36;;14459:6;14450:36;;;14478:7;14450:36;;;;;;:::i;:::-;;;;;;;;14227:267;;;:::o;13571:143::-;13632:22;;13615:14;:39;;;;13683:23;;13665:15;:41;;;;13571:143::o;1454:246::-;1512:7;1541:1;1536;:6;1532:47;;;1566:1;1559:8;;;;1532:47;1589:9;1605:1;1601;:5;;;;:::i;:::-;1589:17;;1634:1;1629;1625;:5;;;;:::i;:::-;:10;1617:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1691:1;1684:8;;;1454:246;;;;;:::o;1708:132::-;1766:7;1793:39;1797:1;1800;1793:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1786:46;;1708:132;;;;:::o;1112:136::-;1170:7;1197:43;1201:1;1204;1197:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1190:50;;1112:136;;;;:::o;925:179::-;983:7;1003:9;1019:1;1015;:5;;;;:::i;:::-;1003:17;;1044:1;1039;:6;;1031:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1095:1;1088:8;;;925:179;;;;:::o;1848:189::-;1934:7;1966:1;1962;:5;1969:12;1954:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1993:9;2009:1;2005;:5;;;;:::i;:::-;1993:17;;2028:1;2021:8;;;1848:189;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:262::-;1940:6;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;2005:1;2002;1995:12;1957:2;2048:1;2073:53;2118:7;2109:6;2098:9;2094:22;2073:53;:::i;:::-;2063:63;;2019:117;1947:196;;;;:::o;2149:284::-;2219:6;2268:2;2256:9;2247:7;2243:23;2239:32;2236:2;;;2284:1;2281;2274:12;2236:2;2327:1;2352:64;2408:7;2399:6;2388:9;2384:22;2352:64;:::i;:::-;2342:74;;2298:128;2226:207;;;;:::o;2439:407::-;2507:6;2515;2564:2;2552:9;2543:7;2539:23;2535:32;2532:2;;;2580:1;2577;2570:12;2532:2;2623:1;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;:::i;:::-;2638:63;;2594:117;2750:2;2776:53;2821:7;2812:6;2801:9;2797:22;2776:53;:::i;:::-;2766:63;;2721:118;2522:324;;;;;:::o;2852:552::-;2929:6;2937;2945;2994:2;2982:9;2973:7;2969:23;2965:32;2962:2;;;3010:1;3007;3000:12;2962:2;3053:1;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3024:117;3180:2;3206:53;3251:7;3242:6;3231:9;3227:22;3206:53;:::i;:::-;3196:63;;3151:118;3308:2;3334:53;3379:7;3370:6;3359:9;3355:22;3334:53;:::i;:::-;3324:63;;3279:118;2952:452;;;;;:::o;3410:407::-;3478:6;3486;3535:2;3523:9;3514:7;3510:23;3506:32;3503:2;;;3551:1;3548;3541:12;3503:2;3594:1;3619:53;3664:7;3655:6;3644:9;3640:22;3619:53;:::i;:::-;3609:63;;3565:117;3721:2;3747:53;3792:7;3783:6;3772:9;3768:22;3747:53;:::i;:::-;3737:63;;3692:118;3493:324;;;;;:::o;3823:405::-;3907:6;3956:2;3944:9;3935:7;3931:23;3927:32;3924:2;;;3972:1;3969;3962:12;3924:2;4043:1;4032:9;4028:17;4015:31;4073:18;4065:6;4062:30;4059:2;;;4105:1;4102;4095:12;4059:2;4133:78;4203:7;4194:6;4183:9;4179:22;4133:78;:::i;:::-;4123:88;;3986:235;3914:314;;;;:::o;4234:256::-;4290:6;4339:2;4327:9;4318:7;4314:23;4310:32;4307:2;;;4355:1;4352;4345:12;4307:2;4398:1;4423:50;4465:7;4456:6;4445:9;4441:22;4423:50;:::i;:::-;4413:60;;4369:114;4297:193;;;;:::o;4496:278::-;4563:6;4612:2;4600:9;4591:7;4587:23;4583:32;4580:2;;;4628:1;4625;4618:12;4580:2;4671:1;4696:61;4749:7;4740:6;4729:9;4725:22;4696:61;:::i;:::-;4686:71;;4642:125;4570:204;;;;:::o;4780:262::-;4839:6;4888:2;4876:9;4867:7;4863:23;4859:32;4856:2;;;4904:1;4901;4894:12;4856:2;4947:1;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4918:117;4846:196;;;;:::o;5048:596::-;5136:6;5144;5152;5201:2;5189:9;5180:7;5176:23;5172:32;5169:2;;;5217:1;5214;5207:12;5169:2;5260:1;5285:64;5341:7;5332:6;5321:9;5317:22;5285:64;:::i;:::-;5275:74;;5231:128;5398:2;5424:64;5480:7;5471:6;5460:9;5456:22;5424:64;:::i;:::-;5414:74;;5369:129;5537:2;5563:64;5619:7;5610:6;5599:9;5595:22;5563:64;:::i;:::-;5553:74;;5508:129;5159:485;;;;;:::o;5650:179::-;5719:10;5740:46;5782:3;5774:6;5740:46;:::i;:::-;5818:4;5813:3;5809:14;5795:28;;5730:99;;;;:::o;5835:108::-;5912:24;5930:5;5912:24;:::i;:::-;5907:3;5900:37;5890:53;;:::o;5949:118::-;6036:24;6054:5;6036:24;:::i;:::-;6031:3;6024:37;6014:53;;:::o;6103:732::-;6222:3;6251:54;6299:5;6251:54;:::i;:::-;6321:86;6400:6;6395:3;6321:86;:::i;:::-;6314:93;;6431:56;6481:5;6431:56;:::i;:::-;6510:7;6541:1;6526:284;6551:6;6548:1;6545:13;6526:284;;;6627:6;6621:13;6654:63;6713:3;6698:13;6654:63;:::i;:::-;6647:70;;6740:60;6793:6;6740:60;:::i;:::-;6730:70;;6586:224;6573:1;6570;6566:9;6561:14;;6526:284;;;6530:14;6826:3;6819:10;;6227:608;;;;;;;:::o;6841:109::-;6922:21;6937:5;6922:21;:::i;:::-;6917:3;6910:34;6900:50;;:::o;6956:183::-;7069:63;7126:5;7069:63;:::i;:::-;7064:3;7057:76;7047:92;;:::o;7145:147::-;7240:45;7279:5;7240:45;:::i;:::-;7235:3;7228:58;7218:74;;:::o;7298:364::-;7386:3;7414:39;7447:5;7414:39;:::i;:::-;7469:71;7533:6;7528:3;7469:71;:::i;:::-;7462:78;;7549:52;7594:6;7589:3;7582:4;7575:5;7571:16;7549:52;:::i;:::-;7626:29;7648:6;7626:29;:::i;:::-;7621:3;7617:39;7610:46;;7390:272;;;;;:::o;7668:366::-;7810:3;7831:67;7895:2;7890:3;7831:67;:::i;:::-;7824:74;;7907:93;7996:3;7907:93;:::i;:::-;8025:2;8020:3;8016:12;8009:19;;7814:220;;;:::o;8040:366::-;8182:3;8203:67;8267:2;8262:3;8203:67;:::i;:::-;8196:74;;8279:93;8368:3;8279:93;:::i;:::-;8397:2;8392:3;8388:12;8381:19;;8186:220;;;:::o;8412:366::-;8554:3;8575:67;8639:2;8634:3;8575:67;:::i;:::-;8568:74;;8651:93;8740:3;8651:93;:::i;:::-;8769:2;8764:3;8760:12;8753:19;;8558:220;;;:::o;8784:366::-;8926:3;8947:67;9011:2;9006:3;8947:67;:::i;:::-;8940:74;;9023:93;9112:3;9023:93;:::i;:::-;9141:2;9136:3;9132:12;9125:19;;8930:220;;;:::o;9156:366::-;9298:3;9319:67;9383:2;9378:3;9319:67;:::i;:::-;9312:74;;9395:93;9484:3;9395:93;:::i;:::-;9513:2;9508:3;9504:12;9497:19;;9302:220;;;:::o;9528:366::-;9670:3;9691:67;9755:2;9750:3;9691:67;:::i;:::-;9684:74;;9767:93;9856:3;9767:93;:::i;:::-;9885:2;9880:3;9876:12;9869:19;;9674:220;;;:::o;9900:366::-;10042:3;10063:67;10127:2;10122:3;10063:67;:::i;:::-;10056:74;;10139:93;10228:3;10139:93;:::i;:::-;10257:2;10252:3;10248:12;10241:19;;10046:220;;;:::o;10272:366::-;10414:3;10435:67;10499:2;10494:3;10435:67;:::i;:::-;10428:74;;10511:93;10600:3;10511:93;:::i;:::-;10629:2;10624:3;10620:12;10613:19;;10418:220;;;:::o;10644:366::-;10786:3;10807:67;10871:2;10866:3;10807:67;:::i;:::-;10800:74;;10883:93;10972:3;10883:93;:::i;:::-;11001:2;10996:3;10992:12;10985:19;;10790:220;;;:::o;11016:366::-;11158:3;11179:67;11243:2;11238:3;11179:67;:::i;:::-;11172:74;;11255:93;11344:3;11255:93;:::i;:::-;11373:2;11368:3;11364:12;11357:19;;11162:220;;;:::o;11388:366::-;11530:3;11551:67;11615:2;11610:3;11551:67;:::i;:::-;11544:74;;11627:93;11716:3;11627:93;:::i;:::-;11745:2;11740:3;11736:12;11729:19;;11534:220;;;:::o;11760:366::-;11902:3;11923:67;11987:2;11982:3;11923:67;:::i;:::-;11916:74;;11999:93;12088:3;11999:93;:::i;:::-;12117:2;12112:3;12108:12;12101:19;;11906:220;;;:::o;12132:366::-;12274:3;12295:67;12359:2;12354:3;12295:67;:::i;:::-;12288:74;;12371:93;12460:3;12371:93;:::i;:::-;12489:2;12484:3;12480:12;12473:19;;12278:220;;;:::o;12504:366::-;12646:3;12667:67;12731:2;12726:3;12667:67;:::i;:::-;12660:74;;12743:93;12832:3;12743:93;:::i;:::-;12861:2;12856:3;12852:12;12845:19;;12650:220;;;:::o;12876:398::-;13035:3;13056:83;13137:1;13132:3;13056:83;:::i;:::-;13049:90;;13148:93;13237:3;13148:93;:::i;:::-;13266:1;13261:3;13257:11;13250:18;;13039:235;;;:::o;13280:366::-;13422:3;13443:67;13507:2;13502:3;13443:67;:::i;:::-;13436:74;;13519:93;13608:3;13519:93;:::i;:::-;13637:2;13632:3;13628:12;13621:19;;13426:220;;;:::o;13652:366::-;13794:3;13815:67;13879:2;13874:3;13815:67;:::i;:::-;13808:74;;13891:93;13980:3;13891:93;:::i;:::-;14009:2;14004:3;14000:12;13993:19;;13798:220;;;:::o;14024:366::-;14166:3;14187:67;14251:2;14246:3;14187:67;:::i;:::-;14180:74;;14263:93;14352:3;14263:93;:::i;:::-;14381:2;14376:3;14372:12;14365:19;;14170:220;;;:::o;14396:118::-;14483:24;14501:5;14483:24;:::i;:::-;14478:3;14471:37;14461:53;;:::o;14520:112::-;14603:22;14619:5;14603:22;:::i;:::-;14598:3;14591:35;14581:51;;:::o;14638:379::-;14822:3;14844:147;14987:3;14844:147;:::i;:::-;14837:154;;15008:3;15001:10;;14826:191;;;:::o;15023:222::-;15116:4;15154:2;15143:9;15139:18;15131:26;;15167:71;15235:1;15224:9;15220:17;15211:6;15167:71;:::i;:::-;15121:124;;;;:::o;15251:332::-;15372:4;15410:2;15399:9;15395:18;15387:26;;15423:71;15491:1;15480:9;15476:17;15467:6;15423:71;:::i;:::-;15504:72;15572:2;15561:9;15557:18;15548:6;15504:72;:::i;:::-;15377:206;;;;;:::o;15589:332::-;15710:4;15748:2;15737:9;15733:18;15725:26;;15761:71;15829:1;15818:9;15814:17;15805:6;15761:71;:::i;:::-;15842:72;15910:2;15899:9;15895:18;15886:6;15842:72;:::i;:::-;15715:206;;;;;:::o;15927:807::-;16176:4;16214:3;16203:9;16199:19;16191:27;;16228:71;16296:1;16285:9;16281:17;16272:6;16228:71;:::i;:::-;16309:72;16377:2;16366:9;16362:18;16353:6;16309:72;:::i;:::-;16391:80;16467:2;16456:9;16452:18;16443:6;16391:80;:::i;:::-;16481;16557:2;16546:9;16542:18;16533:6;16481:80;:::i;:::-;16571:73;16639:3;16628:9;16624:19;16615:6;16571:73;:::i;:::-;16654;16722:3;16711:9;16707:19;16698:6;16654:73;:::i;:::-;16181:553;;;;;;;;;:::o;16740:210::-;16827:4;16865:2;16854:9;16850:18;16842:26;;16878:65;16940:1;16929:9;16925:17;16916:6;16878:65;:::i;:::-;16832:118;;;;:::o;16956:274::-;17075:4;17113:2;17102:9;17098:18;17090:26;;17126:97;17220:1;17209:9;17205:17;17196:6;17126:97;:::i;:::-;17080:150;;;;:::o;17236:313::-;17349:4;17387:2;17376:9;17372:18;17364:26;;17436:9;17430:4;17426:20;17422:1;17411:9;17407:17;17400:47;17464:78;17537:4;17528:6;17464:78;:::i;:::-;17456:86;;17354:195;;;;:::o;17555:419::-;17721:4;17759:2;17748:9;17744:18;17736:26;;17808:9;17802:4;17798:20;17794:1;17783:9;17779:17;17772:47;17836:131;17962:4;17836:131;:::i;:::-;17828:139;;17726:248;;;:::o;17980:419::-;18146:4;18184:2;18173:9;18169:18;18161:26;;18233:9;18227:4;18223:20;18219:1;18208:9;18204:17;18197:47;18261:131;18387:4;18261:131;:::i;:::-;18253:139;;18151:248;;;:::o;18405:419::-;18571:4;18609:2;18598:9;18594:18;18586:26;;18658:9;18652:4;18648:20;18644:1;18633:9;18629:17;18622:47;18686:131;18812:4;18686:131;:::i;:::-;18678:139;;18576:248;;;:::o;18830:419::-;18996:4;19034:2;19023:9;19019:18;19011:26;;19083:9;19077:4;19073:20;19069:1;19058:9;19054:17;19047:47;19111:131;19237:4;19111:131;:::i;:::-;19103:139;;19001:248;;;:::o;19255:419::-;19421:4;19459:2;19448:9;19444:18;19436:26;;19508:9;19502:4;19498:20;19494:1;19483:9;19479:17;19472:47;19536:131;19662:4;19536:131;:::i;:::-;19528:139;;19426:248;;;:::o;19680:419::-;19846:4;19884:2;19873:9;19869:18;19861:26;;19933:9;19927:4;19923:20;19919:1;19908:9;19904:17;19897:47;19961:131;20087:4;19961:131;:::i;:::-;19953:139;;19851:248;;;:::o;20105:419::-;20271:4;20309:2;20298:9;20294:18;20286:26;;20358:9;20352:4;20348:20;20344:1;20333:9;20329:17;20322:47;20386:131;20512:4;20386:131;:::i;:::-;20378:139;;20276:248;;;:::o;20530:419::-;20696:4;20734:2;20723:9;20719:18;20711:26;;20783:9;20777:4;20773:20;20769:1;20758:9;20754:17;20747:47;20811:131;20937:4;20811:131;:::i;:::-;20803:139;;20701:248;;;:::o;20955:419::-;21121:4;21159:2;21148:9;21144:18;21136:26;;21208:9;21202:4;21198:20;21194:1;21183:9;21179:17;21172:47;21236:131;21362:4;21236:131;:::i;:::-;21228:139;;21126:248;;;:::o;21380:419::-;21546:4;21584:2;21573:9;21569:18;21561:26;;21633:9;21627:4;21623:20;21619:1;21608:9;21604:17;21597:47;21661:131;21787:4;21661:131;:::i;:::-;21653:139;;21551:248;;;:::o;21805:419::-;21971:4;22009:2;21998:9;21994:18;21986:26;;22058:9;22052:4;22048:20;22044:1;22033:9;22029:17;22022:47;22086:131;22212:4;22086:131;:::i;:::-;22078:139;;21976:248;;;:::o;22230:419::-;22396:4;22434:2;22423:9;22419:18;22411:26;;22483:9;22477:4;22473:20;22469:1;22458:9;22454:17;22447:47;22511:131;22637:4;22511:131;:::i;:::-;22503:139;;22401:248;;;:::o;22655:419::-;22821:4;22859:2;22848:9;22844:18;22836:26;;22908:9;22902:4;22898:20;22894:1;22883:9;22879:17;22872:47;22936:131;23062:4;22936:131;:::i;:::-;22928:139;;22826:248;;;:::o;23080:419::-;23246:4;23284:2;23273:9;23269:18;23261:26;;23333:9;23327:4;23323:20;23319:1;23308:9;23304:17;23297:47;23361:131;23487:4;23361:131;:::i;:::-;23353:139;;23251:248;;;:::o;23505:419::-;23671:4;23709:2;23698:9;23694:18;23686:26;;23758:9;23752:4;23748:20;23744:1;23733:9;23729:17;23722:47;23786:131;23912:4;23786:131;:::i;:::-;23778:139;;23676:248;;;:::o;23930:419::-;24096:4;24134:2;24123:9;24119:18;24111:26;;24183:9;24177:4;24173:20;24169:1;24158:9;24154:17;24147:47;24211:131;24337:4;24211:131;:::i;:::-;24203:139;;24101:248;;;:::o;24355:419::-;24521:4;24559:2;24548:9;24544:18;24536:26;;24608:9;24602:4;24598:20;24594:1;24583:9;24579:17;24572:47;24636:131;24762:4;24636:131;:::i;:::-;24628:139;;24526:248;;;:::o;24780:222::-;24873:4;24911:2;24900:9;24896:18;24888:26;;24924:71;24992:1;24981:9;24977:17;24968:6;24924:71;:::i;:::-;24878:124;;;;:::o;25008:831::-;25271:4;25309:3;25298:9;25294:19;25286:27;;25323:71;25391:1;25380:9;25376:17;25367:6;25323:71;:::i;:::-;25404:80;25480:2;25469:9;25465:18;25456:6;25404:80;:::i;:::-;25531:9;25525:4;25521:20;25516:2;25505:9;25501:18;25494:48;25559:108;25662:4;25653:6;25559:108;:::i;:::-;25551:116;;25677:72;25745:2;25734:9;25730:18;25721:6;25677:72;:::i;:::-;25759:73;25827:3;25816:9;25812:19;25803:6;25759:73;:::i;:::-;25276:563;;;;;;;;:::o;25845:214::-;25934:4;25972:2;25961:9;25957:18;25949:26;;25985:67;26049:1;26038:9;26034:17;26025:6;25985:67;:::i;:::-;25939:120;;;;:::o;26065:129::-;26099:6;26126:20;;:::i;:::-;26116:30;;26155:33;26183:4;26175:6;26155:33;:::i;:::-;26106:88;;;:::o;26200:75::-;26233:6;26266:2;26260:9;26250:19;;26240:35;:::o;26281:311::-;26358:4;26448:18;26440:6;26437:30;26434:2;;;26470:18;;:::i;:::-;26434:2;26520:4;26512:6;26508:17;26500:25;;26580:4;26574;26570:15;26562:23;;26363:229;;;:::o;26598:132::-;26665:4;26688:3;26680:11;;26718:4;26713:3;26709:14;26701:22;;26670:60;;;:::o;26736:114::-;26803:6;26837:5;26831:12;26821:22;;26810:40;;;:::o;26856:99::-;26908:6;26942:5;26936:12;26926:22;;26915:40;;;:::o;26961:113::-;27031:4;27063;27058:3;27054:14;27046:22;;27036:38;;;:::o;27080:184::-;27179:11;27213:6;27208:3;27201:19;27253:4;27248:3;27244:14;27229:29;;27191:73;;;;:::o;27270:147::-;27371:11;27408:3;27393:18;;27383:34;;;;:::o;27423:169::-;27507:11;27541:6;27536:3;27529:19;27581:4;27576:3;27572:14;27557:29;;27519:73;;;;:::o;27598:305::-;27638:3;27657:20;27675:1;27657:20;:::i;:::-;27652:25;;27691:20;27709:1;27691:20;:::i;:::-;27686:25;;27845:1;27777:66;27773:74;27770:1;27767:81;27764:2;;;27851:18;;:::i;:::-;27764:2;27895:1;27892;27888:9;27881:16;;27642:261;;;;:::o;27909:185::-;27949:1;27966:20;27984:1;27966:20;:::i;:::-;27961:25;;28000:20;28018:1;28000:20;:::i;:::-;27995:25;;28039:1;28029:2;;28044:18;;:::i;:::-;28029:2;28086:1;28083;28079:9;28074:14;;27951:143;;;;:::o;28100:348::-;28140:7;28163:20;28181:1;28163:20;:::i;:::-;28158:25;;28197:20;28215:1;28197:20;:::i;:::-;28192:25;;28385:1;28317:66;28313:74;28310:1;28307:81;28302:1;28295:9;28288:17;28284:105;28281:2;;;28392:18;;:::i;:::-;28281:2;28440:1;28437;28433:9;28422:20;;28148:300;;;;:::o;28454:191::-;28494:4;28514:20;28532:1;28514:20;:::i;:::-;28509:25;;28548:20;28566:1;28548:20;:::i;:::-;28543:25;;28587:1;28584;28581:8;28578:2;;;28592:18;;:::i;:::-;28578:2;28637:1;28634;28630:9;28622:17;;28499:146;;;;:::o;28651:96::-;28688:7;28717:24;28735:5;28717:24;:::i;:::-;28706:35;;28696:51;;;:::o;28753:90::-;28787:7;28830:5;28823:13;28816:21;28805:32;;28795:48;;;:::o;28849:126::-;28886:7;28926:42;28919:5;28915:54;28904:65;;28894:81;;;:::o;28981:77::-;29018:7;29047:5;29036:16;;29026:32;;;:::o;29064:86::-;29099:7;29139:4;29132:5;29128:16;29117:27;;29107:43;;;:::o;29156:178::-;29232:9;29265:63;29322:5;29265:63;:::i;:::-;29252:76;;29242:92;;;:::o;29340:139::-;29416:9;29449:24;29467:5;29449:24;:::i;:::-;29436:37;;29426:53;;;:::o;29485:121::-;29543:9;29576:24;29594:5;29576:24;:::i;:::-;29563:37;;29553:53;;;:::o;29612:307::-;29680:1;29690:113;29704:6;29701:1;29698:13;29690:113;;;29789:1;29784:3;29780:11;29774:18;29770:1;29765:3;29761:11;29754:39;29726:2;29723:1;29719:10;29714:15;;29690:113;;;29821:6;29818:1;29815:13;29812:2;;;29901:1;29892:6;29887:3;29883:16;29876:27;29812:2;29661:258;;;;:::o;29925:281::-;30008:27;30030:4;30008:27;:::i;:::-;30000:6;29996:40;30138:6;30126:10;30123:22;30102:18;30090:10;30087:34;30084:62;30081:2;;;30149:18;;:::i;:::-;30081:2;30189:10;30185:2;30178:22;29968:238;;;:::o;30212:233::-;30251:3;30274:24;30292:5;30274:24;:::i;:::-;30265:33;;30320:66;30313:5;30310:77;30307:2;;;30390:18;;:::i;:::-;30307:2;30437:1;30430:5;30426:13;30419:20;;30255:190;;;:::o;30451:180::-;30499:77;30496:1;30489:88;30596:4;30593:1;30586:15;30620:4;30617:1;30610:15;30637:180;30685:77;30682:1;30675:88;30782:4;30779:1;30772:15;30806:4;30803:1;30796:15;30823:180;30871:77;30868:1;30861:88;30968:4;30965:1;30958:15;30992:4;30989:1;30982:15;31009:102;31050:6;31101:2;31097:7;31092:2;31085:5;31081:14;31077:28;31067:38;;31057:54;;;:::o;31117:222::-;31257:34;31253:1;31245:6;31241:14;31234:58;31326:5;31321:2;31313:6;31309:15;31302:30;31223:116;:::o;31345:221::-;31485:34;31481:1;31473:6;31469:14;31462:58;31554:4;31549:2;31541:6;31537:15;31530:29;31451:115;:::o;31572:177::-;31712:29;31708:1;31700:6;31696:14;31689:53;31678:71;:::o;31755:227::-;31895:34;31891:1;31883:6;31879:14;31872:58;31964:10;31959:2;31951:6;31947:15;31940:35;31861:121;:::o;31988:220::-;32128:34;32124:1;32116:6;32112:14;32105:58;32197:3;32192:2;32184:6;32180:15;32173:28;32094:114;:::o;32214:317::-;32354:34;32350:1;32342:6;32338:14;32331:58;32423:34;32418:2;32410:6;32406:15;32399:59;32492:31;32487:2;32479:6;32475:15;32468:56;32320:211;:::o;32537:240::-;32677:34;32673:1;32665:6;32661:14;32654:58;32746:23;32741:2;32733:6;32729:15;32722:48;32643:134;:::o;32783:239::-;32923:34;32919:1;32911:6;32907:14;32900:58;32992:22;32987:2;32979:6;32975:15;32968:47;32889:133;:::o;33028:223::-;33168:34;33164:1;33156:6;33152:14;33145:58;33237:6;33232:2;33224:6;33220:15;33213:31;33134:117;:::o;33257:228::-;33397:34;33393:1;33385:6;33381:14;33374:58;33466:11;33461:2;33453:6;33449:15;33442:36;33363:122;:::o;33491:220::-;33631:34;33627:1;33619:6;33615:14;33608:58;33700:3;33695:2;33687:6;33683:15;33676:28;33597:114;:::o;33717:182::-;33857:34;33853:1;33845:6;33841:14;33834:58;33823:76;:::o;33905:228::-;34045:34;34041:1;34033:6;34029:14;34022:58;34114:11;34109:2;34101:6;34097:15;34090:36;34011:122;:::o;34139:224::-;34279:34;34275:1;34267:6;34263:14;34256:58;34348:7;34343:2;34335:6;34331:15;34324:32;34245:118;:::o;34369:114::-;34475:8;:::o;34489:223::-;34629:34;34625:1;34617:6;34613:14;34606:58;34698:6;34693:2;34685:6;34681:15;34674:31;34595:117;:::o;34718:173::-;34858:25;34854:1;34846:6;34842:14;34835:49;34824:67;:::o;34897:229::-;35037:34;35033:1;35025:6;35021:14;35014:58;35106:12;35101:2;35093:6;35089:15;35082:37;35003:123;:::o;35132:122::-;35205:24;35223:5;35205:24;:::i;:::-;35198:5;35195:35;35185:2;;35244:1;35241;35234:12;35185:2;35175:79;:::o;35260:116::-;35330:21;35345:5;35330:21;:::i;:::-;35323:5;35320:32;35310:2;;35366:1;35363;35356:12;35310:2;35300:76;:::o;35382:122::-;35455:24;35473:5;35455:24;:::i;:::-;35448:5;35445:35;35435:2;;35494:1;35491;35484:12;35435:2;35425:79;:::o

Swarm Source

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