ETH Price: $2,378.62 (+0.44%)

Token

BABA YAGA (WICK)
 

Overview

Max Total Supply

100,000,000,000 WICK

Holders

144

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000022929207708 WICK

Value
$0.00
0x74704B92AF9EB575A810c736bD7B4645e2B3De54
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:
BABAYAGA

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// Website: https://wicktoken.online
// Twitter: https://twitter.com/BabaYagaERC
// Telegram: https://t.me/babayagaerc

pragma solidity 0.8.12;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

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

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

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


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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


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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

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

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

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

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

        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

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

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold;
    uint256 public maxTxAmount;
    uint256 public maxWalletAmount;
    
    address public marketingWallet = 0x9F404f551b8547823709D35D539D2487725d9C98;
    address public devWallet = 0x9F404f551b8547823709D35D539D2487725d9C98;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
    }
    
    Taxes public taxes = Taxes(15,0);
    Taxes public sellTaxes = Taxes(30,0);
    uint256 public totTax = 15;
    uint256 public totSellTax = 30;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("BABA YAGA", "WICK") {
        _mint(msg.sender, 100e9 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

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

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;

        swapThreshold = totalSupply() * 3 / 10000;// 0.03% 
        maxTxAmount = totalSupply() * 3 / 100; // 3% maxTransactionAmountTxn;
        maxWalletAmount = totalSupply() * 2 / 100; // 4% maxWallet
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

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

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

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

    }

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

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


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

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

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

    }

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

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

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

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

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

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

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

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

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

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

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

    // fallbacks
    receive() external payable {}
    
}

Contract Security Audit

Contract ABI

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

60806040526000600955739f404f551b8547823709d35d539d2487725d9c98600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739f404f551b8547823709d35d539d2487725d9c98600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600f81526020016000815250600f600082015181600001556020820151816001015550506040518060400160405280601e81526020016000815250601160008201518160000155602082015181600101555050600f601355601e6014553480156200012857600080fd5b506040518060400160405280600981526020017f42414241205941474100000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5749434b000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001ad929190620008bc565b508060049080519060200190620001c6929190620008bc565b505050620001e9620001dd6200067160201b60201c565b6200067960201b60201c565b6200022a33620001fe6200073f60201b60201c565b600a6200020c919062000b06565b64174876e8006200021e919062000b57565b6200074860201b60201c565b6001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030f919062000c22565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039d919062000c22565b6040518363ffffffff1660e01b8152600401620003bc92919062000c65565b6020604051808303816000875af1158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000402919062000c22565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506127106003620005e7620008ad60201b60201c565b620005f3919062000b57565b620005ff919062000cc1565b600a819055506064600362000619620008ad60201b60201c565b62000625919062000b57565b62000631919062000cc1565b600b81905550606460026200064b620008ad60201b60201c565b62000657919062000b57565b62000663919062000cc1565b600c81905550505062000e6c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b29062000d5a565b60405180910390fd5b620007cf60008383620008b760201b60201c565b8060026000828254620007e3919062000d7c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200083a919062000d7c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008a1919062000dea565b60405180910390a35050565b6000600254905090565b505050565b828054620008ca9062000e36565b90600052602060002090601f016020900481019282620008ee57600085556200093a565b82601f106200090957805160ff19168380011785556200093a565b828001600101855582156200093a579182015b82811115620009395782518255916020019190600101906200091c565b5b5090506200094991906200094d565b5090565b5b80821115620009685760008160009055506001016200094e565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009fa57808604811115620009d257620009d16200096c565b5b6001851615620009e25780820291505b8081029050620009f2856200099b565b9450620009b2565b94509492505050565b60008262000a15576001905062000ae8565b8162000a25576000905062000ae8565b816001811462000a3e576002811462000a495762000a7f565b600191505062000ae8565b60ff84111562000a5e5762000a5d6200096c565b5b8360020a91508482111562000a785762000a776200096c565b5b5062000ae8565b5060208310610133831016604e8410600b841016171562000ab95782820a90508381111562000ab35762000ab26200096c565b5b62000ae8565b62000ac88484846001620009a8565b9250905081840481111562000ae25762000ae16200096c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b138262000aef565b915062000b208362000af9565b925062000b4f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a03565b905092915050565b600062000b648262000aef565b915062000b718362000aef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bad5762000bac6200096c565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bea8262000bbd565b9050919050565b62000bfc8162000bdd565b811462000c0857600080fd5b50565b60008151905062000c1c8162000bf1565b92915050565b60006020828403121562000c3b5762000c3a62000bb8565b5b600062000c4b8482850162000c0b565b91505092915050565b62000c5f8162000bdd565b82525050565b600060408201905062000c7c600083018562000c54565b62000c8b602083018462000c54565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cce8262000aef565b915062000cdb8362000aef565b92508262000cee5762000ced62000c92565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d42601f8362000cf9565b915062000d4f8262000d0a565b602082019050919050565b6000602082019050818103600083015262000d758162000d33565b9050919050565b600062000d898262000aef565b915062000d968362000aef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dce5762000dcd6200096c565b5b828201905092915050565b62000de48162000aef565b82525050565b600060208201905062000e01600083018462000dd9565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e4f57607f821691505b6020821081141562000e665762000e6562000e07565b5b50919050565b6146078062000e7c6000396000f3fe6080604052600436106102765760003560e01c80638c0b5e221161014f578063aa35822c116100c1578063dd62ed3e1161007a578063dd62ed3e14610960578063e01af92c1461099d578063e545fd6d146109c6578063f2fde38b146109ef578063f66895a314610a18578063f887ea4014610a445761027d565b8063aa35822c14610854578063aa4bde281461087d578063aacebbe3146108a8578063c18bc195146108d1578063d34628cc146108fa578063dbe66ca0146109235761027d565b80639d0014b1116101135780639d0014b1146107345780639e252f001461075d578063a11a168214610786578063a457c2d7146107af578063a8aa1b31146107ec578063a9059cbb146108175761027d565b80638c0b5e221461065f5780638cd4426d1461068a5780638da5cb5b146106b35780638ea5220f146106de57806395d89b41146107095761027d565b806339509351116101e85780636ddd1713116101ac5780636ddd17131461056057806370a082311461058b578063715018a6146105c8578063728f8eea146105df57806375f0a8741461060b57806382aa7c68146106365761027d565b8063395093511461047b57806340b28c2f146104b85780634ada218b146104e157806350c9a88f1461050c5780636256d181146105375761027d565b80632253163d1161023a5780632253163d1461036957806323b872dd1461039457806326b5d32f146103d1578063274a533c146103fa578063293b7ef414610425578063313ce567146104505761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d857806318160ddd146103155780631816467f146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a6f565b6040516102a49190613092565b60405180910390f35b3480156102b957600080fd5b506102c2610a75565b6040516102cf9190613146565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613206565b610b07565b60405161030c9190613261565b60405180910390f35b34801561032157600080fd5b5061032a610b25565b6040516103379190613092565b60405180910390f35b34801561034c57600080fd5b506103676004803603810190610362919061327c565b610b2f565b005b34801561037557600080fd5b5061037e610bef565b60405161038b9190613092565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b691906132a9565b610bf5565b6040516103c89190613261565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f391906132fc565b610cf6565b005b34801561040657600080fd5b5061040f610e83565b60405161041c9190613092565b60405180910390f35b34801561043157600080fd5b5061043a610e89565b6040516104479190613092565b60405180910390f35b34801561045c57600080fd5b50610465610e8f565b604051610472919061336b565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613206565b610e98565b6040516104af9190613261565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906133c4565b610f44565b005b3480156104ed57600080fd5b506104f6611046565b6040516105039190613261565b60405180910390f35b34801561051857600080fd5b50610521611059565b60405161052e9190613092565b60405180910390f35b34801561054357600080fd5b5061055e60048036038101906105599190613404565b61105f565b005b34801561056c57600080fd5b50610575611103565b6040516105829190613261565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad919061327c565b611116565b6040516105bf9190613092565b60405180910390f35b3480156105d457600080fd5b506105dd61115e565b005b3480156105eb57600080fd5b506105f46111e6565b604051610602929190613431565b60405180910390f35b34801561061757600080fd5b506106206111f8565b60405161062d9190613469565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190613404565b61121e565b005b34801561066b57600080fd5b50610674611331565b6040516106819190613092565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613206565b611337565b005b3480156106bf57600080fd5b506106c861143d565b6040516106d59190613469565b60405180910390f35b3480156106ea57600080fd5b506106f3611467565b6040516107009190613469565b60405180910390f35b34801561071557600080fd5b5061071e61148d565b60405161072b9190613146565b60405180910390f35b34801561074057600080fd5b5061075b60048036038101906107569190613404565b61151f565b005b34801561076957600080fd5b50610784600480360381019061077f9190613404565b6115a5565b005b34801561079257600080fd5b506107ad60048036038101906107a89190613484565b611654565b005b3480156107bb57600080fd5b506107d660048036038101906107d19190613206565b611714565b6040516107e39190613261565b60405180910390f35b3480156107f857600080fd5b50610801611808565b60405161080e9190613469565b60405180910390f35b34801561082357600080fd5b5061083e60048036038101906108399190613206565b61182e565b60405161084b9190613261565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190613484565b61184c565b005b34801561088957600080fd5b5061089261190c565b60405161089f9190613092565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca919061327c565b611912565b005b3480156108dd57600080fd5b506108f860048036038101906108f39190613404565b6119d2565b005b34801561090657600080fd5b50610921600480360381019061091c919061360c565b611a76565b005b34801561092f57600080fd5b5061094a6004803603810190610945919061327c565b611b87565b6040516109579190613261565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613655565b611ba7565b6040516109949190613092565b60405180910390f35b3480156109a957600080fd5b506109c460048036038101906109bf91906136c1565b611c2e565b005b3480156109d257600080fd5b506109ed60048036038101906109e891906136ee565b611cc7565b005b3480156109fb57600080fd5b50610a166004803603810190610a11919061327c565b611d9e565b005b348015610a2457600080fd5b50610a2d611e96565b604051610a3b929190613431565b60405180910390f35b348015610a5057600080fd5b50610a59611ea8565b604051610a66919061378d565b60405180910390f35b600a5481565b606060038054610a84906137d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab0906137d7565b8015610afd5780601f10610ad257610100808354040283529160200191610afd565b820191906000526020600020905b815481529060010190602001808311610ae057829003601f168201915b5050505050905090565b6000610b1b610b14611ece565b8484611ed6565b6001905092915050565b6000600254905090565b610b37611ece565b73ffffffffffffffffffffffffffffffffffffffff16610b5561143d565b73ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290613855565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6000610c028484846120a1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4d611ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc4906138e7565b60405180910390fd5b610cea85610cd9611ece565b8584610ce59190613936565b611ed6565b60019150509392505050565b610cfe611ece565b73ffffffffffffffffffffffffffffffffffffffff16610d1c61143d565b73ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990613855565b60405180910390fd5b6000479050610d808461276b565b60008147610d8e9190613936565b90506000831115610e0657610e058385610da8919061396a565b8483610db491906139c0565b610dbe9190613a49565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b5b6000841115610e7c57610e7b8385610e1e919061396a565b8583610e2a91906139c0565b610e349190613a49565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b5b5050505050565b60085481565b60135481565b60006012905090565b6000610f3a610ea5611ece565b848460016000610eb3611ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f35919061396a565b611ed6565b6001905092915050565b610f4c611ece565b73ffffffffffffffffffffffffffffffffffffffff16610f6a61143d565b73ffffffffffffffffffffffffffffffffffffffff1614610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790613855565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611067611ece565b73ffffffffffffffffffffffffffffffffffffffff1661108561143d565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290613855565b60405180910390fd5b6064816110e6610b25565b6110f091906139c0565b6110fa9190613a49565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611166611ece565b73ffffffffffffffffffffffffffffffffffffffff1661118461143d565b73ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190613855565b60405180910390fd5b6111e46000612aa2565b565b600f8060000154908060010154905082565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611226611ece565b73ffffffffffffffffffffffffffffffffffffffff1661124461143d565b73ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190613855565b60405180910390fd5b600760169054906101000a900460ff16156112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190613ac6565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b61133f611ece565b73ffffffffffffffffffffffffffffffffffffffff1661135d61143d565b73ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90613855565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6113d761143d565b836040518363ffffffff1660e01b81526004016113f5929190613ae6565b6020604051808303816000875af1158015611414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114389190613b24565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461149c906137d7565b80601f01602080910402602001604051908101604052809291908181526020018280546114c8906137d7565b80156115155780601f106114ea57610100808354040283529160200191611515565b820191906000526020600020905b8154815290600101906020018083116114f857829003601f168201915b5050505050905090565b611527611ece565b73ffffffffffffffffffffffffffffffffffffffff1661154561143d565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290613855565b60405180910390fd5b80600a8190555050565b6115ad611ece565b73ffffffffffffffffffffffffffffffffffffffff166115cb61143d565b73ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890613855565b60405180910390fd5b6116518161162d61143d565b73ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b50565b61165c611ece565b73ffffffffffffffffffffffffffffffffffffffff1661167a61143d565b73ffffffffffffffffffffffffffffffffffffffff16146116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613855565b60405180910390fd5b60405180604001604052808381526020018281525060116000820151816000015560208201518160010155905050808261170a919061396a565b6014819055505050565b60008060016000611723611ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790613bc3565b60405180910390fd5b6117fd6117eb611ece565b8585846117f89190613936565b611ed6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061184261183b611ece565b84846120a1565b6001905092915050565b611854611ece565b73ffffffffffffffffffffffffffffffffffffffff1661187261143d565b73ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90613855565b60405180910390fd5b604051806040016040528083815260200182815250600f60008201518160000155602082015181600101559050508082611902919061396a565b6013819055505050565b600c5481565b61191a611ece565b73ffffffffffffffffffffffffffffffffffffffff1661193861143d565b73ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613855565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6119da611ece565b73ffffffffffffffffffffffffffffffffffffffff166119f861143d565b73ffffffffffffffffffffffffffffffffffffffff1614611a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4590613855565b60405180910390fd5b606481611a59610b25565b611a6391906139c0565b611a6d9190613a49565b600c8190555050565b611a7e611ece565b73ffffffffffffffffffffffffffffffffffffffff16611a9c61143d565b73ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613855565b60405180910390fd5b60005b8151811015611b8357600160166000848481518110611b1757611b16613be3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b7b90613c12565b915050611af5565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c36611ece565b73ffffffffffffffffffffffffffffffffffffffff16611c5461143d565b73ffffffffffffffffffffffffffffffffffffffff1614611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190613855565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ccf611ece565b73ffffffffffffffffffffffffffffffffffffffff16611ced61143d565b73ffffffffffffffffffffffffffffffffffffffff1614611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90613855565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611da6611ece565b73ffffffffffffffffffffffffffffffffffffffff16611dc461143d565b73ffffffffffffffffffffffffffffffffffffffff1614611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190613855565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613ccd565b60405180910390fd5b611e9381612aa2565b50565b60118060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3d90613d5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fad90613df1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120949190613092565b60405180910390a3505050565b600081116120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db90613e83565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121885750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613eef565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561226b5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122845750600760149054906101000a900460ff16155b1561254057600760169054906101000a900460ff166122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf90613f5b565b60405180910390fd5b436009546008546122e9919061396a565b111561244c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461239d576001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461244b576001601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115612491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248890613fc7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461253f57600c54816124f384611116565b6124fd919061396a565b111561253e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253590614059565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806125a65750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125fa5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612608576000905061269d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561267f5760646014548361266e91906139c0565b6126789190613a49565b905061269c565b60646013548361268f91906139c0565b6126999190613a49565b90505b5b600760159054906101000a900460ff1680156126c65750600760149054906101000a900460ff16155b80156127205750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561272c5750600081115b1561273a57612739612b68565b5b6127508484838561274b9190613936565b612cf5565b600081111561276557612764843083612cf5565b5b50505050565b6000600267ffffffffffffffff811115612788576127876134c9565b5b6040519080825280602002602001820160405280156127b65781602001602082028036833780820191505090505b50905030816000815181106127ce576127cd613be3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612875573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612899919061408e565b816001815181106128ad576128ac613be3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061291430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129789594939291906141b4565b600060405180830381600087803b15801561299257600080fd5b505af11580156129a6573d6000803e3d6000fd5b505050505050565b804710156129f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e89061425a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a17906142ab565b60006040518083038185875af1925050503d8060008114612a54576040519150601f19603f3d011682016040523d82523d6000602084013e612a59565b606091505b5050905080612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9490614332565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612cf3576001600760146101000a81548160ff0219169083151502179055506000612ba230611116565b9050600a548110612cd65760006002601454612bbe91906139c0565b905060008160116001015484612bd491906139c0565b612bde9190613a49565b905060008184612bee9190613936565b90506000479050612bfe8261276b565b60008147612c0c9190613936565b9050600060116001015486612c219190613936565b82612c2c9190613a49565b9050600060116001015482612c4191906139c0565b90506000811115612c5757612c568682612f74565b5b6000601160000154600284612c6c91906139c0565b612c7691906139c0565b90506000811115612ccd57612ccc81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b5b50505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c906143c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc90614456565b60405180910390fd5b612de0838383613074565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5d906144e8565b60405180910390fd5b8181612e729190613936565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f02919061396a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f669190613092565b60405180910390a350505050565b612fa130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161302a96959493929190614508565b60606040518083038185885af1158015613048573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061306d919061457e565b5050505050565b505050565b6000819050919050565b61308c81613079565b82525050565b60006020820190506130a76000830184613083565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130e75780820151818401526020810190506130cc565b838111156130f6576000848401525b50505050565b6000601f19601f8301169050919050565b6000613118826130ad565b61312281856130b8565b93506131328185602086016130c9565b61313b816130fc565b840191505092915050565b60006020820190508181036000830152613160818461310d565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131a78261317c565b9050919050565b6131b78161319c565b81146131c257600080fd5b50565b6000813590506131d4816131ae565b92915050565b6131e381613079565b81146131ee57600080fd5b50565b600081359050613200816131da565b92915050565b6000806040838503121561321d5761321c613172565b5b600061322b858286016131c5565b925050602061323c858286016131f1565b9150509250929050565b60008115159050919050565b61325b81613246565b82525050565b60006020820190506132766000830184613252565b92915050565b60006020828403121561329257613291613172565b5b60006132a0848285016131c5565b91505092915050565b6000806000606084860312156132c2576132c1613172565b5b60006132d0868287016131c5565b93505060206132e1868287016131c5565b92505060406132f2868287016131f1565b9150509250925092565b60008060006060848603121561331557613314613172565b5b6000613323868287016131f1565b9350506020613334868287016131f1565b9250506040613345868287016131f1565b9150509250925092565b600060ff82169050919050565b6133658161334f565b82525050565b6000602082019050613380600083018461335c565b92915050565b60006133918261319c565b9050919050565b6133a181613386565b81146133ac57600080fd5b50565b6000813590506133be81613398565b92915050565b600080604083850312156133db576133da613172565b5b60006133e9858286016133af565b92505060206133fa858286016131c5565b9150509250929050565b60006020828403121561341a57613419613172565b5b6000613428848285016131f1565b91505092915050565b60006040820190506134466000830185613083565b6134536020830184613083565b9392505050565b6134638161319c565b82525050565b600060208201905061347e600083018461345a565b92915050565b6000806040838503121561349b5761349a613172565b5b60006134a9858286016131f1565b92505060206134ba858286016131f1565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613501826130fc565b810181811067ffffffffffffffff821117156135205761351f6134c9565b5b80604052505050565b6000613533613168565b905061353f82826134f8565b919050565b600067ffffffffffffffff82111561355f5761355e6134c9565b5b602082029050602081019050919050565b600080fd5b600061358861358384613544565b613529565b905080838252602082019050602084028301858111156135ab576135aa613570565b5b835b818110156135d457806135c088826131c5565b8452602084019350506020810190506135ad565b5050509392505050565b600082601f8301126135f3576135f26134c4565b5b8135613603848260208601613575565b91505092915050565b60006020828403121561362257613621613172565b5b600082013567ffffffffffffffff8111156136405761363f613177565b5b61364c848285016135de565b91505092915050565b6000806040838503121561366c5761366b613172565b5b600061367a858286016131c5565b925050602061368b858286016131c5565b9150509250929050565b61369e81613246565b81146136a957600080fd5b50565b6000813590506136bb81613695565b92915050565b6000602082840312156136d7576136d6613172565b5b60006136e5848285016136ac565b91505092915050565b6000806040838503121561370557613704613172565b5b6000613713858286016131c5565b9250506020613724858286016136ac565b9150509250929050565b6000819050919050565b600061375361374e6137498461317c565b61372e565b61317c565b9050919050565b600061376582613738565b9050919050565b60006137778261375a565b9050919050565b6137878161376c565b82525050565b60006020820190506137a2600083018461377e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137ef57607f821691505b60208210811415613803576138026137a8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061383f6020836130b8565b915061384a82613809565b602082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138d16028836130b8565b91506138dc82613875565b604082019050919050565b60006020820190508181036000830152613900816138c4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394182613079565b915061394c83613079565b92508282101561395f5761395e613907565b5b828203905092915050565b600061397582613079565b915061398083613079565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139b5576139b4613907565b5b828201905092915050565b60006139cb82613079565b91506139d683613079565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a0f57613a0e613907565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5482613079565b9150613a5f83613079565b925082613a6f57613a6e613a1a565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613ab06016836130b8565b9150613abb82613a7a565b602082019050919050565b60006020820190508181036000830152613adf81613aa3565b9050919050565b6000604082019050613afb600083018561345a565b613b086020830184613083565b9392505050565b600081519050613b1e81613695565b92915050565b600060208284031215613b3a57613b39613172565b5b6000613b4884828501613b0f565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bad6025836130b8565b9150613bb882613b51565b604082019050919050565b60006020820190508181036000830152613bdc81613ba0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613c1d82613079565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c5057613c4f613907565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cb76026836130b8565b9150613cc282613c5b565b604082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d496024836130b8565b9150613d5482613ced565b604082019050919050565b60006020820190508181036000830152613d7881613d3c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ddb6022836130b8565b9150613de682613d7f565b604082019050919050565b60006020820190508181036000830152613e0a81613dce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e6d6029836130b8565b9150613e7882613e11565b604082019050919050565b60006020820190508181036000830152613e9c81613e60565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613ed96019836130b8565b9150613ee482613ea3565b602082019050919050565b60006020820190508181036000830152613f0881613ecc565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613f456016836130b8565b9150613f5082613f0f565b602082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613fb1601d836130b8565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140436021836130b8565b915061404e82613fe7565b604082019050919050565b6000602082019050818103600083015261407281614036565b9050919050565b600081519050614088816131ae565b92915050565b6000602082840312156140a4576140a3613172565b5b60006140b284828501614079565b91505092915050565b6000819050919050565b60006140e06140db6140d6846140bb565b61372e565b613079565b9050919050565b6140f0816140c5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61412b8161319c565b82525050565b600061413d8383614122565b60208301905092915050565b6000602082019050919050565b6000614161826140f6565b61416b8185614101565b935061417683614112565b8060005b838110156141a757815161418e8882614131565b975061419983614149565b92505060018101905061417a565b5085935050505092915050565b600060a0820190506141c96000830188613083565b6141d660208301876140e7565b81810360408301526141e88186614156565b90506141f7606083018561345a565b6142046080830184613083565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614244601d836130b8565b915061424f8261420e565b602082019050919050565b6000602082019050818103600083015261427381614237565b9050919050565b600081905092915050565b50565b600061429560008361427a565b91506142a082614285565b600082019050919050565b60006142b682614288565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061431c603a836130b8565b9150614327826142c0565b604082019050919050565b6000602082019050818103600083015261434b8161430f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143ae6025836130b8565b91506143b982614352565b604082019050919050565b600060208201905081810360008301526143dd816143a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144406023836130b8565b915061444b826143e4565b604082019050919050565b6000602082019050818103600083015261446f81614433565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144d26026836130b8565b91506144dd82614476565b604082019050919050565b60006020820190508181036000830152614501816144c5565b9050919050565b600060c08201905061451d600083018961345a565b61452a6020830188613083565b61453760408301876140e7565b61454460608301866140e7565b614551608083018561345a565b61455e60a0830184613083565b979650505050505050565b600081519050614578816131da565b92915050565b60008060006060848603121561459757614596613172565b5b60006145a586828701614569565b93505060206145b686828701614569565b92505060406145c786828701614569565b915050925092509256fea2646970667358221220cac571f52abc5afcb0192fa7b2bcb41289eebcee3da443fc7d533165bb67e3e864736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102765760003560e01c80638c0b5e221161014f578063aa35822c116100c1578063dd62ed3e1161007a578063dd62ed3e14610960578063e01af92c1461099d578063e545fd6d146109c6578063f2fde38b146109ef578063f66895a314610a18578063f887ea4014610a445761027d565b8063aa35822c14610854578063aa4bde281461087d578063aacebbe3146108a8578063c18bc195146108d1578063d34628cc146108fa578063dbe66ca0146109235761027d565b80639d0014b1116101135780639d0014b1146107345780639e252f001461075d578063a11a168214610786578063a457c2d7146107af578063a8aa1b31146107ec578063a9059cbb146108175761027d565b80638c0b5e221461065f5780638cd4426d1461068a5780638da5cb5b146106b35780638ea5220f146106de57806395d89b41146107095761027d565b806339509351116101e85780636ddd1713116101ac5780636ddd17131461056057806370a082311461058b578063715018a6146105c8578063728f8eea146105df57806375f0a8741461060b57806382aa7c68146106365761027d565b8063395093511461047b57806340b28c2f146104b85780634ada218b146104e157806350c9a88f1461050c5780636256d181146105375761027d565b80632253163d1161023a5780632253163d1461036957806323b872dd1461039457806326b5d32f146103d1578063274a533c146103fa578063293b7ef414610425578063313ce567146104505761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d857806318160ddd146103155780631816467f146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a6f565b6040516102a49190613092565b60405180910390f35b3480156102b957600080fd5b506102c2610a75565b6040516102cf9190613146565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613206565b610b07565b60405161030c9190613261565b60405180910390f35b34801561032157600080fd5b5061032a610b25565b6040516103379190613092565b60405180910390f35b34801561034c57600080fd5b506103676004803603810190610362919061327c565b610b2f565b005b34801561037557600080fd5b5061037e610bef565b60405161038b9190613092565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b691906132a9565b610bf5565b6040516103c89190613261565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f391906132fc565b610cf6565b005b34801561040657600080fd5b5061040f610e83565b60405161041c9190613092565b60405180910390f35b34801561043157600080fd5b5061043a610e89565b6040516104479190613092565b60405180910390f35b34801561045c57600080fd5b50610465610e8f565b604051610472919061336b565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613206565b610e98565b6040516104af9190613261565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906133c4565b610f44565b005b3480156104ed57600080fd5b506104f6611046565b6040516105039190613261565b60405180910390f35b34801561051857600080fd5b50610521611059565b60405161052e9190613092565b60405180910390f35b34801561054357600080fd5b5061055e60048036038101906105599190613404565b61105f565b005b34801561056c57600080fd5b50610575611103565b6040516105829190613261565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad919061327c565b611116565b6040516105bf9190613092565b60405180910390f35b3480156105d457600080fd5b506105dd61115e565b005b3480156105eb57600080fd5b506105f46111e6565b604051610602929190613431565b60405180910390f35b34801561061757600080fd5b506106206111f8565b60405161062d9190613469565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190613404565b61121e565b005b34801561066b57600080fd5b50610674611331565b6040516106819190613092565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190613206565b611337565b005b3480156106bf57600080fd5b506106c861143d565b6040516106d59190613469565b60405180910390f35b3480156106ea57600080fd5b506106f3611467565b6040516107009190613469565b60405180910390f35b34801561071557600080fd5b5061071e61148d565b60405161072b9190613146565b60405180910390f35b34801561074057600080fd5b5061075b60048036038101906107569190613404565b61151f565b005b34801561076957600080fd5b50610784600480360381019061077f9190613404565b6115a5565b005b34801561079257600080fd5b506107ad60048036038101906107a89190613484565b611654565b005b3480156107bb57600080fd5b506107d660048036038101906107d19190613206565b611714565b6040516107e39190613261565b60405180910390f35b3480156107f857600080fd5b50610801611808565b60405161080e9190613469565b60405180910390f35b34801561082357600080fd5b5061083e60048036038101906108399190613206565b61182e565b60405161084b9190613261565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190613484565b61184c565b005b34801561088957600080fd5b5061089261190c565b60405161089f9190613092565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca919061327c565b611912565b005b3480156108dd57600080fd5b506108f860048036038101906108f39190613404565b6119d2565b005b34801561090657600080fd5b50610921600480360381019061091c919061360c565b611a76565b005b34801561092f57600080fd5b5061094a6004803603810190610945919061327c565b611b87565b6040516109579190613261565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613655565b611ba7565b6040516109949190613092565b60405180910390f35b3480156109a957600080fd5b506109c460048036038101906109bf91906136c1565b611c2e565b005b3480156109d257600080fd5b506109ed60048036038101906109e891906136ee565b611cc7565b005b3480156109fb57600080fd5b50610a166004803603810190610a11919061327c565b611d9e565b005b348015610a2457600080fd5b50610a2d611e96565b604051610a3b929190613431565b60405180910390f35b348015610a5057600080fd5b50610a59611ea8565b604051610a66919061378d565b60405180910390f35b600a5481565b606060038054610a84906137d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab0906137d7565b8015610afd5780601f10610ad257610100808354040283529160200191610afd565b820191906000526020600020905b815481529060010190602001808311610ae057829003601f168201915b5050505050905090565b6000610b1b610b14611ece565b8484611ed6565b6001905092915050565b6000600254905090565b610b37611ece565b73ffffffffffffffffffffffffffffffffffffffff16610b5561143d565b73ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290613855565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6000610c028484846120a1565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4d611ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc4906138e7565b60405180910390fd5b610cea85610cd9611ece565b8584610ce59190613936565b611ed6565b60019150509392505050565b610cfe611ece565b73ffffffffffffffffffffffffffffffffffffffff16610d1c61143d565b73ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990613855565b60405180910390fd5b6000479050610d808461276b565b60008147610d8e9190613936565b90506000831115610e0657610e058385610da8919061396a565b8483610db491906139c0565b610dbe9190613a49565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b5b6000841115610e7c57610e7b8385610e1e919061396a565b8583610e2a91906139c0565b610e349190613a49565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b5b5050505050565b60085481565b60135481565b60006012905090565b6000610f3a610ea5611ece565b848460016000610eb3611ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f35919061396a565b611ed6565b6001905092915050565b610f4c611ece565b73ffffffffffffffffffffffffffffffffffffffff16610f6a61143d565b73ffffffffffffffffffffffffffffffffffffffff1614610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790613855565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b611067611ece565b73ffffffffffffffffffffffffffffffffffffffff1661108561143d565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290613855565b60405180910390fd5b6064816110e6610b25565b6110f091906139c0565b6110fa9190613a49565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611166611ece565b73ffffffffffffffffffffffffffffffffffffffff1661118461143d565b73ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190613855565b60405180910390fd5b6111e46000612aa2565b565b600f8060000154908060010154905082565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611226611ece565b73ffffffffffffffffffffffffffffffffffffffff1661124461143d565b73ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190613855565b60405180910390fd5b600760169054906101000a900460ff16156112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e190613ac6565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b61133f611ece565b73ffffffffffffffffffffffffffffffffffffffff1661135d61143d565b73ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90613855565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6113d761143d565b836040518363ffffffff1660e01b81526004016113f5929190613ae6565b6020604051808303816000875af1158015611414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114389190613b24565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461149c906137d7565b80601f01602080910402602001604051908101604052809291908181526020018280546114c8906137d7565b80156115155780601f106114ea57610100808354040283529160200191611515565b820191906000526020600020905b8154815290600101906020018083116114f857829003601f168201915b5050505050905090565b611527611ece565b73ffffffffffffffffffffffffffffffffffffffff1661154561143d565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290613855565b60405180910390fd5b80600a8190555050565b6115ad611ece565b73ffffffffffffffffffffffffffffffffffffffff166115cb61143d565b73ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890613855565b60405180910390fd5b6116518161162d61143d565b73ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b50565b61165c611ece565b73ffffffffffffffffffffffffffffffffffffffff1661167a61143d565b73ffffffffffffffffffffffffffffffffffffffff16146116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613855565b60405180910390fd5b60405180604001604052808381526020018281525060116000820151816000015560208201518160010155905050808261170a919061396a565b6014819055505050565b60008060016000611723611ece565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790613bc3565b60405180910390fd5b6117fd6117eb611ece565b8585846117f89190613936565b611ed6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061184261183b611ece565b84846120a1565b6001905092915050565b611854611ece565b73ffffffffffffffffffffffffffffffffffffffff1661187261143d565b73ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90613855565b60405180910390fd5b604051806040016040528083815260200182815250600f60008201518160000155602082015181600101559050508082611902919061396a565b6013819055505050565b600c5481565b61191a611ece565b73ffffffffffffffffffffffffffffffffffffffff1661193861143d565b73ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613855565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6119da611ece565b73ffffffffffffffffffffffffffffffffffffffff166119f861143d565b73ffffffffffffffffffffffffffffffffffffffff1614611a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4590613855565b60405180910390fd5b606481611a59610b25565b611a6391906139c0565b611a6d9190613a49565b600c8190555050565b611a7e611ece565b73ffffffffffffffffffffffffffffffffffffffff16611a9c61143d565b73ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613855565b60405180910390fd5b60005b8151811015611b8357600160166000848481518110611b1757611b16613be3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b7b90613c12565b915050611af5565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c36611ece565b73ffffffffffffffffffffffffffffffffffffffff16611c5461143d565b73ffffffffffffffffffffffffffffffffffffffff1614611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190613855565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611ccf611ece565b73ffffffffffffffffffffffffffffffffffffffff16611ced61143d565b73ffffffffffffffffffffffffffffffffffffffff1614611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90613855565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611da6611ece565b73ffffffffffffffffffffffffffffffffffffffff16611dc461143d565b73ffffffffffffffffffffffffffffffffffffffff1614611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190613855565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613ccd565b60405180910390fd5b611e9381612aa2565b50565b60118060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3d90613d5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fad90613df1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120949190613092565b60405180910390a3505050565b600081116120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db90613e83565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121885750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613eef565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561226b5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122845750600760149054906101000a900460ff16155b1561254057600760169054906101000a900460ff166122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf90613f5b565b60405180910390fd5b436009546008546122e9919061396a565b111561244c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461239d576001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461244b576001601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b54811115612491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248890613fc7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461253f57600c54816124f384611116565b6124fd919061396a565b111561253e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253590614059565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806125a65750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125fa5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612608576000905061269d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561267f5760646014548361266e91906139c0565b6126789190613a49565b905061269c565b60646013548361268f91906139c0565b6126999190613a49565b90505b5b600760159054906101000a900460ff1680156126c65750600760149054906101000a900460ff16155b80156127205750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561272c5750600081115b1561273a57612739612b68565b5b6127508484838561274b9190613936565b612cf5565b600081111561276557612764843083612cf5565b5b50505050565b6000600267ffffffffffffffff811115612788576127876134c9565b5b6040519080825280602002602001820160405280156127b65781602001602082028036833780820191505090505b50905030816000815181106127ce576127cd613be3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612875573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612899919061408e565b816001815181106128ad576128ac613be3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061291430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016129789594939291906141b4565b600060405180830381600087803b15801561299257600080fd5b505af11580156129a6573d6000803e3d6000fd5b505050505050565b804710156129f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e89061425a565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a17906142ab565b60006040518083038185875af1925050503d8060008114612a54576040519150601f19603f3d011682016040523d82523d6000602084013e612a59565b606091505b5050905080612a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9490614332565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612cf3576001600760146101000a81548160ff0219169083151502179055506000612ba230611116565b9050600a548110612cd65760006002601454612bbe91906139c0565b905060008160116001015484612bd491906139c0565b612bde9190613a49565b905060008184612bee9190613936565b90506000479050612bfe8261276b565b60008147612c0c9190613936565b9050600060116001015486612c219190613936565b82612c2c9190613a49565b9050600060116001015482612c4191906139c0565b90506000811115612c5757612c568682612f74565b5b6000601160000154600284612c6c91906139c0565b612c7691906139c0565b90506000811115612ccd57612ccc81600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129ae90919063ffffffff16565b5b50505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c906143c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc90614456565b60405180910390fd5b612de0838383613074565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5d906144e8565b60405180910390fd5b8181612e729190613936565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f02919061396a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f669190613092565b60405180910390a350505050565b612fa130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ed6565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161302a96959493929190614508565b60606040518083038185885af1158015613048573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061306d919061457e565b5050505050565b505050565b6000819050919050565b61308c81613079565b82525050565b60006020820190506130a76000830184613083565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130e75780820151818401526020810190506130cc565b838111156130f6576000848401525b50505050565b6000601f19601f8301169050919050565b6000613118826130ad565b61312281856130b8565b93506131328185602086016130c9565b61313b816130fc565b840191505092915050565b60006020820190508181036000830152613160818461310d565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131a78261317c565b9050919050565b6131b78161319c565b81146131c257600080fd5b50565b6000813590506131d4816131ae565b92915050565b6131e381613079565b81146131ee57600080fd5b50565b600081359050613200816131da565b92915050565b6000806040838503121561321d5761321c613172565b5b600061322b858286016131c5565b925050602061323c858286016131f1565b9150509250929050565b60008115159050919050565b61325b81613246565b82525050565b60006020820190506132766000830184613252565b92915050565b60006020828403121561329257613291613172565b5b60006132a0848285016131c5565b91505092915050565b6000806000606084860312156132c2576132c1613172565b5b60006132d0868287016131c5565b93505060206132e1868287016131c5565b92505060406132f2868287016131f1565b9150509250925092565b60008060006060848603121561331557613314613172565b5b6000613323868287016131f1565b9350506020613334868287016131f1565b9250506040613345868287016131f1565b9150509250925092565b600060ff82169050919050565b6133658161334f565b82525050565b6000602082019050613380600083018461335c565b92915050565b60006133918261319c565b9050919050565b6133a181613386565b81146133ac57600080fd5b50565b6000813590506133be81613398565b92915050565b600080604083850312156133db576133da613172565b5b60006133e9858286016133af565b92505060206133fa858286016131c5565b9150509250929050565b60006020828403121561341a57613419613172565b5b6000613428848285016131f1565b91505092915050565b60006040820190506134466000830185613083565b6134536020830184613083565b9392505050565b6134638161319c565b82525050565b600060208201905061347e600083018461345a565b92915050565b6000806040838503121561349b5761349a613172565b5b60006134a9858286016131f1565b92505060206134ba858286016131f1565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613501826130fc565b810181811067ffffffffffffffff821117156135205761351f6134c9565b5b80604052505050565b6000613533613168565b905061353f82826134f8565b919050565b600067ffffffffffffffff82111561355f5761355e6134c9565b5b602082029050602081019050919050565b600080fd5b600061358861358384613544565b613529565b905080838252602082019050602084028301858111156135ab576135aa613570565b5b835b818110156135d457806135c088826131c5565b8452602084019350506020810190506135ad565b5050509392505050565b600082601f8301126135f3576135f26134c4565b5b8135613603848260208601613575565b91505092915050565b60006020828403121561362257613621613172565b5b600082013567ffffffffffffffff8111156136405761363f613177565b5b61364c848285016135de565b91505092915050565b6000806040838503121561366c5761366b613172565b5b600061367a858286016131c5565b925050602061368b858286016131c5565b9150509250929050565b61369e81613246565b81146136a957600080fd5b50565b6000813590506136bb81613695565b92915050565b6000602082840312156136d7576136d6613172565b5b60006136e5848285016136ac565b91505092915050565b6000806040838503121561370557613704613172565b5b6000613713858286016131c5565b9250506020613724858286016136ac565b9150509250929050565b6000819050919050565b600061375361374e6137498461317c565b61372e565b61317c565b9050919050565b600061376582613738565b9050919050565b60006137778261375a565b9050919050565b6137878161376c565b82525050565b60006020820190506137a2600083018461377e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137ef57607f821691505b60208210811415613803576138026137a8565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061383f6020836130b8565b915061384a82613809565b602082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138d16028836130b8565b91506138dc82613875565b604082019050919050565b60006020820190508181036000830152613900816138c4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394182613079565b915061394c83613079565b92508282101561395f5761395e613907565b5b828203905092915050565b600061397582613079565b915061398083613079565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139b5576139b4613907565b5b828201905092915050565b60006139cb82613079565b91506139d683613079565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a0f57613a0e613907565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5482613079565b9150613a5f83613079565b925082613a6f57613a6e613a1a565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613ab06016836130b8565b9150613abb82613a7a565b602082019050919050565b60006020820190508181036000830152613adf81613aa3565b9050919050565b6000604082019050613afb600083018561345a565b613b086020830184613083565b9392505050565b600081519050613b1e81613695565b92915050565b600060208284031215613b3a57613b39613172565b5b6000613b4884828501613b0f565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bad6025836130b8565b9150613bb882613b51565b604082019050919050565b60006020820190508181036000830152613bdc81613ba0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613c1d82613079565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c5057613c4f613907565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cb76026836130b8565b9150613cc282613c5b565b604082019050919050565b60006020820190508181036000830152613ce681613caa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d496024836130b8565b9150613d5482613ced565b604082019050919050565b60006020820190508181036000830152613d7881613d3c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ddb6022836130b8565b9150613de682613d7f565b604082019050919050565b60006020820190508181036000830152613e0a81613dce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e6d6029836130b8565b9150613e7882613e11565b604082019050919050565b60006020820190508181036000830152613e9c81613e60565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613ed96019836130b8565b9150613ee482613ea3565b602082019050919050565b60006020820190508181036000830152613f0881613ecc565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613f456016836130b8565b9150613f5082613f0f565b602082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613fb1601d836130b8565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140436021836130b8565b915061404e82613fe7565b604082019050919050565b6000602082019050818103600083015261407281614036565b9050919050565b600081519050614088816131ae565b92915050565b6000602082840312156140a4576140a3613172565b5b60006140b284828501614079565b91505092915050565b6000819050919050565b60006140e06140db6140d6846140bb565b61372e565b613079565b9050919050565b6140f0816140c5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61412b8161319c565b82525050565b600061413d8383614122565b60208301905092915050565b6000602082019050919050565b6000614161826140f6565b61416b8185614101565b935061417683614112565b8060005b838110156141a757815161418e8882614131565b975061419983614149565b92505060018101905061417a565b5085935050505092915050565b600060a0820190506141c96000830188613083565b6141d660208301876140e7565b81810360408301526141e88186614156565b90506141f7606083018561345a565b6142046080830184613083565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614244601d836130b8565b915061424f8261420e565b602082019050919050565b6000602082019050818103600083015261427381614237565b9050919050565b600081905092915050565b50565b600061429560008361427a565b91506142a082614285565b600082019050919050565b60006142b682614288565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061431c603a836130b8565b9150614327826142c0565b604082019050919050565b6000602082019050818103600083015261434b8161430f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143ae6025836130b8565b91506143b982614352565b604082019050919050565b600060208201905081810360008301526143dd816143a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144406023836130b8565b915061444b826143e4565b604082019050919050565b6000602082019050818103600083015261446f81614433565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144d26026836130b8565b91506144dd82614476565b604082019050919050565b60006020820190508181036000830152614501816144c5565b9050919050565b600060c08201905061451d600083018961345a565b61452a6020830188613083565b61453760408301876140e7565b61454460608301866140e7565b614551608083018561345a565b61455e60a0830184613083565b979650505050505050565b600081519050614578816131da565b92915050565b60008060006060848603121561459757614596613172565b5b60006145a586828701614569565b93505060206145b686828701614569565b92505060406145c786828701614569565b915050925092509256fea2646970667358221220cac571f52abc5afcb0192fa7b2bcb41289eebcee3da443fc7d533165bb67e3e864736f6c634300080c0033

Deployed Bytecode Sourcemap

7882:8076:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8200:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1817:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2731:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2138:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14223:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8680:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2908:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15348:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8123:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8647:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2037:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3338:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14333:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8088:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8158:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14802:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8058:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2254:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6659:94;;;;;;;;;;;;;:::i;:::-;;8565:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8311:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13429:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8235:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15078:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6436:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8393:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1925:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13311:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15228:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13897:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3561:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7998:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2389:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13711:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8268:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14097:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14938:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14482:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8723:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2572:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13210:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14656:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6761:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8604:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7970:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8200:28;;;;:::o;1817:100::-;1871:13;1904:5;1897:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:100;:::o;2731:169::-;2814:4;2831:39;2840:12;:10;:12::i;:::-;2854:7;2863:6;2831:8;:39::i;:::-;2888:4;2881:11;;2731:169;;;;:::o;2138:108::-;2199:7;2226:12;;2219:19;;2138:108;:::o;14223:102::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14308:9:::1;14296;;:21;;;;;;;;;;;;;;;;;;14223:102:::0;:::o;8680:30::-;;;;:::o;2908:422::-;3014:4;3031:36;3041:6;3049:9;3060:6;3031:9;:36::i;:::-;3080:24;3107:11;:19;3119:6;3107:19;;;;;;;;;;;;;;;:33;3127:12;:10;:12::i;:::-;3107:33;;;;;;;;;;;;;;;;3080:60;;3179:6;3159:16;:26;;3151:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3241:57;3250:6;3258:12;:10;:12::i;:::-;3291:6;3272:16;:25;;;;:::i;:::-;3241:8;:57::i;:::-;3318:4;3311:11;;;2908:422;;;;;:::o;15348:546::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15465:19:::1;15487:21;15465:43;;15519:24;15536:6;15519:16;:24::i;:::-;15554:18;15599:11;15575:21;:35;;;;:::i;:::-;15554:56;;15646:1;15624:19;:23;15621:136;;;15649:108;15736:19;15720:13;:35;;;;:::i;:::-;15697:19;15684:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;15657:15;;;;;;;;;;;15649:34;;;;:108;;;;:::i;:::-;15621:136;15787:1;15771:13;:17;15768:118;;;15790:96;15865:19;15849:13;:35;;;;:::i;:::-;15832:13;15819:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;15798:9;;;;;;;;;;;15790:28;;;;:96;;;;:::i;:::-;15768:118;15454:440;;15348:546:::0;;;:::o;8123:28::-;;;;:::o;8647:26::-;;;;:::o;2037:93::-;2095:5;2120:2;2113:9;;2037:93;:::o;3338:215::-;3426:4;3443:80;3452:12;:10;:12::i;:::-;3466:7;3512:10;3475:11;:25;3487:12;:10;:12::i;:::-;3475:25;;;;;;;;;;;;;;;:34;3501:7;3475:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3443:8;:80::i;:::-;3541:4;3534:11;;3338:215;;;;:::o;14333:137::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14432:7:::1;14423:6;;:16;;;;;;;;;;;;;;;;;;14457:5;14450:4;;:12;;;;;;;;;;;;;;;;;;14333:137:::0;;:::o;8088:26::-;;;;;;;;;;;;;:::o;8158:29::-;;;;:::o;14802:124::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14915:3:::1;14905:7;14889:13;:11;:13::i;:::-;:23;;;;:::i;:::-;:29;;;;:::i;:::-;14875:11;:43;;;;14802:124:::0;:::o;8058:23::-;;;;;;;;;;;;;:::o;2254:127::-;2328:7;2355:9;:18;2365:7;2355:18;;;;;;;;;;;;;;;;2348:25;;2254:127;;;:::o;6659:94::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6724:21:::1;6742:1;6724:9;:21::i;:::-;6659:94::o:0;8565:32::-;;;;;;;;;;;;;;:::o;8311:75::-;;;;;;;;;;;;;:::o;13429:274::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13515:14:::1;;;;;;;;;;;13514:15;13506:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13584:4;13567:14;;:21;;;;;;;;;;;;;;;;;;13613:4;13599:11;;:18;;;;;;;;;;;;;;;;;;13644:12;13628:13;:28;;;;13680:15;13667:10;:28;;;;13429:274:::0;:::o;8235:26::-;;;;:::o;15078:142::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15173:12:::1;15166:29;;;15196:7;:5;:7::i;:::-;15205:6;15166:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15078:142:::0;;:::o;6436:87::-;6482:7;6509:6;;;;;;;;;;;6502:13;;6436:87;:::o;8393:69::-;;;;;;;;;;;;;:::o;1925:104::-;1981:13;2014:7;2007:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1925:104;:::o;13311:110::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13403:10:::1;13387:13;:26;;;;13311:110:::0;:::o;15228:112::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15295:37:::1;15322:9;15303:7;:5;:7::i;:::-;15295:26;;;;:37;;;;:::i;:::-;15228:112:::0;:::o;13897:188::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14000:29:::1;;;;;;;;14006:10;14000:29;;;;14018:10;14000:29;;::::0;13988:9:::1;:41;;;;;;;;;;;;;;;;;;;14066:10;14053;:23;;;;:::i;:::-;14040:10;:36;;;;13897:188:::0;;:::o;3561:377::-;3654:4;3671:24;3698:11;:25;3710:12;:10;:12::i;:::-;3698:25;;;;;;;;;;;;;;;:34;3724:7;3698:34;;;;;;;;;;;;;;;;3671:61;;3771:15;3751:16;:35;;3743:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3839:67;3848:12;:10;:12::i;:::-;3862:7;3890:15;3871:16;:34;;;;:::i;:::-;3839:8;:67::i;:::-;3926:4;3919:11;;;3561:377;;;;:::o;7998:19::-;;;;;;;;;;;;;:::o;2389:175::-;2475:4;2492:42;2502:12;:10;:12::i;:::-;2516:9;2527:6;2492:9;:42::i;:::-;2552:4;2545:11;;2389:175;;;;:::o;13711:178::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13809:29:::1;;;;;;;;13815:10;13809:29;;;;13827:10;13809:29;;::::0;13801:5:::1;:37;;;;;;;;;;;;;;;;;;;13871:10;13858;:23;;;;:::i;:::-;13849:6;:32;;;;13711:178:::0;;:::o;8268:30::-;;;;:::o;14097:114::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14194:9:::1;14176:15;;:27;;;;;;;;;;;;;;;;;;14097:114:::0;:::o;14938:132::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15059:3:::1;15049:7;15033:13;:11;:13::i;:::-;:23;;;;:::i;:::-;:29;;;;:::i;:::-;15015:15;:47;;;;14938:132:::0;:::o;14482:168::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14557:6:::1;14552:91;14573:6;:13;14569:1;:17;14552:91;;;14627:4;14608:5;:16;14614:6;14621:1;14614:9;;;;;;;;:::i;:::-;;;;;;;;14608:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14588:3;;;;;:::i;:::-;;;;14552:91;;;;14482:168:::0;:::o;8723:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;2572:151::-;2661:7;2688:11;:18;2700:5;2688:18;;;;;;;;;;;;;;;:27;2707:7;2688:27;;;;;;;;;;;;;;;;2681:34;;2572:151;;;;:::o;13210:93::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13290:5:::1;13276:11;;:19;;;;;;;;;;;;;;;;;;13210:93:::0;:::o;14656:134::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14777:5:::1;14748:16;:26;14765:8;14748:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14656:134:::0;;:::o;6761:192::-;6582:12;:10;:12::i;:::-;6571:23;;:7;:5;:7::i;:::-;:23;;;6563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6870:1:::1;6850:22;;:8;:22;;;;6842:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6926:19;6936:8;6926:9;:19::i;:::-;6761:192:::0;:::o;8604:36::-;;;;;;;;;;;;;;:::o;7970:21::-;;;;;;;;;;;;;:::o;219:98::-;272:7;299:10;292:17;;219:98;:::o;5406:346::-;5525:1;5508:19;;:5;:19;;;;5500:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5606:1;5587:21;;:7;:21;;;;5579:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5690:6;5660:11;:18;5672:5;5660:18;;;;;;;;;;;;;;;:27;5679:7;5660:27;;;;;;;;;;;;;;;:36;;;;5728:7;5712:32;;5721:5;5712:32;;;5737:6;5712:32;;;;;;:::i;:::-;;;;;;;;5406:346;;;:::o;9747:1389::-;9863:1;9854:6;:10;9846:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9930:5;:13;9936:6;9930:13;;;;;;;;;;;;;;;;;;;;;;;;;9929:14;:35;;;;;9948:5;:16;9954:9;9948:16;;;;;;;;;;;;;;;;;;;;;;;;;9947:17;9929:35;9921:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10037:16;:24;10054:6;10037:24;;;;;;;;;;;;;;;;;;;;;;;;;10036:25;:57;;;;;10066:16;:27;10083:9;10066:27;;;;;;;;;;;;;;;;;;;;;;;;;10065:28;10036:57;:70;;;;;10098:8;;;;;;;;;;;10097:9;10036:70;10033:589;;;10130:14;;;;;;;;;;;10122:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10218:12;10205:10;;10189:13;;:26;;;;:::i;:::-;:41;10186:183;;;10266:4;;;;;;;;;;;10253:17;;:9;:17;;;10250:45;;10291:4;10272:5;:16;10278:9;10272:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10250:45;10327:4;;;;;;;;;;;10317:14;;:6;:14;;;10314:39;;10349:4;10333:5;:13;10339:6;10333:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;10314:39;10186:183;10401:11;;10391:6;:21;;10383:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10477:4;;;;;;;;;;;10464:17;;:9;:17;;;10461:150;;10542:15;;10532:6;10509:20;10519:9;10509;:20::i;:::-;:29;;;;:::i;:::-;:48;;10501:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;10461:150;10033:589;10634:11;10674:8;;;;;;;;;;;:36;;;;10686:16;:24;10703:6;10686:24;;;;;;;;;;;;;;;;;;;;;;;;;10674:36;:67;;;;10714:16;:27;10731:9;10714:27;;;;;;;;;;;;;;;;;;;;;;;;;10674:67;10670:235;;;10749:1;10743:7;;10670:235;;;10809:4;;;;;;;;;;;10796:17;;:9;:17;;;10793:100;;;10843:3;10830:10;;10821:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10815:31;;10793:100;;;10890:3;10881:6;;10872;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10866:27;;10793:100;10670:235;10931:11;;;;;;;;;;;:24;;;;;10947:8;;;;;;;;;;;10946:9;10931:24;:42;;;;;10969:4;;;;;;;;;;;10959:14;;:6;:14;;;;10931:42;:53;;;;;10983:1;10977:3;:7;10931:53;10927:72;;;10986:13;:11;:13::i;:::-;10927:72;11012:48;11028:6;11036:9;11056:3;11047:6;:12;;;;:::i;:::-;11012:15;:48::i;:::-;11080:1;11074:3;:7;11071:55;;;11083:43;11099:6;11115:4;11122:3;11083:15;:43::i;:::-;11071:55;9835:1301;9747:1389;;;:::o;12297:400::-;12363:21;12401:1;12387:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12363:40;;12432:4;12414;12419:1;12414:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12458:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12448:4;12453:1;12448:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12484:53;12501:4;12516:6;;;;;;;;;;;12525:11;12484:8;:53::i;:::-;12576:6;;;;;;;;;;;:57;;;12634:11;12647:1;12650:4;12664;12671:15;12576:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12352:345;12297:400;:::o;5881:317::-;5996:6;5971:21;:31;;5963:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6050:12;6068:9;:14;;6090:6;6068:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6049:52;;;6120:7;6112:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;5952:246;5881:317;;:::o;6961:173::-;7017:16;7036:6;;;;;;;;;;;7017:25;;7062:8;7053:6;;:17;;;;;;;;;;;;;;;;;;7117:8;7086:40;;7107:8;7086:40;;;;;;;;;;;;7006:128;6961:173;:::o;11144:1143::-;8865:8;;;;;;;;;;;8860:104;;8901:4;8890:8;;:15;;;;;;;;;;;;;;;;;;11193:23:::1;11219:24;11237:4;11219:9;:24::i;:::-;11193:50;;11277:13;;11258:15;:32;11254:1026;;11309:19;11344:1;11331:10;;:14;;;;:::i;:::-;11309:36;;11360:32;11435:11;11413:9;:19;;;11395:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11360:86;;11461:14;11496:24;11478:15;:42;;;;:::i;:::-;11461:59;;11541:22;11566:21;11541:46;;11608:24;11625:6;11608:16;:24::i;:::-;11653:20;11700:14;11676:21;:38;;;;:::i;:::-;11653:61;;11729:19;11780:9;:19;;;11766:11;:33;;;;:::i;:::-;11750:12;:50;;;;:::i;:::-;11729:71;;11815:29;11861:9;:19;;;11847:11;:33;;;;:::i;:::-;11815:65;;11928:1;11904:21;:25;11901:170;;;11994:61;12007:24;12033:21;11994:12;:61::i;:::-;11901:170;12091:20;12132:9;:19;;;12128:1;12114:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;12091:60;;12184:1;12169:12;:16;12166:103;;;12205:48;12240:12;12213:15;;;;;;;;;;;12205:34;;;;:48;;;;:::i;:::-;12166:103;11292:988;;;;;;;;11254:1026;11182:1105;8947:5:::0;8936:8;;:16;;;;;;;;;;;;;;;;;;8860:104;11144:1143::o;3946:604::-;4070:1;4052:20;;:6;:20;;;;4044:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4154:1;4133:23;;:9;:23;;;;4125:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4209:47;4230:6;4238:9;4249:6;4209:20;:47::i;:::-;4269:21;4293:9;:17;4303:6;4293:17;;;;;;;;;;;;;;;;4269:41;;4346:6;4329:13;:23;;4321:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4442:6;4426:13;:22;;;;:::i;:::-;4406:9;:17;4416:6;4406:17;;;;;;;;;;;;;;;:42;;;;4483:6;4459:9;:20;4469:9;4459:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4524:9;4507:35;;4516:6;4507:35;;;4535:6;4507:35;;;;;;:::i;:::-;;;;;;;;4033:517;3946:604;;;:::o;12705:497::-;12853:53;12870:4;12885:6;;;;;;;;;;;12894:11;12853:8;:53::i;:::-;12949:6;;;;;;;;;;;:22;;;12979:9;13012:4;13032:11;13058:1;13101;13144:9;;;;;;;;;;;13168:15;12949:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12705:497;;:::o;5760:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:::-;4883:6;4891;4899;4948:2;4936:9;4927:7;4923:23;4919:32;4916:119;;;4954:79;;:::i;:::-;4916:119;5074:1;5099:53;5144:7;5135:6;5124:9;5120:22;5099:53;:::i;:::-;5089:63;;5045:117;5201:2;5227:53;5272:7;5263:6;5252:9;5248:22;5227:53;:::i;:::-;5217:63;;5172:118;5329:2;5355:53;5400:7;5391:6;5380:9;5376:22;5355:53;:::i;:::-;5345:63;;5300:118;4806:619;;;;;:::o;5431:86::-;5466:7;5506:4;5499:5;5495:16;5484:27;;5431:86;;;:::o;5523:112::-;5606:22;5622:5;5606:22;:::i;:::-;5601:3;5594:35;5523:112;;:::o;5641:214::-;5730:4;5768:2;5757:9;5753:18;5745:26;;5781:67;5845:1;5834:9;5830:17;5821:6;5781:67;:::i;:::-;5641:214;;;;:::o;5861:111::-;5913:7;5942:24;5960:5;5942:24;:::i;:::-;5931:35;;5861:111;;;:::o;5978:152::-;6066:39;6099:5;6066:39;:::i;:::-;6059:5;6056:50;6046:78;;6120:1;6117;6110:12;6046:78;5978:152;:::o;6136:169::-;6197:5;6235:6;6222:20;6213:29;;6251:48;6293:5;6251:48;:::i;:::-;6136:169;;;;:::o;6311:504::-;6394:6;6402;6451:2;6439:9;6430:7;6426:23;6422:32;6419:119;;;6457:79;;:::i;:::-;6419:119;6577:1;6602:68;6662:7;6653:6;6642:9;6638:22;6602:68;:::i;:::-;6592:78;;6548:132;6719:2;6745:53;6790:7;6781:6;6770:9;6766:22;6745:53;:::i;:::-;6735:63;;6690:118;6311:504;;;;;:::o;6821:329::-;6880:6;6929:2;6917:9;6908:7;6904:23;6900:32;6897:119;;;6935:79;;:::i;:::-;6897:119;7055:1;7080:53;7125:7;7116:6;7105:9;7101:22;7080:53;:::i;:::-;7070:63;;7026:117;6821:329;;;;:::o;7156:332::-;7277:4;7315:2;7304:9;7300:18;7292:26;;7328:71;7396:1;7385:9;7381:17;7372:6;7328:71;:::i;:::-;7409:72;7477:2;7466:9;7462:18;7453:6;7409:72;:::i;:::-;7156:332;;;;;:::o;7494:118::-;7581:24;7599:5;7581:24;:::i;:::-;7576:3;7569:37;7494:118;;:::o;7618:222::-;7711:4;7749:2;7738:9;7734:18;7726:26;;7762:71;7830:1;7819:9;7815:17;7806:6;7762:71;:::i;:::-;7618:222;;;;:::o;7846:474::-;7914:6;7922;7971:2;7959:9;7950:7;7946:23;7942:32;7939:119;;;7977:79;;:::i;:::-;7939:119;8097:1;8122:53;8167:7;8158:6;8147:9;8143:22;8122:53;:::i;:::-;8112:63;;8068:117;8224:2;8250:53;8295:7;8286:6;8275:9;8271:22;8250:53;:::i;:::-;8240:63;;8195:118;7846:474;;;;;:::o;8326:117::-;8435:1;8432;8425:12;8449:180;8497:77;8494:1;8487:88;8594:4;8591:1;8584:15;8618:4;8615:1;8608:15;8635:281;8718:27;8740:4;8718:27;:::i;:::-;8710:6;8706:40;8848:6;8836:10;8833:22;8812:18;8800:10;8797:34;8794:62;8791:88;;;8859:18;;:::i;:::-;8791:88;8899:10;8895:2;8888:22;8678:238;8635:281;;:::o;8922:129::-;8956:6;8983:20;;:::i;:::-;8973:30;;9012:33;9040:4;9032:6;9012:33;:::i;:::-;8922:129;;;:::o;9057:311::-;9134:4;9224:18;9216:6;9213:30;9210:56;;;9246:18;;:::i;:::-;9210:56;9296:4;9288:6;9284:17;9276:25;;9356:4;9350;9346:15;9338:23;;9057:311;;;:::o;9374:117::-;9483:1;9480;9473:12;9514:710;9610:5;9635:81;9651:64;9708:6;9651:64;:::i;:::-;9635:81;:::i;:::-;9626:90;;9736:5;9765:6;9758:5;9751:21;9799:4;9792:5;9788:16;9781:23;;9852:4;9844:6;9840:17;9832:6;9828:30;9881:3;9873:6;9870:15;9867:122;;;9900:79;;:::i;:::-;9867:122;10015:6;9998:220;10032:6;10027:3;10024:15;9998:220;;;10107:3;10136:37;10169:3;10157:10;10136:37;:::i;:::-;10131:3;10124:50;10203:4;10198:3;10194:14;10187:21;;10074:144;10058:4;10053:3;10049:14;10042:21;;9998:220;;;10002:21;9616:608;;9514:710;;;;;:::o;10247:370::-;10318:5;10367:3;10360:4;10352:6;10348:17;10344:27;10334:122;;10375:79;;:::i;:::-;10334:122;10492:6;10479:20;10517:94;10607:3;10599:6;10592:4;10584:6;10580:17;10517:94;:::i;:::-;10508:103;;10324:293;10247:370;;;;:::o;10623:539::-;10707:6;10756:2;10744:9;10735:7;10731:23;10727:32;10724:119;;;10762:79;;:::i;:::-;10724:119;10910:1;10899:9;10895:17;10882:31;10940:18;10932:6;10929:30;10926:117;;;10962:79;;:::i;:::-;10926:117;11067:78;11137:7;11128:6;11117:9;11113:22;11067:78;:::i;:::-;11057:88;;10853:302;10623:539;;;;:::o;11168:474::-;11236:6;11244;11293:2;11281:9;11272:7;11268:23;11264:32;11261:119;;;11299:79;;:::i;:::-;11261:119;11419:1;11444:53;11489:7;11480:6;11469:9;11465:22;11444:53;:::i;:::-;11434:63;;11390:117;11546:2;11572:53;11617:7;11608:6;11597:9;11593:22;11572:53;:::i;:::-;11562:63;;11517:118;11168:474;;;;;:::o;11648:116::-;11718:21;11733:5;11718:21;:::i;:::-;11711:5;11708:32;11698:60;;11754:1;11751;11744:12;11698:60;11648:116;:::o;11770:133::-;11813:5;11851:6;11838:20;11829:29;;11867:30;11891:5;11867:30;:::i;:::-;11770:133;;;;:::o;11909:323::-;11965:6;12014:2;12002:9;11993:7;11989:23;11985:32;11982:119;;;12020:79;;:::i;:::-;11982:119;12140:1;12165:50;12207:7;12198:6;12187:9;12183:22;12165:50;:::i;:::-;12155:60;;12111:114;11909:323;;;;:::o;12238:468::-;12303:6;12311;12360:2;12348:9;12339:7;12335:23;12331:32;12328:119;;;12366:79;;:::i;:::-;12328:119;12486:1;12511:53;12556:7;12547:6;12536:9;12532:22;12511:53;:::i;:::-;12501:63;;12457:117;12613:2;12639:50;12681:7;12672:6;12661:9;12657:22;12639:50;:::i;:::-;12629:60;;12584:115;12238:468;;;;;:::o;12712:60::-;12740:3;12761:5;12754:12;;12712:60;;;:::o;12778:142::-;12828:9;12861:53;12879:34;12888:24;12906:5;12888:24;:::i;:::-;12879:34;:::i;:::-;12861:53;:::i;:::-;12848:66;;12778:142;;;:::o;12926:126::-;12976:9;13009:37;13040:5;13009:37;:::i;:::-;12996:50;;12926:126;;;:::o;13058:141::-;13123:9;13156:37;13187:5;13156:37;:::i;:::-;13143:50;;13058:141;;;:::o;13205:161::-;13307:52;13353:5;13307:52;:::i;:::-;13302:3;13295:65;13205:161;;:::o;13372:252::-;13480:4;13518:2;13507:9;13503:18;13495:26;;13531:86;13614:1;13603:9;13599:17;13590:6;13531:86;:::i;:::-;13372:252;;;;:::o;13630:180::-;13678:77;13675:1;13668:88;13775:4;13772:1;13765:15;13799:4;13796:1;13789:15;13816:320;13860:6;13897:1;13891:4;13887:12;13877:22;;13944:1;13938:4;13934:12;13965:18;13955:81;;14021:4;14013:6;14009:17;13999:27;;13955:81;14083:2;14075:6;14072:14;14052:18;14049:38;14046:84;;;14102:18;;:::i;:::-;14046:84;13867:269;13816:320;;;:::o;14142:182::-;14282:34;14278:1;14270:6;14266:14;14259:58;14142:182;:::o;14330:366::-;14472:3;14493:67;14557:2;14552:3;14493:67;:::i;:::-;14486:74;;14569:93;14658:3;14569:93;:::i;:::-;14687:2;14682:3;14678:12;14671:19;;14330:366;;;:::o;14702:419::-;14868:4;14906:2;14895:9;14891:18;14883:26;;14955:9;14949:4;14945:20;14941:1;14930:9;14926:17;14919:47;14983:131;15109:4;14983:131;:::i;:::-;14975:139;;14702:419;;;:::o;15127:227::-;15267:34;15263:1;15255:6;15251:14;15244:58;15336:10;15331:2;15323:6;15319:15;15312:35;15127:227;:::o;15360:366::-;15502:3;15523:67;15587:2;15582:3;15523:67;:::i;:::-;15516:74;;15599:93;15688:3;15599:93;:::i;:::-;15717:2;15712:3;15708:12;15701:19;;15360:366;;;:::o;15732:419::-;15898:4;15936:2;15925:9;15921:18;15913:26;;15985:9;15979:4;15975:20;15971:1;15960:9;15956:17;15949:47;16013:131;16139:4;16013:131;:::i;:::-;16005:139;;15732:419;;;:::o;16157:180::-;16205:77;16202:1;16195:88;16302:4;16299:1;16292:15;16326:4;16323:1;16316:15;16343:191;16383:4;16403:20;16421:1;16403:20;:::i;:::-;16398:25;;16437:20;16455:1;16437:20;:::i;:::-;16432:25;;16476:1;16473;16470:8;16467:34;;;16481:18;;:::i;:::-;16467:34;16526:1;16523;16519:9;16511:17;;16343:191;;;;:::o;16540:305::-;16580:3;16599:20;16617:1;16599:20;:::i;:::-;16594:25;;16633:20;16651:1;16633:20;:::i;:::-;16628:25;;16787:1;16719:66;16715:74;16712:1;16709:81;16706:107;;;16793:18;;:::i;:::-;16706:107;16837:1;16834;16830:9;16823:16;;16540:305;;;;:::o;16851:348::-;16891:7;16914:20;16932:1;16914:20;:::i;:::-;16909:25;;16948:20;16966:1;16948:20;:::i;:::-;16943:25;;17136:1;17068:66;17064:74;17061:1;17058:81;17053:1;17046:9;17039:17;17035:105;17032:131;;;17143:18;;:::i;:::-;17032:131;17191:1;17188;17184:9;17173:20;;16851:348;;;;:::o;17205:180::-;17253:77;17250:1;17243:88;17350:4;17347:1;17340:15;17374:4;17371:1;17364:15;17391:185;17431:1;17448:20;17466:1;17448:20;:::i;:::-;17443:25;;17482:20;17500:1;17482:20;:::i;:::-;17477:25;;17521:1;17511:35;;17526:18;;:::i;:::-;17511:35;17568:1;17565;17561:9;17556:14;;17391:185;;;;:::o;17582:172::-;17722:24;17718:1;17710:6;17706:14;17699:48;17582:172;:::o;17760:366::-;17902:3;17923:67;17987:2;17982:3;17923:67;:::i;:::-;17916:74;;17999:93;18088:3;17999:93;:::i;:::-;18117:2;18112:3;18108:12;18101:19;;17760:366;;;:::o;18132:419::-;18298:4;18336:2;18325:9;18321:18;18313:26;;18385:9;18379:4;18375:20;18371:1;18360:9;18356:17;18349:47;18413:131;18539:4;18413:131;:::i;:::-;18405:139;;18132:419;;;:::o;18557:332::-;18678:4;18716:2;18705:9;18701:18;18693:26;;18729:71;18797:1;18786:9;18782:17;18773:6;18729:71;:::i;:::-;18810:72;18878:2;18867:9;18863:18;18854:6;18810:72;:::i;:::-;18557:332;;;;;:::o;18895:137::-;18949:5;18980:6;18974:13;18965:22;;18996:30;19020:5;18996:30;:::i;:::-;18895:137;;;;:::o;19038:345::-;19105:6;19154:2;19142:9;19133:7;19129:23;19125:32;19122:119;;;19160:79;;:::i;:::-;19122:119;19280:1;19305:61;19358:7;19349:6;19338:9;19334:22;19305:61;:::i;:::-;19295:71;;19251:125;19038:345;;;;:::o;19389:224::-;19529:34;19525:1;19517:6;19513:14;19506:58;19598:7;19593:2;19585:6;19581:15;19574:32;19389:224;:::o;19619:366::-;19761:3;19782:67;19846:2;19841:3;19782:67;:::i;:::-;19775:74;;19858:93;19947:3;19858:93;:::i;:::-;19976:2;19971:3;19967:12;19960:19;;19619:366;;;:::o;19991:419::-;20157:4;20195:2;20184:9;20180:18;20172:26;;20244:9;20238:4;20234:20;20230:1;20219:9;20215:17;20208:47;20272:131;20398:4;20272:131;:::i;:::-;20264:139;;19991:419;;;:::o;20416:180::-;20464:77;20461:1;20454:88;20561:4;20558:1;20551:15;20585:4;20582:1;20575:15;20602:233;20641:3;20664:24;20682:5;20664:24;:::i;:::-;20655:33;;20710:66;20703:5;20700:77;20697:103;;;20780:18;;:::i;:::-;20697:103;20827:1;20820:5;20816:13;20809:20;;20602:233;;;:::o;20841:225::-;20981:34;20977:1;20969:6;20965:14;20958:58;21050:8;21045:2;21037:6;21033:15;21026:33;20841:225;:::o;21072:366::-;21214:3;21235:67;21299:2;21294:3;21235:67;:::i;:::-;21228:74;;21311:93;21400:3;21311:93;:::i;:::-;21429:2;21424:3;21420:12;21413:19;;21072:366;;;:::o;21444:419::-;21610:4;21648:2;21637:9;21633:18;21625:26;;21697:9;21691:4;21687:20;21683:1;21672:9;21668:17;21661:47;21725:131;21851:4;21725:131;:::i;:::-;21717:139;;21444:419;;;:::o;21869:223::-;22009:34;22005:1;21997:6;21993:14;21986:58;22078:6;22073:2;22065:6;22061:15;22054:31;21869:223;:::o;22098:366::-;22240:3;22261:67;22325:2;22320:3;22261:67;:::i;:::-;22254:74;;22337:93;22426:3;22337:93;:::i;:::-;22455:2;22450:3;22446:12;22439:19;;22098:366;;;:::o;22470:419::-;22636:4;22674:2;22663:9;22659:18;22651:26;;22723:9;22717:4;22713:20;22709:1;22698:9;22694:17;22687:47;22751:131;22877:4;22751:131;:::i;:::-;22743:139;;22470:419;;;:::o;22895:221::-;23035:34;23031:1;23023:6;23019:14;23012:58;23104:4;23099:2;23091:6;23087:15;23080:29;22895:221;:::o;23122:366::-;23264:3;23285:67;23349:2;23344:3;23285:67;:::i;:::-;23278:74;;23361:93;23450:3;23361:93;:::i;:::-;23479:2;23474:3;23470:12;23463:19;;23122:366;;;:::o;23494:419::-;23660:4;23698:2;23687:9;23683:18;23675:26;;23747:9;23741:4;23737:20;23733:1;23722:9;23718:17;23711:47;23775:131;23901:4;23775:131;:::i;:::-;23767:139;;23494:419;;;:::o;23919:228::-;24059:34;24055:1;24047:6;24043:14;24036:58;24128:11;24123:2;24115:6;24111:15;24104:36;23919:228;:::o;24153:366::-;24295:3;24316:67;24380:2;24375:3;24316:67;:::i;:::-;24309:74;;24392:93;24481:3;24392:93;:::i;:::-;24510:2;24505:3;24501:12;24494:19;;24153:366;;;:::o;24525:419::-;24691:4;24729:2;24718:9;24714:18;24706:26;;24778:9;24772:4;24768:20;24764:1;24753:9;24749:17;24742:47;24806:131;24932:4;24806:131;:::i;:::-;24798:139;;24525:419;;;:::o;24950:175::-;25090:27;25086:1;25078:6;25074:14;25067:51;24950:175;:::o;25131:366::-;25273:3;25294:67;25358:2;25353:3;25294:67;:::i;:::-;25287:74;;25370:93;25459:3;25370:93;:::i;:::-;25488:2;25483:3;25479:12;25472:19;;25131:366;;;:::o;25503:419::-;25669:4;25707:2;25696:9;25692:18;25684:26;;25756:9;25750:4;25746:20;25742:1;25731:9;25727:17;25720:47;25784:131;25910:4;25784:131;:::i;:::-;25776:139;;25503:419;;;:::o;25928:172::-;26068:24;26064:1;26056:6;26052:14;26045:48;25928:172;:::o;26106:366::-;26248:3;26269:67;26333:2;26328:3;26269:67;:::i;:::-;26262:74;;26345:93;26434:3;26345:93;:::i;:::-;26463:2;26458:3;26454:12;26447:19;;26106:366;;;:::o;26478:419::-;26644:4;26682:2;26671:9;26667:18;26659:26;;26731:9;26725:4;26721:20;26717:1;26706:9;26702:17;26695:47;26759:131;26885:4;26759:131;:::i;:::-;26751:139;;26478:419;;;:::o;26903:179::-;27043:31;27039:1;27031:6;27027:14;27020:55;26903:179;:::o;27088:366::-;27230:3;27251:67;27315:2;27310:3;27251:67;:::i;:::-;27244:74;;27327:93;27416:3;27327:93;:::i;:::-;27445:2;27440:3;27436:12;27429:19;;27088:366;;;:::o;27460:419::-;27626:4;27664:2;27653:9;27649:18;27641:26;;27713:9;27707:4;27703:20;27699:1;27688:9;27684:17;27677:47;27741:131;27867:4;27741:131;:::i;:::-;27733:139;;27460:419;;;:::o;27885:220::-;28025:34;28021:1;28013:6;28009:14;28002:58;28094:3;28089:2;28081:6;28077:15;28070:28;27885:220;:::o;28111:366::-;28253:3;28274:67;28338:2;28333:3;28274:67;:::i;:::-;28267:74;;28350:93;28439:3;28350:93;:::i;:::-;28468:2;28463:3;28459:12;28452:19;;28111:366;;;:::o;28483:419::-;28649:4;28687:2;28676:9;28672:18;28664:26;;28736:9;28730:4;28726:20;28722:1;28711:9;28707:17;28700:47;28764:131;28890:4;28764:131;:::i;:::-;28756:139;;28483:419;;;:::o;28908:143::-;28965:5;28996:6;28990:13;28981:22;;29012:33;29039:5;29012:33;:::i;:::-;28908:143;;;;:::o;29057:351::-;29127:6;29176:2;29164:9;29155:7;29151:23;29147:32;29144:119;;;29182:79;;:::i;:::-;29144:119;29302:1;29327:64;29383:7;29374:6;29363:9;29359:22;29327:64;:::i;:::-;29317:74;;29273:128;29057:351;;;;:::o;29414:85::-;29459:7;29488:5;29477:16;;29414:85;;;:::o;29505:158::-;29563:9;29596:61;29614:42;29623:32;29649:5;29623:32;:::i;:::-;29614:42;:::i;:::-;29596:61;:::i;:::-;29583:74;;29505:158;;;:::o;29669:147::-;29764:45;29803:5;29764:45;:::i;:::-;29759:3;29752:58;29669:147;;:::o;29822:114::-;29889:6;29923:5;29917:12;29907:22;;29822:114;;;:::o;29942:184::-;30041:11;30075:6;30070:3;30063:19;30115:4;30110:3;30106:14;30091:29;;29942:184;;;;:::o;30132:132::-;30199:4;30222:3;30214:11;;30252:4;30247:3;30243:14;30235:22;;30132:132;;;:::o;30270:108::-;30347:24;30365:5;30347:24;:::i;:::-;30342:3;30335:37;30270:108;;:::o;30384:179::-;30453:10;30474:46;30516:3;30508:6;30474:46;:::i;:::-;30552:4;30547:3;30543:14;30529:28;;30384:179;;;;:::o;30569:113::-;30639:4;30671;30666:3;30662:14;30654:22;;30569:113;;;:::o;30718:732::-;30837:3;30866:54;30914:5;30866:54;:::i;:::-;30936:86;31015:6;31010:3;30936:86;:::i;:::-;30929:93;;31046:56;31096:5;31046:56;:::i;:::-;31125:7;31156:1;31141:284;31166:6;31163:1;31160:13;31141:284;;;31242:6;31236:13;31269:63;31328:3;31313:13;31269:63;:::i;:::-;31262:70;;31355:60;31408:6;31355:60;:::i;:::-;31345:70;;31201:224;31188:1;31185;31181:9;31176:14;;31141:284;;;31145:14;31441:3;31434:10;;30842:608;;;30718:732;;;;:::o;31456:831::-;31719:4;31757:3;31746:9;31742:19;31734:27;;31771:71;31839:1;31828:9;31824:17;31815:6;31771:71;:::i;:::-;31852:80;31928:2;31917:9;31913:18;31904:6;31852:80;:::i;:::-;31979:9;31973:4;31969:20;31964:2;31953:9;31949:18;31942:48;32007:108;32110:4;32101:6;32007:108;:::i;:::-;31999:116;;32125:72;32193:2;32182:9;32178:18;32169:6;32125:72;:::i;:::-;32207:73;32275:3;32264:9;32260:19;32251:6;32207:73;:::i;:::-;31456:831;;;;;;;;:::o;32293:179::-;32433:31;32429:1;32421:6;32417:14;32410:55;32293:179;:::o;32478:366::-;32620:3;32641:67;32705:2;32700:3;32641:67;:::i;:::-;32634:74;;32717:93;32806:3;32717:93;:::i;:::-;32835:2;32830:3;32826:12;32819:19;;32478:366;;;:::o;32850:419::-;33016:4;33054:2;33043:9;33039:18;33031:26;;33103:9;33097:4;33093:20;33089:1;33078:9;33074:17;33067:47;33131:131;33257:4;33131:131;:::i;:::-;33123:139;;32850:419;;;:::o;33275:147::-;33376:11;33413:3;33398:18;;33275:147;;;;:::o;33428:114::-;;:::o;33548:398::-;33707:3;33728:83;33809:1;33804:3;33728:83;:::i;:::-;33721:90;;33820:93;33909:3;33820:93;:::i;:::-;33938:1;33933:3;33929:11;33922:18;;33548:398;;;:::o;33952:379::-;34136:3;34158:147;34301:3;34158:147;:::i;:::-;34151:154;;34322:3;34315:10;;33952:379;;;:::o;34337:245::-;34477:34;34473:1;34465:6;34461:14;34454:58;34546:28;34541:2;34533:6;34529:15;34522:53;34337:245;:::o;34588:366::-;34730:3;34751:67;34815:2;34810:3;34751:67;:::i;:::-;34744:74;;34827:93;34916:3;34827:93;:::i;:::-;34945:2;34940:3;34936:12;34929:19;;34588:366;;;:::o;34960:419::-;35126:4;35164:2;35153:9;35149:18;35141:26;;35213:9;35207:4;35203:20;35199:1;35188:9;35184:17;35177:47;35241:131;35367:4;35241:131;:::i;:::-;35233:139;;34960:419;;;:::o;35385:224::-;35525:34;35521:1;35513:6;35509:14;35502:58;35594:7;35589:2;35581:6;35577:15;35570:32;35385:224;:::o;35615:366::-;35757:3;35778:67;35842:2;35837:3;35778:67;:::i;:::-;35771:74;;35854:93;35943:3;35854:93;:::i;:::-;35972:2;35967:3;35963:12;35956:19;;35615:366;;;:::o;35987:419::-;36153:4;36191:2;36180:9;36176:18;36168:26;;36240:9;36234:4;36230:20;36226:1;36215:9;36211:17;36204:47;36268:131;36394:4;36268:131;:::i;:::-;36260:139;;35987:419;;;:::o;36412:222::-;36552:34;36548:1;36540:6;36536:14;36529:58;36621:5;36616:2;36608:6;36604:15;36597:30;36412:222;:::o;36640:366::-;36782:3;36803:67;36867:2;36862:3;36803:67;:::i;:::-;36796:74;;36879:93;36968:3;36879:93;:::i;:::-;36997:2;36992:3;36988:12;36981:19;;36640:366;;;:::o;37012:419::-;37178:4;37216:2;37205:9;37201:18;37193:26;;37265:9;37259:4;37255:20;37251:1;37240:9;37236:17;37229:47;37293:131;37419:4;37293:131;:::i;:::-;37285:139;;37012:419;;;:::o;37437:225::-;37577:34;37573:1;37565:6;37561:14;37554:58;37646:8;37641:2;37633:6;37629:15;37622:33;37437:225;:::o;37668:366::-;37810:3;37831:67;37895:2;37890:3;37831:67;:::i;:::-;37824:74;;37907:93;37996:3;37907:93;:::i;:::-;38025:2;38020:3;38016:12;38009:19;;37668:366;;;:::o;38040:419::-;38206:4;38244:2;38233:9;38229:18;38221:26;;38293:9;38287:4;38283:20;38279:1;38268:9;38264:17;38257:47;38321:131;38447:4;38321:131;:::i;:::-;38313:139;;38040:419;;;:::o;38465:807::-;38714:4;38752:3;38741:9;38737:19;38729:27;;38766:71;38834:1;38823:9;38819:17;38810:6;38766:71;:::i;:::-;38847:72;38915:2;38904:9;38900:18;38891:6;38847:72;:::i;:::-;38929:80;39005:2;38994:9;38990:18;38981:6;38929:80;:::i;:::-;39019;39095:2;39084:9;39080:18;39071:6;39019:80;:::i;:::-;39109:73;39177:3;39166:9;39162:19;39153:6;39109:73;:::i;:::-;39192;39260:3;39249:9;39245:19;39236:6;39192:73;:::i;:::-;38465:807;;;;;;;;;:::o;39278:143::-;39335:5;39366:6;39360:13;39351:22;;39382:33;39409:5;39382:33;:::i;:::-;39278:143;;;;:::o;39427:663::-;39515:6;39523;39531;39580:2;39568:9;39559:7;39555:23;39551:32;39548:119;;;39586:79;;:::i;:::-;39548:119;39706:1;39731:64;39787:7;39778:6;39767:9;39763:22;39731:64;:::i;:::-;39721:74;;39677:128;39844:2;39870:64;39926:7;39917:6;39906:9;39902:22;39870:64;:::i;:::-;39860:74;;39815:129;39983:2;40009:64;40065:7;40056:6;40045:9;40041:22;40009:64;:::i;:::-;39999:74;;39954:129;39427:663;;;;;:::o

Swarm Source

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