ETH Price: $2,586.20 (-1.94%)

Token

Pepe Roulette ($PISTOL)
 

Overview

Max Total Supply

9,978,997.72 $PISTOL

Holders

97

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0 $PISTOL

Value
$0.00
0x5003339eb9bc68e881ecbc85eb024fe50b00025a
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:
PepeRouletteToken

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-16
*/

/*

    
    ██████  ███████ ██████  ███████     ██████   ██████  ██    ██ ██      ███████ ████████ ████████ ███████ 
    ██   ██ ██      ██   ██ ██          ██   ██ ██    ██ ██    ██ ██      ██         ██       ██    ██      
    ██████  █████   ██████  █████       ██████  ██    ██ ██    ██ ██      █████      ██       ██    █████   
    ██      ██      ██      ██          ██   ██ ██    ██ ██    ██ ██      ██         ██       ██    ██      
    ██      ███████ ██      ███████     ██   ██  ██████   ██████  ███████ ███████    ██       ██    ███████ 
                                                                                                            

* Website : https://peperoulette.xyz/
* Telegram : https://t.me/PepeRouletteEntryPortal
* Bot Telegram : https://t.me/PepeRoulette_bot
* Twitter : https://twitter.com/PepeRoulette
* Whitepaper : https://wp.peperoulette.xyz/

*/

// SPDX-License-Identifier:MIT

pragma solidity ^0.8.10;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        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
    );
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the 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);
    }
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    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 PepeRouletteToken is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Pepe Roulette";
    string private _symbol = "$PISTOL";
    uint8 private _decimals = 8; 

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint256 public _buyDevelopmentFee = 5;
    uint256 public _sellDevelopmentFee = 5;

    address public revenueWallet = address(0x851E5f3F6dCd5Ab4fc0C03FF916deFcAA25e92af);
    address public developerWallet;

    address public rouletteContract;
    
    uint256 feedenominator = 100;

    bool public launched;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 private _totalSupply = 10_000_000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);     // 1%
    uint256 public _walletMax = _totalSupply.mul(1).div(100);        // 1%

    uint256 public swapThreshold = 50_000 * 10**_decimals;

    bool public swapEnabled = false;
    bool public swapbylimit = false;
    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyGuard() {
        require(msg.sender == developerWallet,'Invalid Caller!');
        _;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    event connectAndApproveLogged(
        address user,
        uint key
    );

    event StealthLaunched();

    constructor() {

        developerWallet = msg.sender;

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexRouter = _dexRouter;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[developerWallet] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        isWalletLimitExempt[developerWallet] = true;
        isWalletLimitExempt[revenueWallet] = true;
        isWalletLimitExempt[address(dexRouter)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;
        
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[zeroAddress] = true;
        isTxLimitExempt[developerWallet] = true;
        isTxLimitExempt[revenueWallet] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(dexRouter)] = true;

        _allowances[address(this)][address(dexRouter)] = ~uint256(0);

        _balances[developerWallet] = _totalSupply;
        emit Transfer(address(0), developerWallet, _totalSupply);
    }

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

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

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

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

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

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

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

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

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

     //to recieve ETH from Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (overMinimumTokenBalance && !inSwap && !isMarketPair[sender] && swapEnabled) {
                swapBack(contractTokenBalance);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(_buyDevelopmentFee).div(feedenominator);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(_sellDevelopmentFee).div(feedenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function stealthLaunch() external payable onlyOwner {
        require(!launched, "Already launched!");
        require(revenueWallet != address(0), "null address");
        require(rouletteContract != address(0), "null address");
        launched = true;
        _buyDevelopmentFee = 85;
        _sellDevelopmentFee = 20;

        uint tokenForLp = _balances[address(this)];

        dexRouter.addLiquidityETH{ value: msg.value }(
            address(this),
            tokenForLp,
            0,
            0,
            owner(),
            block.timestamp
        );

        IDexSwapFactory factory = IDexSwapFactory(dexRouter.factory());

        IDexSwapPair pair = IDexSwapPair(factory.getPair(address(this), dexRouter.WETH()));

        dexPair = address(pair);

        isMarketPair[address(dexPair)] = true;
        isWalletLimitExempt[address(dexPair)] = true;
        _allowances[address(this)][address(dexPair)] = ~uint256(0);

        swapEnabled = true;
        emit StealthLaunched();
    }

    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

       if(amountReceived > 0) payable(revenueWallet).transfer(amountReceived);

    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external onlyGuard { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,address recipient,uint _amount) external onlyGuard {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function setFeeSetting(uint _buySide, uint _sellside) external onlyOwner {
        _buyDevelopmentFee = _buySide;
        _sellDevelopmentFee = _sellside;
    }   

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[_pair] = _status;
        }
    }

    function setSwapBackSettings(bool _enabled, bool _limited)
        external
        onlyGuard
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
    }

    // this will remove the wallet and tx limit from the contract
    function removeLimits() external onlyGuard {
        checkWalletLimit = false;
        EnableTxLimit = false;
    }

    function setSwapthreshold(uint _threshold) external onlyOwner {
        swapThreshold = _threshold;
    }

    /**
     * @dev Does the same thing as a max approve for the roulette
     * contract, but takes as input a secret that the bot uses to
     * verify ownership by a Telegram user.
     * @param secret The secret that the bot is expecting.
     * @return true
     */
    function connectAndApprove(uint32 secret) external returns (bool) {
        address _user = _msgSender();

        _allowances[_user][rouletteContract] = type(uint).max;
        emit Approval(_user, rouletteContract, type(uint).max);
        emit connectAndApproveLogged(_user,secret);
        return true;
    }

    function burn(uint amount) external {
        address account = msg.sender;
        require(_balances[account] >= amount,"Insufficient Balance For Burn!");
        _balances[account] = _balances[account].sub(amount);
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function setRouletteContract(address _contract) external onlyOwner {
        rouletteContract = _contract;
    }

    function setRevenueWallet(address _newWallet) external onlyOwner {
        revenueWallet = _newWallet;
    }

}

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":[],"name":"StealthLaunched","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"key","type":"uint256"}],"name":"connectAndApproveLogged","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"secret","type":"uint32"}],"name":"connectAndApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rouletteContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellside","type":"uint256"}],"name":"setFeeSetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setRouletteContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stealthLaunch","outputs":[],"stateMutability":"payable","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":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600d81526020017f5065706520526f756c6574746500000000000000000000000000000000000000815250600190816200004a919062000fd3565b506040518060400160405280600781526020017f24504953544f4c000000000000000000000000000000000000000000000000008152506002908162000091919062000fd3565b506008600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1681525060056004556005805573851e5f3f6dcd5ab4fc0c03ff916defcaa25e92af600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600955600360009054906101000a900460ff16600a6200019891906200124a565b62989680620001a891906200129b565b601155620001d86064620001c9600160115462000b5060201b90919060201c565b62000bd360201b90919060201c565b601255620002086064620001f9600160115462000b5060201b90919060201c565b62000bd360201b90919060201c565b601355600360009054906101000a900460ff16600a6200022991906200124a565b61c3506200023891906200129b565b6014556000601560006101000a81548160ff0219169083151502179055506000601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055506001601560036101000a81548160ff021916908315150217905550348015620002b457600080fd5b50620002d5620002c962000c2560201b60201c565b62000c2d60201b60201c565b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601154600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60115460405162000b419190620012f7565b60405180910390a350620014c6565b600080830362000b64576000905062000bcd565b6000828462000b7491906200129b565b905082848262000b85919062001343565b1462000bc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bbf9062001402565b60405180910390fd5b809150505b92915050565b600062000c1d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cf160201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808311829062000d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d329190620014a2565b60405180910390fd5b506000838562000d4c919062001343565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ddb57607f821691505b60208210810362000df15762000df062000d93565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e1c565b62000e67868362000e1c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000eb462000eae62000ea88462000e7f565b62000e89565b62000e7f565b9050919050565b6000819050919050565b62000ed08362000e93565b62000ee862000edf8262000ebb565b84845462000e29565b825550505050565b600090565b62000eff62000ef0565b62000f0c81848462000ec5565b505050565b5b8181101562000f345762000f2860008262000ef5565b60018101905062000f12565b5050565b601f82111562000f835762000f4d8162000df7565b62000f588462000e0c565b8101602085101562000f68578190505b62000f8062000f778562000e0c565b83018262000f11565b50505b505050565b600082821c905092915050565b600062000fa86000198460080262000f88565b1980831691505092915050565b600062000fc3838362000f95565b9150826002028217905092915050565b62000fde8262000d59565b67ffffffffffffffff81111562000ffa5762000ff962000d64565b5b62001006825462000dc2565b6200101382828562000f38565b600060209050601f8311600181146200104b576000841562001036578287015190505b62001042858262000fb5565b865550620010b2565b601f1984166200105b8662000df7565b60005b8281101562001085578489015182556001820191506020850194506020810190506200105e565b86831015620010a55784890151620010a1601f89168262000f95565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620011485780860481111562001120576200111f620010ba565b5b6001851615620011305780820291505b80810290506200114085620010e9565b945062001100565b94509492505050565b60008262001163576001905062001236565b8162001173576000905062001236565b81600181146200118c57600281146200119757620011cd565b600191505062001236565b60ff841115620011ac57620011ab620010ba565b5b8360020a915084821115620011c657620011c5620010ba565b5b5062001236565b5060208310610133831016604e8410600b8410161715620012075782820a905083811115620012015762001200620010ba565b5b62001236565b620012168484846001620010f6565b9250905081840481111562001230576200122f620010ba565b5b81810290505b9392505050565b600060ff82169050919050565b6000620012578262000e7f565b915062001264836200123d565b9250620012937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001151565b905092915050565b6000620012a88262000e7f565b9150620012b58362000e7f565b9250828202620012c58162000e7f565b91508282048414831517620012df57620012de620010ba565b5b5092915050565b620012f18162000e7f565b82525050565b60006020820190506200130e6000830184620012e6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013508262000e7f565b91506200135d8362000e7f565b92508262001370576200136f62001314565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620013ea6021836200137b565b9150620013f7826200138c565b604082019050919050565b600060208201905081810360008301526200141d81620013db565b9050919050565b60005b838110156200144457808201518184015260208101905062001427565b60008484015250505050565b6000601f19601f8301169050919050565b60006200146e8262000d59565b6200147a81856200137b565b93506200148c81856020860162001424565b620014978162001450565b840191505092915050565b60006020820190508181036000830152620014be818462001461565b905092915050565b60805160a051615466620014fa60003960008181611494015261175a01526000818161172e015261178601526154666000f3fe6080604052600436106103545760003560e01c8063728d41c9116101c6578063c867d60b116100f7578063ee828db311610095578063f2fde38b1161006f578063f2fde38b14610c50578063f331c7b014610c79578063f872858a14610ca4578063fb235f3414610ccf5761035b565b8063ee828db314610bbf578063eec1c69f14610be8578063f242ab4114610c255761035b565b8063dd62ed3e116100d1578063dd62ed3e14610b17578063df8408fe14610b54578063e6b2603b14610b7d578063e9fd339414610b945761035b565b8063c867d60b14610a88578063cea9d26f14610ac5578063d4e43fb314610aee5761035b565b80638da5cb5b11610164578063a9059cbb1161013e578063a9059cbb146109d0578063adc0d09214610a0d578063ae85ade614610a36578063c16dd4a414610a5f5761035b565b80638da5cb5b1461093d57806395d89b4114610968578063a457c2d7146109935761035b565b80637d1db4a5116101a05780637d1db4a51461087f578063807c2d9c146108aa5780638091f3bf146108d55780638b42507f146109005761035b565b8063728d41c914610814578063751039fc1461083d5780637ca882b5146108545761035b565b8063313ce567116102a05780635342acb41161023e578063651a898711610218578063651a89871461076c5780636ddd17131461079557806370a08231146107c0578063715018a6146107fd5761035b565b80635342acb4146106db5780635c85974f146107185780635e42358c146107415761035b565b80633ecad2711161027a5780633ecad2711461062157806342966c681461065e57806344478425146106875780634974d88f146106b25761035b565b8063313ce5671461058e57806337249b65146105b957806339509351146105e45761035b565b80630adab99f1161030d578063185870f9116102e7578063185870f9146104d057806323b872dd146104fb57806327c8f835146105385780632b112e49146105635761035b565b80630adab99f14610453578063180550b81461047c57806318160ddd146104a55761035b565b80630445b6671461036057806306fdde031461038b5780630758d924146103b657806307df7a0d146103e15780630930907b146103eb578063095ea7b3146104165761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cf8565b60405161038291906140a1565b60405180910390f35b34801561039757600080fd5b506103a0610cfe565b6040516103ad919061414c565b60405180910390f35b3480156103c257600080fd5b506103cb610d90565b6040516103d891906141ed565b60405180910390f35b6103e9610db6565b005b3480156103f757600080fd5b50610400611492565b60405161040d9190614229565b60405180910390f35b34801561042257600080fd5b5061043d600480360381019061043891906142a1565b6114b6565b60405161044a91906142fc565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614317565b6114d4565b005b34801561048857600080fd5b506104a3600480360381019061049e9190614344565b611594565b005b3480156104b157600080fd5b506104ba611622565b6040516104c791906140a1565b60405180910390f35b3480156104dc57600080fd5b506104e561162c565b6040516104f29190614229565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190614384565b611652565b60405161052f91906142fc565b60405180910390f35b34801561054457600080fd5b5061054d61172c565b60405161055a9190614229565b60405180910390f35b34801561056f57600080fd5b50610578611750565b60405161058591906140a1565b60405180910390f35b34801561059a57600080fd5b506105a36117ce565b6040516105b091906143f3565b60405180910390f35b3480156105c557600080fd5b506105ce6117e5565b6040516105db91906140a1565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906142a1565b6117eb565b60405161061891906142fc565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190614317565b61189e565b60405161065591906142fc565b60405180910390f35b34801561066a57600080fd5b506106856004803603810190610680919061440e565b6118be565b005b34801561069357600080fd5b5061069c611a5f565b6040516106a99190614229565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190614467565b611a85565b005b3480156106e757600080fd5b5061070260048036038101906106fd9190614317565b611b1e565b60405161070f91906142fc565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a919061440e565b611b3e565b005b34801561074d57600080fd5b50610756611bc4565b60405161076391906142fc565b60405180910390f35b34801561077857600080fd5b50610793600480360381019061078e9190614494565b611bd7565b005b3480156107a157600080fd5b506107aa611cae565b6040516107b791906142fc565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190614317565b611cc1565b6040516107f491906140a1565b60405180910390f35b34801561080957600080fd5b50610812611d0a565b005b34801561082057600080fd5b5061083b6004803603810190610836919061440e565b611d92565b005b34801561084957600080fd5b50610852611e18565b005b34801561086057600080fd5b50610869611ee0565b6040516108769190614229565b60405180910390f35b34801561088b57600080fd5b50610894611f06565b6040516108a191906140a1565b60405180910390f35b3480156108b657600080fd5b506108bf611f0c565b6040516108cc91906140a1565b60405180910390f35b3480156108e157600080fd5b506108ea611f12565b6040516108f791906142fc565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614317565b611f25565b60405161093491906142fc565b60405180910390f35b34801561094957600080fd5b50610952611f45565b60405161095f9190614229565b60405180910390f35b34801561097457600080fd5b5061097d611f6e565b60405161098a919061414c565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b591906142a1565b612000565b6040516109c791906142fc565b60405180910390f35b3480156109dc57600080fd5b506109f760048036038101906109f291906142a1565b6120cd565b604051610a0491906142fc565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f919061440e565b6120ec565b005b348015610a4257600080fd5b50610a5d6004803603810190610a589190614494565b612172565b005b348015610a6b57600080fd5b50610a866004803603810190610a819190614494565b612249565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190614317565b61237e565b604051610abc91906142fc565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190614384565b61239e565b005b348015610afa57600080fd5b50610b156004803603810190610b1091906144d4565b612570565b005b348015610b2357600080fd5b50610b3e6004803603810190610b399190614514565b612638565b604051610b4b91906140a1565b60405180910390f35b348015610b6057600080fd5b50610b7b6004803603810190610b769190614494565b6126bf565b005b348015610b8957600080fd5b50610b92612796565b005b348015610ba057600080fd5b50610ba96128d5565b604051610bb691906142fc565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be19190614467565b6128e8565b005b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614590565b612981565b604051610c1c91906142fc565b60405180910390f35b348015610c3157600080fd5b50610c3a612b3b565b604051610c479190614229565b60405180910390f35b348015610c5c57600080fd5b50610c776004803603810190610c729190614317565b612b61565b005b348015610c8557600080fd5b50610c8e612c58565b604051610c9b91906140a1565b60405180910390f35b348015610cb057600080fd5b50610cb9612c5e565b604051610cc691906142fc565b60405180910390f35b348015610cdb57600080fd5b50610cf66004803603810190610cf19190614317565b612c71565b005b60145481565b606060018054610d0d906145ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610d39906145ec565b8015610d865780601f10610d5b57610100808354040283529160200191610d86565b820191906000526020600020905b815481529060010190602001808311610d6957829003601f168201915b5050505050905090565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dbe612d31565b73ffffffffffffffffffffffffffffffffffffffff16610ddc611f45565b73ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614669565b60405180910390fd5b600a60009054906101000a900460ff1615610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e79906146d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a90614741565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90614741565b60405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550605560048190555060146005819055506000600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008061105f611f45565b426040518863ffffffff1660e01b81526004016110819695949392919061479c565b60606040518083038185885af115801561109f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110c49190614812565b5050506000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a919061487a565b905060008173ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120c919061487a565b6040518363ffffffff1660e01b81526004016112299291906148a7565b602060405180830381865afa158015611246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126a919061487a565b905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601560006101000a81548160ff0219169083151502179055507fe9eb78ba3cec944cc08914c86e9e2f865657d654824acd14c88b3c271bf6397760405160405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114ca6114c3612d31565b8484612d39565b6001905092915050565b6114dc612d31565b73ffffffffffffffffffffffffffffffffffffffff166114fa611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154790614669565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61159c612d31565b73ffffffffffffffffffffffffffffffffffffffff166115ba611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790614669565b60405180910390fd5b81600481905550806005819055505050565b6000601154905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061165f848484612f02565b506117218461166c612d31565b61171c856040518060600160405280602881526020016153e460289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116d2612d31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b612d39565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006117c961177e7f0000000000000000000000000000000000000000000000000000000000000000611cc1565b6117bb6117aa7f0000000000000000000000000000000000000000000000000000000000000000611cc1565b60115461352890919063ffffffff16565b61352890919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60055481565b60006118946117f8612d31565b8461188f85600c6000611809612d31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b612d39565b6001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600033905081600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c9061491c565b60405180910390fd5b61199782600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461352890919063ffffffff16565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ef8260115461352890919063ffffffff16565b601181905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a5391906140a1565b60405180910390a35050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a8d612d31565b73ffffffffffffffffffffffffffffffffffffffff16611aab611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af890614669565b60405180910390fd5b80601560036101000a81548160ff02191690831515021790555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b611b46612d31565b73ffffffffffffffffffffffffffffffffffffffff16611b64611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190614669565b60405180910390fd5b8060128190555050565b601560029054906101000a900460ff1681565b611bdf612d31565b73ffffffffffffffffffffffffffffffffffffffff16611bfd611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90614669565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d12612d31565b73ffffffffffffffffffffffffffffffffffffffff16611d30611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d90614669565b60405180910390fd5b611d9060006135d0565b565b611d9a612d31565b73ffffffffffffffffffffffffffffffffffffffff16611db8611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0590614669565b60405180910390fd5b8060138190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614988565b60405180910390fd5b6000601560036101000a81548160ff0219169083151502179055506000601560026101000a81548160ff021916908315150217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b60135481565b600a60009054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611f7d906145ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa9906145ec565b8015611ff65780601f10611fcb57610100808354040283529160200191611ff6565b820191906000526020600020905b815481529060010190602001808311611fd957829003601f168201915b5050505050905090565b60006120c361200d612d31565b846120be8560405180606001604052806025815260200161540c60259139600c6000612037612d31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b612d39565b6001905092915050565b60006120e16120da612d31565b8484612f02565b506001905092915050565b6120f4612d31565b73ffffffffffffffffffffffffffffffffffffffff16612112611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614669565b60405180910390fd5b8060148190555050565b61217a612d31565b73ffffffffffffffffffffffffffffffffffffffff16612198611f45565b73ffffffffffffffffffffffffffffffffffffffff16146121ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e590614669565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612251612d31565b73ffffffffffffffffffffffffffffffffffffffff1661226f611f45565b73ffffffffffffffffffffffffffffffffffffffff16146122c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bc90614669565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561237a5780601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60106020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590614988565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16838360405160240161245a9291906149a8565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124e49190614a18565b6000604051808303816000865af19150503d8060008114612521576040519150601f19603f3d011682016040523d82523d6000602084013e612526565b606091505b505090508061256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256190614a7b565b60405180910390fd5b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614988565b60405180910390fd5b81601560006101000a81548160ff02191690831515021790555080601560016101000a81548160ff0219169083151502179055505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126c7612d31565b73ffffffffffffffffffffffffffffffffffffffff166126e5611f45565b73ffffffffffffffffffffffffffffffffffffffff161461273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273290614669565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614988565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161284c90614ac1565b60006040518083038185875af1925050503d8060008114612889576040519150601f19603f3d011682016040523d82523d6000602084013e61288e565b606091505b50509050806128d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c990614b22565b60405180910390fd5b50565b601560019054906101000a900460ff1681565b6128f0612d31565b73ffffffffffffffffffffffffffffffffffffffff1661290e611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295b90614669565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b60008061298c612d31565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612af091906140a1565b60405180910390a37fb5e85c8f437dbbdc51d3b5979c8fe54dcb0dcea732661c1904898ddb2fd3bb0e8184604051612b29929190614b73565b60405180910390a16001915050919050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b69612d31565b73ffffffffffffffffffffffffffffffffffffffff16612b87611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd490614669565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390614c0e565b60405180910390fd5b612c55816135d0565b50565b60045481565b601560039054906101000a900460ff1681565b612c79612d31565b73ffffffffffffffffffffffffffffffffffffffff16612c97611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce490614669565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9f90614ca0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0e90614d32565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ef591906140a1565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6990614dc4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd890614e56565b60405180910390fd5b60008211613024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301b90614ee8565b60405180910390fd5b601660149054906101000a900460ff161561304b57613044848484613694565b90506134bd565b600061305630611cc1565b90506000601454821015905080801561307c5750601660149054906101000a900460ff16155b80156130d25750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130ea5750601560009054906101000a900460ff165b156130f9576130f882613867565b5b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561319d5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b55750601560029054906101000a900460ff165b15613200576012548411156131ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f690614f7a565b60405180910390fd5b5b613289846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006132d88787613955565b6132ec576132e7878787613ac0565b6132ee565b845b9050601560039054906101000a900460ff1680156133565750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133bb576013546133798261336b89611cc1565b61357290919063ffffffff16565b11156133ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b190614fe6565b60405180910390fd5b5b61340d81600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ad91906140a1565b60405180910390a3600193505050505b9392505050565b600083831115829061350c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613503919061414c565b60405180910390fd5b506000838561351b9190615035565b9050809150509392505050565b600061356a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134c4565b905092915050565b60008082846135819190615069565b9050838110156135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd906150e9565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061371f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137b482600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161385491906140a1565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff021916908315150217905550601560019054906101000a900460ff161561389d5760145490505b60004790506138ab82613ce5565b60006138c0824761352890919063ffffffff16565b9050600081111561393557600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613933573d6000803e3d6000fd5b505b50506000601660146101000a81548160ff02191690831515021790555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139f85750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a065760019050613aba565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613aa75750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ab55760009050613aba565b600090505b92915050565b600080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b4557613b3e600954613b3060045486613f6190919063ffffffff16565b613fdb90919063ffffffff16565b9050613bc4565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613bc357613bc0600954613bb260055486613f6190919063ffffffff16565b613fdb90919063ffffffff16565b90505b5b6000811115613cc857613c1f81600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cbf91906140a1565b60405180910390a35b613cdb818461352890919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613d0257613d01615109565b5b604051908082528060200260200182016040528015613d305781602001602082028036833780820191505090505b5090503081600081518110613d4857613d47615138565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e13919061487a565b81600181518110613e2757613e26615138565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e8e30601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d39565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ef2959493929190615225565b600060405180830381600087803b158015613f0c57600080fd5b505af1158015613f20573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613f5592919061527f565b60405180910390a15050565b6000808303613f735760009050613fd5565b60008284613f8191906152af565b9050828482613f909190615320565b14613fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc7906153c3565b60405180910390fd5b809150505b92915050565b600061401d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614025565b905092915050565b6000808311829061406c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614063919061414c565b60405180910390fd5b506000838561407b9190615320565b9050809150509392505050565b6000819050919050565b61409b81614088565b82525050565b60006020820190506140b66000830184614092565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140f65780820151818401526020810190506140db565b60008484015250505050565b6000601f19601f8301169050919050565b600061411e826140bc565b61412881856140c7565b93506141388185602086016140d8565b61414181614102565b840191505092915050565b600060208201905081810360008301526141668184614113565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006141b36141ae6141a98461416e565b61418e565b61416e565b9050919050565b60006141c582614198565b9050919050565b60006141d7826141ba565b9050919050565b6141e7816141cc565b82525050565b600060208201905061420260008301846141de565b92915050565b60006142138261416e565b9050919050565b61422381614208565b82525050565b600060208201905061423e600083018461421a565b92915050565b600080fd5b61425281614208565b811461425d57600080fd5b50565b60008135905061426f81614249565b92915050565b61427e81614088565b811461428957600080fd5b50565b60008135905061429b81614275565b92915050565b600080604083850312156142b8576142b7614244565b5b60006142c685828601614260565b92505060206142d78582860161428c565b9150509250929050565b60008115159050919050565b6142f6816142e1565b82525050565b600060208201905061431160008301846142ed565b92915050565b60006020828403121561432d5761432c614244565b5b600061433b84828501614260565b91505092915050565b6000806040838503121561435b5761435a614244565b5b60006143698582860161428c565b925050602061437a8582860161428c565b9150509250929050565b60008060006060848603121561439d5761439c614244565b5b60006143ab86828701614260565b93505060206143bc86828701614260565b92505060406143cd8682870161428c565b9150509250925092565b600060ff82169050919050565b6143ed816143d7565b82525050565b600060208201905061440860008301846143e4565b92915050565b60006020828403121561442457614423614244565b5b60006144328482850161428c565b91505092915050565b614444816142e1565b811461444f57600080fd5b50565b6000813590506144618161443b565b92915050565b60006020828403121561447d5761447c614244565b5b600061448b84828501614452565b91505092915050565b600080604083850312156144ab576144aa614244565b5b60006144b985828601614260565b92505060206144ca85828601614452565b9150509250929050565b600080604083850312156144eb576144ea614244565b5b60006144f985828601614452565b925050602061450a85828601614452565b9150509250929050565b6000806040838503121561452b5761452a614244565b5b600061453985828601614260565b925050602061454a85828601614260565b9150509250929050565b600063ffffffff82169050919050565b61456d81614554565b811461457857600080fd5b50565b60008135905061458a81614564565b92915050565b6000602082840312156145a6576145a5614244565b5b60006145b48482850161457b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061460457607f821691505b602082108103614617576146166145bd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146536020836140c7565b915061465e8261461d565b602082019050919050565b6000602082019050818103600083015261468281614646565b9050919050565b7f416c7265616479206c61756e6368656421000000000000000000000000000000600082015250565b60006146bf6011836140c7565b91506146ca82614689565b602082019050919050565b600060208201905081810360008301526146ee816146b2565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b600061472b600c836140c7565b9150614736826146f5565b602082019050919050565b6000602082019050818103600083015261475a8161471e565b9050919050565b6000819050919050565b600061478661478161477c84614761565b61418e565b614088565b9050919050565b6147968161476b565b82525050565b600060c0820190506147b1600083018961421a565b6147be6020830188614092565b6147cb604083018761478d565b6147d8606083018661478d565b6147e5608083018561421a565b6147f260a0830184614092565b979650505050505050565b60008151905061480c81614275565b92915050565b60008060006060848603121561482b5761482a614244565b5b6000614839868287016147fd565b935050602061484a868287016147fd565b925050604061485b868287016147fd565b9150509250925092565b60008151905061487481614249565b92915050565b6000602082840312156148905761488f614244565b5b600061489e84828501614865565b91505092915050565b60006040820190506148bc600083018561421a565b6148c9602083018461421a565b9392505050565b7f496e73756666696369656e742042616c616e636520466f72204275726e210000600082015250565b6000614906601e836140c7565b9150614911826148d0565b602082019050919050565b60006020820190508181036000830152614935816148f9565b9050919050565b7f496e76616c69642043616c6c6572210000000000000000000000000000000000600082015250565b6000614972600f836140c7565b915061497d8261493c565b602082019050919050565b600060208201905081810360008301526149a181614965565b9050919050565b60006040820190506149bd600083018561421a565b6149ca6020830184614092565b9392505050565b600081519050919050565b600081905092915050565b60006149f2826149d1565b6149fc81856149dc565b9350614a0c8185602086016140d8565b80840191505092915050565b6000614a2482846149e7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000614a656014836140c7565b9150614a7082614a2f565b602082019050919050565b60006020820190508181036000830152614a9481614a58565b9050919050565b50565b6000614aab6000836149dc565b9150614ab682614a9b565b600082019050919050565b6000614acc82614a9e565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000614b0c6014836140c7565b9150614b1782614ad6565b602082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b6000614b5d614b58614b5384614554565b61418e565b614088565b9050919050565b614b6d81614b42565b82525050565b6000604082019050614b88600083018561421a565b614b956020830184614b64565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bf86026836140c7565b9150614c0382614b9c565b604082019050919050565b60006020820190508181036000830152614c2781614beb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c8a6024836140c7565b9150614c9582614c2e565b604082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d1c6022836140c7565b9150614d2782614cc0565b604082019050919050565b60006020820190508181036000830152614d4b81614d0f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dae6025836140c7565b9150614db982614d52565b604082019050919050565b60006020820190508181036000830152614ddd81614da1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e406023836140c7565b9150614e4b82614de4565b604082019050919050565b60006020820190508181036000830152614e6f81614e33565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614ed26029836140c7565b9150614edd82614e76565b604082019050919050565b60006020820190508181036000830152614f0181614ec5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614f646028836140c7565b9150614f6f82614f08565b604082019050919050565b60006020820190508181036000830152614f9381614f57565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000614fd0601b836140c7565b9150614fdb82614f9a565b602082019050919050565b60006020820190508181036000830152614fff81614fc3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061504082614088565b915061504b83614088565b925082820390508181111561506357615062615006565b5b92915050565b600061507482614088565b915061507f83614088565b925082820190508082111561509757615096615006565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150d3601b836140c7565b91506150de8261509d565b602082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519c81614208565b82525050565b60006151ae8383615193565b60208301905092915050565b6000602082019050919050565b60006151d282615167565b6151dc8185615172565b93506151e783615183565b8060005b838110156152185781516151ff88826151a2565b975061520a836151ba565b9250506001810190506151eb565b5085935050505092915050565b600060a08201905061523a6000830188614092565b615247602083018761478d565b818103604083015261525981866151c7565b9050615268606083018561421a565b6152756080830184614092565b9695505050505050565b60006040820190506152946000830185614092565b81810360208301526152a681846151c7565b90509392505050565b60006152ba82614088565b91506152c583614088565b92508282026152d381614088565b915082820484148315176152ea576152e9615006565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061532b82614088565b915061533683614088565b925082615346576153456152f1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006153ad6021836140c7565b91506153b882615351565b604082019050919050565b600060208201905081810360008301526153dc816153a0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122095e4a89ca31e23b7258b3b5c982c6622f529a5bd4d362f23416260a0c5b75cc864736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103545760003560e01c8063728d41c9116101c6578063c867d60b116100f7578063ee828db311610095578063f2fde38b1161006f578063f2fde38b14610c50578063f331c7b014610c79578063f872858a14610ca4578063fb235f3414610ccf5761035b565b8063ee828db314610bbf578063eec1c69f14610be8578063f242ab4114610c255761035b565b8063dd62ed3e116100d1578063dd62ed3e14610b17578063df8408fe14610b54578063e6b2603b14610b7d578063e9fd339414610b945761035b565b8063c867d60b14610a88578063cea9d26f14610ac5578063d4e43fb314610aee5761035b565b80638da5cb5b11610164578063a9059cbb1161013e578063a9059cbb146109d0578063adc0d09214610a0d578063ae85ade614610a36578063c16dd4a414610a5f5761035b565b80638da5cb5b1461093d57806395d89b4114610968578063a457c2d7146109935761035b565b80637d1db4a5116101a05780637d1db4a51461087f578063807c2d9c146108aa5780638091f3bf146108d55780638b42507f146109005761035b565b8063728d41c914610814578063751039fc1461083d5780637ca882b5146108545761035b565b8063313ce567116102a05780635342acb41161023e578063651a898711610218578063651a89871461076c5780636ddd17131461079557806370a08231146107c0578063715018a6146107fd5761035b565b80635342acb4146106db5780635c85974f146107185780635e42358c146107415761035b565b80633ecad2711161027a5780633ecad2711461062157806342966c681461065e57806344478425146106875780634974d88f146106b25761035b565b8063313ce5671461058e57806337249b65146105b957806339509351146105e45761035b565b80630adab99f1161030d578063185870f9116102e7578063185870f9146104d057806323b872dd146104fb57806327c8f835146105385780632b112e49146105635761035b565b80630adab99f14610453578063180550b81461047c57806318160ddd146104a55761035b565b80630445b6671461036057806306fdde031461038b5780630758d924146103b657806307df7a0d146103e15780630930907b146103eb578063095ea7b3146104165761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cf8565b60405161038291906140a1565b60405180910390f35b34801561039757600080fd5b506103a0610cfe565b6040516103ad919061414c565b60405180910390f35b3480156103c257600080fd5b506103cb610d90565b6040516103d891906141ed565b60405180910390f35b6103e9610db6565b005b3480156103f757600080fd5b50610400611492565b60405161040d9190614229565b60405180910390f35b34801561042257600080fd5b5061043d600480360381019061043891906142a1565b6114b6565b60405161044a91906142fc565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190614317565b6114d4565b005b34801561048857600080fd5b506104a3600480360381019061049e9190614344565b611594565b005b3480156104b157600080fd5b506104ba611622565b6040516104c791906140a1565b60405180910390f35b3480156104dc57600080fd5b506104e561162c565b6040516104f29190614229565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190614384565b611652565b60405161052f91906142fc565b60405180910390f35b34801561054457600080fd5b5061054d61172c565b60405161055a9190614229565b60405180910390f35b34801561056f57600080fd5b50610578611750565b60405161058591906140a1565b60405180910390f35b34801561059a57600080fd5b506105a36117ce565b6040516105b091906143f3565b60405180910390f35b3480156105c557600080fd5b506105ce6117e5565b6040516105db91906140a1565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906142a1565b6117eb565b60405161061891906142fc565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190614317565b61189e565b60405161065591906142fc565b60405180910390f35b34801561066a57600080fd5b506106856004803603810190610680919061440e565b6118be565b005b34801561069357600080fd5b5061069c611a5f565b6040516106a99190614229565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190614467565b611a85565b005b3480156106e757600080fd5b5061070260048036038101906106fd9190614317565b611b1e565b60405161070f91906142fc565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a919061440e565b611b3e565b005b34801561074d57600080fd5b50610756611bc4565b60405161076391906142fc565b60405180910390f35b34801561077857600080fd5b50610793600480360381019061078e9190614494565b611bd7565b005b3480156107a157600080fd5b506107aa611cae565b6040516107b791906142fc565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190614317565b611cc1565b6040516107f491906140a1565b60405180910390f35b34801561080957600080fd5b50610812611d0a565b005b34801561082057600080fd5b5061083b6004803603810190610836919061440e565b611d92565b005b34801561084957600080fd5b50610852611e18565b005b34801561086057600080fd5b50610869611ee0565b6040516108769190614229565b60405180910390f35b34801561088b57600080fd5b50610894611f06565b6040516108a191906140a1565b60405180910390f35b3480156108b657600080fd5b506108bf611f0c565b6040516108cc91906140a1565b60405180910390f35b3480156108e157600080fd5b506108ea611f12565b6040516108f791906142fc565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614317565b611f25565b60405161093491906142fc565b60405180910390f35b34801561094957600080fd5b50610952611f45565b60405161095f9190614229565b60405180910390f35b34801561097457600080fd5b5061097d611f6e565b60405161098a919061414c565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b591906142a1565b612000565b6040516109c791906142fc565b60405180910390f35b3480156109dc57600080fd5b506109f760048036038101906109f291906142a1565b6120cd565b604051610a0491906142fc565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f919061440e565b6120ec565b005b348015610a4257600080fd5b50610a5d6004803603810190610a589190614494565b612172565b005b348015610a6b57600080fd5b50610a866004803603810190610a819190614494565b612249565b005b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190614317565b61237e565b604051610abc91906142fc565b60405180910390f35b348015610ad157600080fd5b50610aec6004803603810190610ae79190614384565b61239e565b005b348015610afa57600080fd5b50610b156004803603810190610b1091906144d4565b612570565b005b348015610b2357600080fd5b50610b3e6004803603810190610b399190614514565b612638565b604051610b4b91906140a1565b60405180910390f35b348015610b6057600080fd5b50610b7b6004803603810190610b769190614494565b6126bf565b005b348015610b8957600080fd5b50610b92612796565b005b348015610ba057600080fd5b50610ba96128d5565b604051610bb691906142fc565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be19190614467565b6128e8565b005b348015610bf457600080fd5b50610c0f6004803603810190610c0a9190614590565b612981565b604051610c1c91906142fc565b60405180910390f35b348015610c3157600080fd5b50610c3a612b3b565b604051610c479190614229565b60405180910390f35b348015610c5c57600080fd5b50610c776004803603810190610c729190614317565b612b61565b005b348015610c8557600080fd5b50610c8e612c58565b604051610c9b91906140a1565b60405180910390f35b348015610cb057600080fd5b50610cb9612c5e565b604051610cc691906142fc565b60405180910390f35b348015610cdb57600080fd5b50610cf66004803603810190610cf19190614317565b612c71565b005b60145481565b606060018054610d0d906145ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610d39906145ec565b8015610d865780601f10610d5b57610100808354040283529160200191610d86565b820191906000526020600020905b815481529060010190602001808311610d6957829003601f168201915b5050505050905090565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dbe612d31565b73ffffffffffffffffffffffffffffffffffffffff16610ddc611f45565b73ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614669565b60405180910390fd5b600a60009054906101000a900460ff1615610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e79906146d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a90614741565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90614741565b60405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550605560048190555060146005819055506000600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934308460008061105f611f45565b426040518863ffffffff1660e01b81526004016110819695949392919061479c565b60606040518083038185885af115801561109f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110c49190614812565b5050506000601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a919061487a565b905060008173ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120c919061487a565b6040518363ffffffff1660e01b81526004016112299291906148a7565b602060405180830381865afa158015611246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126a919061487a565b905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601560006101000a81548160ff0219169083151502179055507fe9eb78ba3cec944cc08914c86e9e2f865657d654824acd14c88b3c271bf6397760405160405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114ca6114c3612d31565b8484612d39565b6001905092915050565b6114dc612d31565b73ffffffffffffffffffffffffffffffffffffffff166114fa611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154790614669565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61159c612d31565b73ffffffffffffffffffffffffffffffffffffffff166115ba611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790614669565b60405180910390fd5b81600481905550806005819055505050565b6000601154905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061165f848484612f02565b506117218461166c612d31565b61171c856040518060600160405280602881526020016153e460289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116d2612d31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b612d39565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006117c961177e7f0000000000000000000000000000000000000000000000000000000000000000611cc1565b6117bb6117aa7f000000000000000000000000000000000000000000000000000000000000dead611cc1565b60115461352890919063ffffffff16565b61352890919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60055481565b60006118946117f8612d31565b8461188f85600c6000611809612d31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b612d39565b6001905092915050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600033905081600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c9061491c565b60405180910390fd5b61199782600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461352890919063ffffffff16565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119ef8260115461352890919063ffffffff16565b601181905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a5391906140a1565b60405180910390a35050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a8d612d31565b73ffffffffffffffffffffffffffffffffffffffff16611aab611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af890614669565b60405180910390fd5b80601560036101000a81548160ff02191690831515021790555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b611b46612d31565b73ffffffffffffffffffffffffffffffffffffffff16611b64611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190614669565b60405180910390fd5b8060128190555050565b601560029054906101000a900460ff1681565b611bdf612d31565b73ffffffffffffffffffffffffffffffffffffffff16611bfd611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90614669565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900460ff1681565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611d12612d31565b73ffffffffffffffffffffffffffffffffffffffff16611d30611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d90614669565b60405180910390fd5b611d9060006135d0565b565b611d9a612d31565b73ffffffffffffffffffffffffffffffffffffffff16611db8611f45565b73ffffffffffffffffffffffffffffffffffffffff1614611e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0590614669565b60405180910390fd5b8060138190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614988565b60405180910390fd5b6000601560036101000a81548160ff0219169083151502179055506000601560026101000a81548160ff021916908315150217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b60135481565b600a60009054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611f7d906145ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa9906145ec565b8015611ff65780601f10611fcb57610100808354040283529160200191611ff6565b820191906000526020600020905b815481529060010190602001808311611fd957829003601f168201915b5050505050905090565b60006120c361200d612d31565b846120be8560405180606001604052806025815260200161540c60259139600c6000612037612d31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b612d39565b6001905092915050565b60006120e16120da612d31565b8484612f02565b506001905092915050565b6120f4612d31565b73ffffffffffffffffffffffffffffffffffffffff16612112611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614669565b60405180910390fd5b8060148190555050565b61217a612d31565b73ffffffffffffffffffffffffffffffffffffffff16612198611f45565b73ffffffffffffffffffffffffffffffffffffffff16146121ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e590614669565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612251612d31565b73ffffffffffffffffffffffffffffffffffffffff1661226f611f45565b73ffffffffffffffffffffffffffffffffffffffff16146122c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bc90614669565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561237a5780601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60106020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590614988565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16838360405160240161245a9291906149a8565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124e49190614a18565b6000604051808303816000865af19150503d8060008114612521576040519150601f19603f3d011682016040523d82523d6000602084013e612526565b606091505b505090508061256a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256190614a7b565b60405180910390fd5b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614988565b60405180910390fd5b81601560006101000a81548160ff02191690831515021790555080601560016101000a81548160ff0219169083151502179055505050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126c7612d31565b73ffffffffffffffffffffffffffffffffffffffff166126e5611f45565b73ffffffffffffffffffffffffffffffffffffffff161461273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273290614669565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614988565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161284c90614ac1565b60006040518083038185875af1925050503d8060008114612889576040519150601f19603f3d011682016040523d82523d6000602084013e61288e565b606091505b50509050806128d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c990614b22565b60405180910390fd5b50565b601560019054906101000a900460ff1681565b6128f0612d31565b73ffffffffffffffffffffffffffffffffffffffff1661290e611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295b90614669565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b60008061298c612d31565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612af091906140a1565b60405180910390a37fb5e85c8f437dbbdc51d3b5979c8fe54dcb0dcea732661c1904898ddb2fd3bb0e8184604051612b29929190614b73565b60405180910390a16001915050919050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612b69612d31565b73ffffffffffffffffffffffffffffffffffffffff16612b87611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd490614669565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390614c0e565b60405180910390fd5b612c55816135d0565b50565b60045481565b601560039054906101000a900460ff1681565b612c79612d31565b73ffffffffffffffffffffffffffffffffffffffff16612c97611f45565b73ffffffffffffffffffffffffffffffffffffffff1614612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce490614669565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9f90614ca0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0e90614d32565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ef591906140a1565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6990614dc4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd890614e56565b60405180910390fd5b60008211613024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301b90614ee8565b60405180910390fd5b601660149054906101000a900460ff161561304b57613044848484613694565b90506134bd565b600061305630611cc1565b90506000601454821015905080801561307c5750601660149054906101000a900460ff16155b80156130d25750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130ea5750601560009054906101000a900460ff165b156130f9576130f882613867565b5b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561319d5750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131b55750601560029054906101000a900460ff165b15613200576012548411156131ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f690614f7a565b60405180910390fd5b5b613289846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006132d88787613955565b6132ec576132e7878787613ac0565b6132ee565b845b9050601560039054906101000a900460ff1680156133565750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133bb576013546133798261336b89611cc1565b61357290919063ffffffff16565b11156133ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b190614fe6565b60405180910390fd5b5b61340d81600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ad91906140a1565b60405180910390a3600193505050505b9392505050565b600083831115829061350c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613503919061414c565b60405180910390fd5b506000838561351b9190615035565b9050809150509392505050565b600061356a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134c4565b905092915050565b60008082846135819190615069565b9050838110156135c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bd906150e9565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061371f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134c49092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137b482600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161385491906140a1565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff021916908315150217905550601560019054906101000a900460ff161561389d5760145490505b60004790506138ab82613ce5565b60006138c0824761352890919063ffffffff16565b9050600081111561393557600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613933573d6000803e3d6000fd5b505b50506000601660146101000a81548160ff02191690831515021790555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139f85750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a065760019050613aba565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613aa75750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ab55760009050613aba565b600090505b92915050565b600080600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b4557613b3e600954613b3060045486613f6190919063ffffffff16565b613fdb90919063ffffffff16565b9050613bc4565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613bc357613bc0600954613bb260055486613f6190919063ffffffff16565b613fdb90919063ffffffff16565b90505b5b6000811115613cc857613c1f81600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461357290919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cbf91906140a1565b60405180910390a35b613cdb818461352890919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613d0257613d01615109565b5b604051908082528060200260200182016040528015613d305781602001602082028036833780820191505090505b5090503081600081518110613d4857613d47615138565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e13919061487a565b81600181518110613e2757613e26615138565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e8e30601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d39565b601560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ef2959493929190615225565b600060405180830381600087803b158015613f0c57600080fd5b505af1158015613f20573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613f5592919061527f565b60405180910390a15050565b6000808303613f735760009050613fd5565b60008284613f8191906152af565b9050828482613f909190615320565b14613fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc7906153c3565b60405180910390fd5b809150505b92915050565b600061401d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614025565b905092915050565b6000808311829061406c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614063919061414c565b60405180910390fd5b506000838561407b9190615320565b9050809150509392505050565b6000819050919050565b61409b81614088565b82525050565b60006020820190506140b66000830184614092565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140f65780820151818401526020810190506140db565b60008484015250505050565b6000601f19601f8301169050919050565b600061411e826140bc565b61412881856140c7565b93506141388185602086016140d8565b61414181614102565b840191505092915050565b600060208201905081810360008301526141668184614113565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006141b36141ae6141a98461416e565b61418e565b61416e565b9050919050565b60006141c582614198565b9050919050565b60006141d7826141ba565b9050919050565b6141e7816141cc565b82525050565b600060208201905061420260008301846141de565b92915050565b60006142138261416e565b9050919050565b61422381614208565b82525050565b600060208201905061423e600083018461421a565b92915050565b600080fd5b61425281614208565b811461425d57600080fd5b50565b60008135905061426f81614249565b92915050565b61427e81614088565b811461428957600080fd5b50565b60008135905061429b81614275565b92915050565b600080604083850312156142b8576142b7614244565b5b60006142c685828601614260565b92505060206142d78582860161428c565b9150509250929050565b60008115159050919050565b6142f6816142e1565b82525050565b600060208201905061431160008301846142ed565b92915050565b60006020828403121561432d5761432c614244565b5b600061433b84828501614260565b91505092915050565b6000806040838503121561435b5761435a614244565b5b60006143698582860161428c565b925050602061437a8582860161428c565b9150509250929050565b60008060006060848603121561439d5761439c614244565b5b60006143ab86828701614260565b93505060206143bc86828701614260565b92505060406143cd8682870161428c565b9150509250925092565b600060ff82169050919050565b6143ed816143d7565b82525050565b600060208201905061440860008301846143e4565b92915050565b60006020828403121561442457614423614244565b5b60006144328482850161428c565b91505092915050565b614444816142e1565b811461444f57600080fd5b50565b6000813590506144618161443b565b92915050565b60006020828403121561447d5761447c614244565b5b600061448b84828501614452565b91505092915050565b600080604083850312156144ab576144aa614244565b5b60006144b985828601614260565b92505060206144ca85828601614452565b9150509250929050565b600080604083850312156144eb576144ea614244565b5b60006144f985828601614452565b925050602061450a85828601614452565b9150509250929050565b6000806040838503121561452b5761452a614244565b5b600061453985828601614260565b925050602061454a85828601614260565b9150509250929050565b600063ffffffff82169050919050565b61456d81614554565b811461457857600080fd5b50565b60008135905061458a81614564565b92915050565b6000602082840312156145a6576145a5614244565b5b60006145b48482850161457b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061460457607f821691505b602082108103614617576146166145bd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146536020836140c7565b915061465e8261461d565b602082019050919050565b6000602082019050818103600083015261468281614646565b9050919050565b7f416c7265616479206c61756e6368656421000000000000000000000000000000600082015250565b60006146bf6011836140c7565b91506146ca82614689565b602082019050919050565b600060208201905081810360008301526146ee816146b2565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b600061472b600c836140c7565b9150614736826146f5565b602082019050919050565b6000602082019050818103600083015261475a8161471e565b9050919050565b6000819050919050565b600061478661478161477c84614761565b61418e565b614088565b9050919050565b6147968161476b565b82525050565b600060c0820190506147b1600083018961421a565b6147be6020830188614092565b6147cb604083018761478d565b6147d8606083018661478d565b6147e5608083018561421a565b6147f260a0830184614092565b979650505050505050565b60008151905061480c81614275565b92915050565b60008060006060848603121561482b5761482a614244565b5b6000614839868287016147fd565b935050602061484a868287016147fd565b925050604061485b868287016147fd565b9150509250925092565b60008151905061487481614249565b92915050565b6000602082840312156148905761488f614244565b5b600061489e84828501614865565b91505092915050565b60006040820190506148bc600083018561421a565b6148c9602083018461421a565b9392505050565b7f496e73756666696369656e742042616c616e636520466f72204275726e210000600082015250565b6000614906601e836140c7565b9150614911826148d0565b602082019050919050565b60006020820190508181036000830152614935816148f9565b9050919050565b7f496e76616c69642043616c6c6572210000000000000000000000000000000000600082015250565b6000614972600f836140c7565b915061497d8261493c565b602082019050919050565b600060208201905081810360008301526149a181614965565b9050919050565b60006040820190506149bd600083018561421a565b6149ca6020830184614092565b9392505050565b600081519050919050565b600081905092915050565b60006149f2826149d1565b6149fc81856149dc565b9350614a0c8185602086016140d8565b80840191505092915050565b6000614a2482846149e7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000614a656014836140c7565b9150614a7082614a2f565b602082019050919050565b60006020820190508181036000830152614a9481614a58565b9050919050565b50565b6000614aab6000836149dc565b9150614ab682614a9b565b600082019050919050565b6000614acc82614a9e565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b6000614b0c6014836140c7565b9150614b1782614ad6565b602082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b6000614b5d614b58614b5384614554565b61418e565b614088565b9050919050565b614b6d81614b42565b82525050565b6000604082019050614b88600083018561421a565b614b956020830184614b64565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bf86026836140c7565b9150614c0382614b9c565b604082019050919050565b60006020820190508181036000830152614c2781614beb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c8a6024836140c7565b9150614c9582614c2e565b604082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d1c6022836140c7565b9150614d2782614cc0565b604082019050919050565b60006020820190508181036000830152614d4b81614d0f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dae6025836140c7565b9150614db982614d52565b604082019050919050565b60006020820190508181036000830152614ddd81614da1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e406023836140c7565b9150614e4b82614de4565b604082019050919050565b60006020820190508181036000830152614e6f81614e33565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614ed26029836140c7565b9150614edd82614e76565b604082019050919050565b60006020820190508181036000830152614f0181614ec5565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614f646028836140c7565b9150614f6f82614f08565b604082019050919050565b60006020820190508181036000830152614f9381614f57565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b6000614fd0601b836140c7565b9150614fdb82614f9a565b602082019050919050565b60006020820190508181036000830152614fff81614fc3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061504082614088565b915061504b83614088565b925082820390508181111561506357615062615006565b5b92915050565b600061507482614088565b915061507f83614088565b925082820190508082111561509757615096615006565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150d3601b836140c7565b91506150de8261509d565b602082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519c81614208565b82525050565b60006151ae8383615193565b60208301905092915050565b6000602082019050919050565b60006151d282615167565b6151dc8185615172565b93506151e783615183565b8060005b838110156152185781516151ff88826151a2565b975061520a836151ba565b9250506001810190506151eb565b5085935050505092915050565b600060a08201905061523a6000830188614092565b615247602083018761478d565b818103604083015261525981866151c7565b9050615268606083018561421a565b6152756080830184614092565b9695505050505050565b60006040820190506152946000830185614092565b81810360208301526152a681846151c7565b90509392505050565b60006152ba82614088565b91506152c583614088565b92508282026152d381614088565b915082820484148315176152ea576152e9615006565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061532b82614088565b915061533683614088565b925082615346576153456152f1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006153ad6021836140c7565b91506153b882615351565b604082019050919050565b600060208201905081810360008301526153dc816153a0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122095e4a89ca31e23b7258b3b5c982c6622f529a5bd4d362f23416260a0c5b75cc864736f6c63430008130033

Deployed Bytecode Sourcemap

8578:14152:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9875:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11811:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10096:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17271:1039;;;:::i;:::-;;8888:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13149:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22493:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19838:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12088:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9158:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13923:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8800:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12482:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11997:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9022:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12646:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9487:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22156:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9069:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20118:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9430:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20739:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10013:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20361:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9937:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12196:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3246:94;;;;;;;;;;;;;:::i;:::-;;20625:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21310:118;;;;;;;;;;;;;:::i;:::-;;9197:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9721:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9797:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9278:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9539:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2937:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11902;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12872:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13748:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21436:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20497:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20848:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9594:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19558:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21060:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12327:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20231:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19372:178;;;;;;;;;;;;;:::i;:::-;;9975:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20012:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21829:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10134:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3348:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8978:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10052:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22615:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9875:53;;;;:::o;11811:83::-;11848:13;11881:5;11874:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11811:83;:::o;10096:31::-;;;;;;;;;;;;;:::o;17271:1039::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17343:8:::1;;;;;;;;;;;17342:9;17334:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17417:1;17392:27;;:13;;;;;;;;;;;:27;;::::0;17384:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17483:1;17455:30;;:16;;;;;;;;;;;:30;;::::0;17447:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17524:4;17513:8;;:15;;;;;;;;;;;;;;;;;;17560:2;17539:18;:23;;;;17595:2;17573:19;:24;;;;17610:15;17628:9;:24;17646:4;17628:24;;;;;;;;;;;;;;;;17610:42;;17665:9;;;;;;;;;;;:25;;;17699:9;17733:4;17753:10;17778:1;17794::::0;17810:7:::1;:5;:7::i;:::-;17832:15;17665:193;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17871:23;17913:9;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17871:62;;17946:17;17979:7;:15;;;18003:4;18010:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17979:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17946:82;;18059:4;18041:7;;:23;;;;;;;;;;;;;;;;;;18110:4;18077:12;:30;18098:7;;;;;;;;;;;18077:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18165:4;18125:19;:37;18153:7;;;;;;;;;;;18125:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;18236:1;18227:11;18180;:26;18200:4;18180:26;;;;;;;;;;;;;;;:44;18215:7;;;;;;;;;;;18180:44;;;;;;;;;;;;;;;:58;;;;18265:4;18251:11;;:18;;;;;;;;;;;;;;;;;;18285:17;;;;;;;;;;17323:987;;;17271:1039::o:0;8888:81::-;;;:::o;13149:161::-;13224:4;13241:39;13250:12;:10;:12::i;:::-;13264:7;13273:6;13241:8;:39::i;:::-;13298:4;13291:11;;13149:161;;;;:::o;22493:114::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22590:9:::1;22571:16;;:28;;;;;;;;;;;;;;;;;;22493:114:::0;:::o;19838:163::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19943:8:::1;19922:18;:29;;;;19984:9;19962:19;:31;;;;19838:163:::0;;:::o;12088:100::-;12141:7;12168:12;;12161:19;;12088:100;:::o;9158:30::-;;;;;;;;;;;;;:::o;13923:313::-;14021:4;14038:36;14048:6;14056:9;14067:6;14038:9;:36::i;:::-;;14085:121;14094:6;14102:12;:10;:12::i;:::-;14116:89;14154:6;14116:89;;;;;;;;;;;;;;;;;:11;:19;14128:6;14116:19;;;;;;;;;;;;;;;:33;14136:12;:10;:12::i;:::-;14116:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14085:8;:121::i;:::-;14224:4;14217:11;;13923:313;;;;;:::o;8800:81::-;;;:::o;12482:156::-;12535:7;12562:68;12607:22;12617:11;12607:9;:22::i;:::-;12562:40;12579:22;12589:11;12579:9;:22::i;:::-;12562:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;12555:75;;12482:156;:::o;11997:83::-;12038:5;12063:9;;;;;;;;;;;12056:16;;11997:83;:::o;9022:38::-;;;;:::o;12646:218::-;12734:4;12751:83;12760:12;:10;:12::i;:::-;12774:7;12783:50;12822:10;12783:11;:25;12795:12;:10;:12::i;:::-;12783:25;;;;;;;;;;;;;;;:34;12809:7;12783:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12751:8;:83::i;:::-;12852:4;12845:11;;12646:218;;;;:::o;9487:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;22156:329::-;22203:15;22221:10;22203:28;;22272:6;22250:9;:18;22260:7;22250:18;;;;;;;;;;;;;;;;:28;;22242:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22344:30;22367:6;22344:9;:18;22354:7;22344:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;22323:9;:18;22333:7;22323:18;;;;;;;;;;;;;;;:51;;;;22400:24;22417:6;22400:12;;:16;;:24;;;;:::i;:::-;22385:12;:39;;;;22466:1;22440:37;;22449:7;22440:37;;;22470:6;22440:37;;;;;;:::i;:::-;;;;;;;;22192:293;22156:329;:::o;9069:82::-;;;;;;;;;;;;;:::o;20118:105::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20208:7:::1;20189:16;;:26;;;;;;;;;;;;;;;;;;20118:105:::0;:::o;9430:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;20739:101::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20824:8:::1;20809:12;:23;;;;20739:101:::0;:::o;10013:32::-;;;;;;;;;;;;;:::o;20361:128::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20474:7:::1;20446:19;:25;20466:4;20446:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;20361:128:::0;;:::o;9937:31::-;;;;;;;;;;;;;:::o;12196:123::-;12262:7;12288:9;:18;12298:7;12288:18;;;;;;;;;;;;;;;;12281:25;;12196:123;;;:::o;3246:94::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3311:21:::1;3329:1;3311:9;:21::i;:::-;3246:94::o:0;20625:106::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20715:8:::1;20702:10;:21;;;;20625:106:::0;:::o;21310:118::-;10336:15;;;;;;;;;;;10322:29;;:10;:29;;;10314:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21383:5:::1;21364:16;;:24;;;;;;;;;;;;;;;;;;21415:5;21399:13;;:21;;;;;;;;;;;;;;;;;;21310:118::o:0;9197:31::-;;;;;;;;;;;;;:::o;9721:59::-;;;;:::o;9797:56::-;;;;:::o;9278:20::-;;;;;;;;;;;;;:::o;9539:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2937:87::-;2983:7;3010:6;;;;;;;;;;;3003:13;;2937:87;:::o;11902:::-;11941:13;11974:7;11967:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11902:87;:::o;12872:269::-;12965:4;12982:129;12991:12;:10;:12::i;:::-;13005:7;13014:96;13053:15;13014:96;;;;;;;;;;;;;;;;;:11;:25;13026:12;:10;:12::i;:::-;13014:25;;;;;;;;;;;;;;;:34;13040:7;13014:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12982:8;:129::i;:::-;13129:4;13122:11;;12872:269;;;;:::o;13748:167::-;13826:4;13843:42;13853:12;:10;:12::i;:::-;13867:9;13878:6;13843:9;:42::i;:::-;;13903:4;13896:11;;13748:167;;;;:::o;21436:107::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21525:10:::1;21509:13;:26;;;;21436:107:::0;:::o;20497:120::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20602:7:::1;20578:15;:21;20594:4;20578:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20497:120:::0;;:::o;20848:204::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20952:7:::1;20930:12;:19;20943:5;20930:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20973:7;20970:75;;;21026:7;20997:19;:26;21017:5;20997:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20970:75;20848:204:::0;;:::o;9594:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;19558:272::-;10336:15;;;;;;;;;;;10322:29;;:10;:29;;;10314:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19658:12:::1;19684:6;19676:20;;19751:9;19762:7;19697:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19676:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19657:114;;;19790:7;19782:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;19646:184;19558:272:::0;;;:::o;21060:175::-;10336:15;;;;;;;;;;;10322:29;;:10;:29;;;10314:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21186:8:::1;21172:11;;:22;;;;;;;;;;;;;;;;;;21219:8;21205:11;;:22;;;;;;;;;;;;;;;;;;21060:175:::0;;:::o;12327:143::-;12408:7;12435:11;:18;12447:5;12435:18;;;;;;;;;;;;;;;:27;12454:7;12435:27;;;;;;;;;;;;;;;;12428:34;;12327:143;;;;:::o;20231:122::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20338:7:::1;20312:17;:23;20330:4;20312:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;20231:122:::0;;:::o;19372:178::-;10336:15;;;;;;;;;;;10322:29;;:10;:29;;;10314:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19427:7:::1;19447:10;19439:24;;19471:21;19439:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19426:71;;;19516:2;19508:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;19414:136;19372:178::o:0;9975:31::-;;;;;;;;;;;;;:::o;20012:98::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20095:7:::1;20079:13;;:23;;;;;;;;;;;;;;;;;;20012:98:::0;:::o;21829:319::-;21889:4;21906:13;21922:12;:10;:12::i;:::-;21906:28;;21986:14;21947:11;:18;21959:5;21947:18;;;;;;;;;;;;;;;:36;21966:16;;;;;;;;;;;21947:36;;;;;;;;;;;;;;;:53;;;;22032:16;;;;;;;;;;;22016:49;;22025:5;22016:49;;;22050:14;22016:49;;;;;;:::i;:::-;;;;;;;;22081:37;22105:5;22111:6;22081:37;;;;;;;:::i;:::-;;;;;;;;22136:4;22129:11;;;21829:319;;;:::o;10134:22::-;;;;;;;;;;;;;:::o;3348:229::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3471:1:::1;3451:22;;:8;:22;;::::0;3429:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3550:19;3560:8;3550:9;:19::i;:::-;3348:229:::0;:::o;8978:37::-;;;;:::o;10052:35::-;;;;;;;;;;;;;:::o;22615:110::-;3169:12;:10;:12::i;:::-;3158:23;;:7;:5;:7::i;:::-;:23;;;3150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22707:10:::1;22691:13;;:26;;;;;;;;;;;;;;;;;;22615:110:::0;:::o;1504:98::-;1557:7;1584:10;1577:17;;1504:98;:::o;13318:337::-;13428:1;13411:19;;:5;:19;;;13403:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13509:1;13490:21;;:7;:21;;;13482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13593:6;13563:11;:18;13575:5;13563:18;;;;;;;;;;;;;;;:27;13582:7;13563:27;;;;;;;;;;;;;;;:36;;;;13631:7;13615:32;;13624:5;13615:32;;;13640:6;13615:32;;;;;;:::i;:::-;;;;;;;;13318:337;;;:::o;14244:1578::-;14331:4;14376:1;14358:20;;:6;:20;;;14350:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14460:1;14439:23;;:9;:23;;;14431:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14530:1;14521:6;:10;14513:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14598:6;;;;;;;;;;;14594:1219;;;14628:41;14643:6;14651:9;14662:6;14628:14;:41::i;:::-;14621:48;;;;14594:1219;14713:28;14744:24;14762:4;14744:9;:24::i;:::-;14713:55;;14783:28;14838:13;;14814:20;:37;;14783:68;;14872:23;:34;;;;;14900:6;;;;;;;;;;;14899:7;14872:34;:59;;;;;14911:12;:20;14924:6;14911:20;;;;;;;;;;;;;;;;;;;;;;;;;14910:21;14872:59;:74;;;;;14935:11;;;;;;;;;;;14872:74;14868:145;;;14967:30;14976:20;14967:8;:30::i;:::-;14868:145;15033:15;:23;15049:6;15033:23;;;;;;;;;;;;;;;;;;;;;;;;;15032:24;:55;;;;;15061:15;:26;15077:9;15061:26;;;;;;;;;;;;;;;;;;;;;;;;;15060:27;15032:55;:72;;;;;15091:13;;;;;;;;;;;15032:72;15029:187;;;15143:12;;15133:6;:22;;15125:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15029:187;15265:53;15287:6;15265:53;;;;;;;;;;;;;;;;;:9;:17;15275:6;15265:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15245:9;:17;15255:6;15245:17;;;;;;;;;;;;;;;:73;;;;15335:19;15357:34;15374:6;15381:9;15357:16;:34::i;:::-;:80;;15403:34;15411:6;15419:9;15430:6;15403:7;:34::i;:::-;15357:80;;;15394:6;15357:80;15335:102;;15457:16;;;;;;;;;;;:51;;;;;15478:19;:30;15498:9;15478:30;;;;;;;;;;;;;;;;;;;;;;;;;15477:31;15457:51;15454:181;;;15578:10;;15537:37;15562:11;15537:20;15547:9;15537;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;15529:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;15454:181;15674:37;15699:11;15674:9;:20;15684:9;15674:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15651:9;:20;15661:9;15651:20;;;;;;;;;;;;;;;:60;;;;15750:9;15733:40;;15742:6;15733:40;;;15761:11;15733:40;;;;;;:::i;:::-;;;;;;;;15795:4;15788:11;;;;;14244:1578;;;;;;:::o;4124:192::-;4210:7;4243:1;4238;:6;;4246:12;4230:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4270:9;4286:1;4282;:5;;;;:::i;:::-;4270:17;;4307:1;4300:8;;;4124:192;;;;;:::o;3980:136::-;4038:7;4065:43;4069:1;4072;4065:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4058:50;;3980:136;;;;:::o;3791:181::-;3849:7;3869:9;3885:1;3881;:5;;;;:::i;:::-;3869:17;;3910:1;3905;:6;;3897:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3963:1;3956:8;;;3791:181;;;;:::o;3585:173::-;3641:16;3660:6;;;;;;;;;;;3641:25;;3686:8;3677:6;;:17;;;;;;;;;;;;;;;;;;3741:8;3710:40;;3731:8;3710:40;;;;;;;;;;;;3630:128;3585:173;:::o;15830:330::-;15923:4;15960:53;15982:6;15960:53;;;;;;;;;;;;;;;;;:9;:17;15970:6;15960:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15940:9;:17;15950:6;15940:17;;;;;;;;;;;;;;;:73;;;;16047:32;16072:6;16047:9;:20;16057:9;16047:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16024:9;:20;16034:9;16024:20;;;;;;;;;;;;;;;:55;;;;16112:9;16095:35;;16104:6;16095:35;;;16123:6;16095:35;;;;;;:::i;:::-;;;;;;;;16148:4;16141:11;;15830:330;;;;;:::o;18318:390::-;10225:4;10216:6;;:13;;;;;;;;;;;;;;;;;;18392:11:::1;;;;;;;;;;;18389:47;;;18423:13;;18405:31;;18389:47;18449:22;18474:21;18449:46;;18506:33;18523:15;18506:16;:33::i;:::-;18550:22;18575:41;18601:14;18575:21;:25;;:41;;;;:::i;:::-;18550:66;;18648:1;18631:14;:18;18628:70;;;18659:13;;;;;;;;;;;18651:31;;:47;18683:14;18651:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18628:70;18376:332;;10261:5:::0;10252:6;;:14;;;;;;;;;;;;;;;;;;18318:390;:::o;16172:369::-;16256:4;16276:17;:25;16294:6;16276:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;16305:17;:28;16323:9;16305:28;;;;;;;;;;;;;;;;;;;;;;;;;16276:57;16273:261;;;16357:4;16350:11;;;;16273:261;16392:12;:20;16405:6;16392:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;16416:12;:23;16429:9;16416:23;;;;;;;;;;;;;;;;;;;;;;;;;16392:47;16388:146;;;16463:5;16456:12;;;;16388:146;16517:5;16510:12;;16172:369;;;;;:::o;16549:714::-;16635:7;16665:14;16722:12;:20;16735:6;16722:20;;;;;;;;;;;;;;;;;;;;;;;;;16719:270;;;16776:50;16811:14;;16776:30;16787:18;;16776:6;:10;;:30;;;;:::i;:::-;:34;;:50;;;;:::i;:::-;16764:62;;16719:270;;;16865:12;:23;16878:9;16865:23;;;;;;;;;;;;;;;;;;;;;;;;;16862:127;;;16922:51;16958:14;;16922:31;16933:19;;16922:6;:10;;:31;;;;:::i;:::-;:35;;:51;;;;:::i;:::-;16910:63;;16862:127;16719:270;17020:1;17008:9;:13;17005:185;;;17069:39;17098:9;17069;:24;17087:4;17069:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;17042:9;:24;17060:4;17042:24;;;;;;;;;;;;;;;:66;;;;17157:4;17132:42;;17141:6;17132:42;;;17164:9;17132:42;;;;;;:::i;:::-;;;;;;;;17005:185;17213:21;17224:9;17213:6;:10;;:21;;;;:::i;:::-;17206:28;;;16549:714;;;;;:::o;18716:648::-;18842:21;18880:1;18866:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18842:40;;18911:4;18893;18898:1;18893:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18937:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18927:4;18932:1;18927:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;18966:56;18983:4;18998:9;;;;;;;;;;;19010:11;18966:8;:56::i;:::-;19061:9;;;;;;;;;;;:60;;;19136:11;19162:1;19206:4;19233;19269:15;19061:234;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19321:35;19338:11;19351:4;19321:35;;;;;;;:::i;:::-;;;;;;;;18771:593;18716:648;:::o;4324:250::-;4382:7;4411:1;4406;:6;4402:47;;4436:1;4429:8;;;;4402:47;4461:9;4477:1;4473;:5;;;;:::i;:::-;4461:17;;4506:1;4501;4497;:5;;;;:::i;:::-;:10;4489:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4565:1;4558:8;;;4324:250;;;;;:::o;4582:132::-;4640:7;4667:39;4671:1;4674;4667:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4660:46;;4582:132;;;;:::o;4722:278::-;4808:7;4840:1;4836;:5;4843:12;4828:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4867:9;4883:1;4879;:5;;;;:::i;:::-;4867:17;;4991:1;4984:8;;;4722:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:60::-;1944:3;1965:5;1958:12;;1916:60;;;:::o;1982:142::-;2032:9;2065:53;2083:34;2092:24;2110:5;2092:24;:::i;:::-;2083:34;:::i;:::-;2065:53;:::i;:::-;2052:66;;1982:142;;;:::o;2130:126::-;2180:9;2213:37;2244:5;2213:37;:::i;:::-;2200:50;;2130:126;;;:::o;2262:148::-;2334:9;2367:37;2398:5;2367:37;:::i;:::-;2354:50;;2262:148;;;:::o;2416:175::-;2525:59;2578:5;2525:59;:::i;:::-;2520:3;2513:72;2416:175;;:::o;2597:266::-;2712:4;2750:2;2739:9;2735:18;2727:26;;2763:93;2853:1;2842:9;2838:17;2829:6;2763:93;:::i;:::-;2597:266;;;;:::o;2869:96::-;2906:7;2935:24;2953:5;2935:24;:::i;:::-;2924:35;;2869:96;;;:::o;2971:118::-;3058:24;3076:5;3058:24;:::i;:::-;3053:3;3046:37;2971:118;;:::o;3095:222::-;3188:4;3226:2;3215:9;3211:18;3203:26;;3239:71;3307:1;3296:9;3292:17;3283:6;3239:71;:::i;:::-;3095:222;;;;:::o;3404:117::-;3513:1;3510;3503:12;3650:122;3723:24;3741:5;3723:24;:::i;:::-;3716:5;3713:35;3703:63;;3762:1;3759;3752:12;3703:63;3650:122;:::o;3778:139::-;3824:5;3862:6;3849:20;3840:29;;3878:33;3905:5;3878:33;:::i;:::-;3778:139;;;;:::o;3923:122::-;3996:24;4014:5;3996:24;:::i;:::-;3989:5;3986:35;3976:63;;4035:1;4032;4025:12;3976:63;3923:122;:::o;4051:139::-;4097:5;4135:6;4122:20;4113:29;;4151:33;4178:5;4151:33;:::i;:::-;4051:139;;;;:::o;4196:474::-;4264:6;4272;4321:2;4309:9;4300:7;4296:23;4292:32;4289:119;;;4327:79;;:::i;:::-;4289:119;4447:1;4472:53;4517:7;4508:6;4497:9;4493:22;4472:53;:::i;:::-;4462:63;;4418:117;4574:2;4600:53;4645:7;4636:6;4625:9;4621:22;4600:53;:::i;:::-;4590:63;;4545:118;4196:474;;;;;:::o;4676:90::-;4710:7;4753:5;4746:13;4739:21;4728:32;;4676:90;;;:::o;4772:109::-;4853:21;4868:5;4853:21;:::i;:::-;4848:3;4841:34;4772:109;;:::o;4887:210::-;4974:4;5012:2;5001:9;4997:18;4989:26;;5025:65;5087:1;5076:9;5072:17;5063:6;5025:65;:::i;:::-;4887:210;;;;:::o;5103:329::-;5162:6;5211:2;5199:9;5190:7;5186:23;5182:32;5179:119;;;5217:79;;:::i;:::-;5179:119;5337:1;5362:53;5407:7;5398:6;5387:9;5383:22;5362:53;:::i;:::-;5352:63;;5308:117;5103:329;;;;:::o;5438:474::-;5506:6;5514;5563:2;5551:9;5542:7;5538:23;5534:32;5531:119;;;5569:79;;:::i;:::-;5531:119;5689:1;5714:53;5759:7;5750:6;5739:9;5735:22;5714:53;:::i;:::-;5704:63;;5660:117;5816:2;5842:53;5887:7;5878:6;5867:9;5863:22;5842:53;:::i;:::-;5832:63;;5787:118;5438:474;;;;;:::o;5918:619::-;5995:6;6003;6011;6060:2;6048:9;6039:7;6035:23;6031:32;6028:119;;;6066:79;;:::i;:::-;6028:119;6186:1;6211:53;6256:7;6247:6;6236:9;6232:22;6211:53;:::i;:::-;6201:63;;6157:117;6313:2;6339:53;6384:7;6375:6;6364:9;6360:22;6339:53;:::i;:::-;6329:63;;6284:118;6441:2;6467:53;6512:7;6503:6;6492:9;6488:22;6467:53;:::i;:::-;6457:63;;6412:118;5918:619;;;;;:::o;6543:86::-;6578:7;6618:4;6611:5;6607:16;6596:27;;6543:86;;;:::o;6635:112::-;6718:22;6734:5;6718:22;:::i;:::-;6713:3;6706:35;6635:112;;:::o;6753:214::-;6842:4;6880:2;6869:9;6865:18;6857:26;;6893:67;6957:1;6946:9;6942:17;6933:6;6893:67;:::i;:::-;6753:214;;;;:::o;6973:329::-;7032:6;7081:2;7069:9;7060:7;7056:23;7052:32;7049:119;;;7087:79;;:::i;:::-;7049:119;7207:1;7232:53;7277:7;7268:6;7257:9;7253:22;7232:53;:::i;:::-;7222:63;;7178:117;6973:329;;;;:::o;7308:116::-;7378:21;7393:5;7378:21;:::i;:::-;7371:5;7368:32;7358:60;;7414:1;7411;7404:12;7358:60;7308:116;:::o;7430:133::-;7473:5;7511:6;7498:20;7489:29;;7527:30;7551:5;7527:30;:::i;:::-;7430:133;;;;:::o;7569:323::-;7625:6;7674:2;7662:9;7653:7;7649:23;7645:32;7642:119;;;7680:79;;:::i;:::-;7642:119;7800:1;7825:50;7867:7;7858:6;7847:9;7843:22;7825:50;:::i;:::-;7815:60;;7771:114;7569:323;;;;:::o;7898:468::-;7963:6;7971;8020:2;8008:9;7999:7;7995:23;7991:32;7988:119;;;8026:79;;:::i;:::-;7988:119;8146:1;8171:53;8216:7;8207:6;8196:9;8192:22;8171:53;:::i;:::-;8161:63;;8117:117;8273:2;8299:50;8341:7;8332:6;8321:9;8317:22;8299:50;:::i;:::-;8289:60;;8244:115;7898:468;;;;;:::o;8372:462::-;8434:6;8442;8491:2;8479:9;8470:7;8466:23;8462:32;8459:119;;;8497:79;;:::i;:::-;8459:119;8617:1;8642:50;8684:7;8675:6;8664:9;8660:22;8642:50;:::i;:::-;8632:60;;8588:114;8741:2;8767:50;8809:7;8800:6;8789:9;8785:22;8767:50;:::i;:::-;8757:60;;8712:115;8372:462;;;;;:::o;8840:474::-;8908:6;8916;8965:2;8953:9;8944:7;8940:23;8936:32;8933:119;;;8971:79;;:::i;:::-;8933:119;9091:1;9116:53;9161:7;9152:6;9141:9;9137:22;9116:53;:::i;:::-;9106:63;;9062:117;9218:2;9244:53;9289:7;9280:6;9269:9;9265:22;9244:53;:::i;:::-;9234:63;;9189:118;8840:474;;;;;:::o;9320:93::-;9356:7;9396:10;9389:5;9385:22;9374:33;;9320:93;;;:::o;9419:120::-;9491:23;9508:5;9491:23;:::i;:::-;9484:5;9481:34;9471:62;;9529:1;9526;9519:12;9471:62;9419:120;:::o;9545:137::-;9590:5;9628:6;9615:20;9606:29;;9644:32;9670:5;9644:32;:::i;:::-;9545:137;;;;:::o;9688:327::-;9746:6;9795:2;9783:9;9774:7;9770:23;9766:32;9763:119;;;9801:79;;:::i;:::-;9763:119;9921:1;9946:52;9990:7;9981:6;9970:9;9966:22;9946:52;:::i;:::-;9936:62;;9892:116;9688:327;;;;:::o;10021:180::-;10069:77;10066:1;10059:88;10166:4;10163:1;10156:15;10190:4;10187:1;10180:15;10207:320;10251:6;10288:1;10282:4;10278:12;10268:22;;10335:1;10329:4;10325:12;10356:18;10346:81;;10412:4;10404:6;10400:17;10390:27;;10346:81;10474:2;10466:6;10463:14;10443:18;10440:38;10437:84;;10493:18;;:::i;:::-;10437:84;10258:269;10207:320;;;:::o;10533:182::-;10673:34;10669:1;10661:6;10657:14;10650:58;10533:182;:::o;10721:366::-;10863:3;10884:67;10948:2;10943:3;10884:67;:::i;:::-;10877:74;;10960:93;11049:3;10960:93;:::i;:::-;11078:2;11073:3;11069:12;11062:19;;10721:366;;;:::o;11093:419::-;11259:4;11297:2;11286:9;11282:18;11274:26;;11346:9;11340:4;11336:20;11332:1;11321:9;11317:17;11310:47;11374:131;11500:4;11374:131;:::i;:::-;11366:139;;11093:419;;;:::o;11518:167::-;11658:19;11654:1;11646:6;11642:14;11635:43;11518:167;:::o;11691:366::-;11833:3;11854:67;11918:2;11913:3;11854:67;:::i;:::-;11847:74;;11930:93;12019:3;11930:93;:::i;:::-;12048:2;12043:3;12039:12;12032:19;;11691:366;;;:::o;12063:419::-;12229:4;12267:2;12256:9;12252:18;12244:26;;12316:9;12310:4;12306:20;12302:1;12291:9;12287:17;12280:47;12344:131;12470:4;12344:131;:::i;:::-;12336:139;;12063:419;;;:::o;12488:162::-;12628:14;12624:1;12616:6;12612:14;12605:38;12488:162;:::o;12656:366::-;12798:3;12819:67;12883:2;12878:3;12819:67;:::i;:::-;12812:74;;12895:93;12984:3;12895:93;:::i;:::-;13013:2;13008:3;13004:12;12997:19;;12656:366;;;:::o;13028:419::-;13194:4;13232:2;13221:9;13217:18;13209:26;;13281:9;13275:4;13271:20;13267:1;13256:9;13252:17;13245:47;13309:131;13435:4;13309:131;:::i;:::-;13301:139;;13028:419;;;:::o;13453:85::-;13498:7;13527:5;13516:16;;13453:85;;;:::o;13544:158::-;13602:9;13635:61;13653:42;13662:32;13688:5;13662:32;:::i;:::-;13653:42;:::i;:::-;13635:61;:::i;:::-;13622:74;;13544:158;;;:::o;13708:147::-;13803:45;13842:5;13803:45;:::i;:::-;13798:3;13791:58;13708:147;;:::o;13861:807::-;14110:4;14148:3;14137:9;14133:19;14125:27;;14162:71;14230:1;14219:9;14215:17;14206:6;14162:71;:::i;:::-;14243:72;14311:2;14300:9;14296:18;14287:6;14243:72;:::i;:::-;14325:80;14401:2;14390:9;14386:18;14377:6;14325:80;:::i;:::-;14415;14491:2;14480:9;14476:18;14467:6;14415:80;:::i;:::-;14505:73;14573:3;14562:9;14558:19;14549:6;14505:73;:::i;:::-;14588;14656:3;14645:9;14641:19;14632:6;14588:73;:::i;:::-;13861:807;;;;;;;;;:::o;14674:143::-;14731:5;14762:6;14756:13;14747:22;;14778:33;14805:5;14778:33;:::i;:::-;14674:143;;;;:::o;14823:663::-;14911:6;14919;14927;14976:2;14964:9;14955:7;14951:23;14947:32;14944:119;;;14982:79;;:::i;:::-;14944:119;15102:1;15127:64;15183:7;15174:6;15163:9;15159:22;15127:64;:::i;:::-;15117:74;;15073:128;15240:2;15266:64;15322:7;15313:6;15302:9;15298:22;15266:64;:::i;:::-;15256:74;;15211:129;15379:2;15405:64;15461:7;15452:6;15441:9;15437:22;15405:64;:::i;:::-;15395:74;;15350:129;14823:663;;;;;:::o;15492:143::-;15549:5;15580:6;15574:13;15565:22;;15596:33;15623:5;15596:33;:::i;:::-;15492:143;;;;:::o;15641:351::-;15711:6;15760:2;15748:9;15739:7;15735:23;15731:32;15728:119;;;15766:79;;:::i;:::-;15728:119;15886:1;15911:64;15967:7;15958:6;15947:9;15943:22;15911:64;:::i;:::-;15901:74;;15857:128;15641:351;;;;:::o;15998:332::-;16119:4;16157:2;16146:9;16142:18;16134:26;;16170:71;16238:1;16227:9;16223:17;16214:6;16170:71;:::i;:::-;16251:72;16319:2;16308:9;16304:18;16295:6;16251:72;:::i;:::-;15998:332;;;;;:::o;16336:180::-;16476:32;16472:1;16464:6;16460:14;16453:56;16336:180;:::o;16522:366::-;16664:3;16685:67;16749:2;16744:3;16685:67;:::i;:::-;16678:74;;16761:93;16850:3;16761:93;:::i;:::-;16879:2;16874:3;16870:12;16863:19;;16522:366;;;:::o;16894:419::-;17060:4;17098:2;17087:9;17083:18;17075:26;;17147:9;17141:4;17137:20;17133:1;17122:9;17118:17;17111:47;17175:131;17301:4;17175:131;:::i;:::-;17167:139;;16894:419;;;:::o;17319:165::-;17459:17;17455:1;17447:6;17443:14;17436:41;17319:165;:::o;17490:366::-;17632:3;17653:67;17717:2;17712:3;17653:67;:::i;:::-;17646:74;;17729:93;17818:3;17729:93;:::i;:::-;17847:2;17842:3;17838:12;17831:19;;17490:366;;;:::o;17862:419::-;18028:4;18066:2;18055:9;18051:18;18043:26;;18115:9;18109:4;18105:20;18101:1;18090:9;18086:17;18079:47;18143:131;18269:4;18143:131;:::i;:::-;18135:139;;17862:419;;;:::o;18287:332::-;18408:4;18446:2;18435:9;18431:18;18423:26;;18459:71;18527:1;18516:9;18512:17;18503:6;18459:71;:::i;:::-;18540:72;18608:2;18597:9;18593:18;18584:6;18540:72;:::i;:::-;18287:332;;;;;:::o;18625:98::-;18676:6;18710:5;18704:12;18694:22;;18625:98;;;:::o;18729:147::-;18830:11;18867:3;18852:18;;18729:147;;;;:::o;18882:386::-;18986:3;19014:38;19046:5;19014:38;:::i;:::-;19068:88;19149:6;19144:3;19068:88;:::i;:::-;19061:95;;19165:65;19223:6;19218:3;19211:4;19204:5;19200:16;19165:65;:::i;:::-;19255:6;19250:3;19246:16;19239:23;;18990:278;18882:386;;;;:::o;19274:271::-;19404:3;19426:93;19515:3;19506:6;19426:93;:::i;:::-;19419:100;;19536:3;19529:10;;19274:271;;;;:::o;19551:170::-;19691:22;19687:1;19679:6;19675:14;19668:46;19551:170;:::o;19727:366::-;19869:3;19890:67;19954:2;19949:3;19890:67;:::i;:::-;19883:74;;19966:93;20055:3;19966:93;:::i;:::-;20084:2;20079:3;20075:12;20068:19;;19727:366;;;:::o;20099:419::-;20265:4;20303:2;20292:9;20288:18;20280:26;;20352:9;20346:4;20342:20;20338:1;20327:9;20323:17;20316:47;20380:131;20506:4;20380:131;:::i;:::-;20372:139;;20099:419;;;:::o;20524:114::-;;:::o;20644:398::-;20803:3;20824:83;20905:1;20900:3;20824:83;:::i;:::-;20817:90;;20916:93;21005:3;20916:93;:::i;:::-;21034:1;21029:3;21025:11;21018:18;;20644:398;;;:::o;21048:379::-;21232:3;21254:147;21397:3;21254:147;:::i;:::-;21247:154;;21418:3;21411:10;;21048:379;;;:::o;21433:170::-;21573:22;21569:1;21561:6;21557:14;21550:46;21433:170;:::o;21609:366::-;21751:3;21772:67;21836:2;21831:3;21772:67;:::i;:::-;21765:74;;21848:93;21937:3;21848:93;:::i;:::-;21966:2;21961:3;21957:12;21950:19;;21609:366;;;:::o;21981:419::-;22147:4;22185:2;22174:9;22170:18;22162:26;;22234:9;22228:4;22224:20;22220:1;22209:9;22205:17;22198:47;22262:131;22388:4;22262:131;:::i;:::-;22254:139;;21981:419;;;:::o;22406:140::-;22455:9;22488:52;22506:33;22515:23;22532:5;22515:23;:::i;:::-;22506:33;:::i;:::-;22488:52;:::i;:::-;22475:65;;22406:140;;;:::o;22552:129::-;22638:36;22668:5;22638:36;:::i;:::-;22633:3;22626:49;22552:129;;:::o;22687:330::-;22807:4;22845:2;22834:9;22830:18;22822:26;;22858:71;22926:1;22915:9;22911:17;22902:6;22858:71;:::i;:::-;22939;23006:2;22995:9;22991:18;22982:6;22939:71;:::i;:::-;22687:330;;;;;:::o;23023:225::-;23163:34;23159:1;23151:6;23147:14;23140:58;23232:8;23227:2;23219:6;23215:15;23208:33;23023:225;:::o;23254:366::-;23396:3;23417:67;23481:2;23476:3;23417:67;:::i;:::-;23410:74;;23493:93;23582:3;23493:93;:::i;:::-;23611:2;23606:3;23602:12;23595:19;;23254:366;;;:::o;23626:419::-;23792:4;23830:2;23819:9;23815:18;23807:26;;23879:9;23873:4;23869:20;23865:1;23854:9;23850:17;23843:47;23907:131;24033:4;23907:131;:::i;:::-;23899:139;;23626:419;;;:::o;24051:223::-;24191:34;24187:1;24179:6;24175:14;24168:58;24260:6;24255:2;24247:6;24243:15;24236:31;24051:223;:::o;24280:366::-;24422:3;24443:67;24507:2;24502:3;24443:67;:::i;:::-;24436:74;;24519:93;24608:3;24519:93;:::i;:::-;24637:2;24632:3;24628:12;24621:19;;24280:366;;;:::o;24652:419::-;24818:4;24856:2;24845:9;24841:18;24833:26;;24905:9;24899:4;24895:20;24891:1;24880:9;24876:17;24869:47;24933:131;25059:4;24933:131;:::i;:::-;24925:139;;24652:419;;;:::o;25077:221::-;25217:34;25213:1;25205:6;25201:14;25194:58;25286:4;25281:2;25273:6;25269:15;25262:29;25077:221;:::o;25304:366::-;25446:3;25467:67;25531:2;25526:3;25467:67;:::i;:::-;25460:74;;25543:93;25632:3;25543:93;:::i;:::-;25661:2;25656:3;25652:12;25645:19;;25304:366;;;:::o;25676:419::-;25842:4;25880:2;25869:9;25865:18;25857:26;;25929:9;25923:4;25919:20;25915:1;25904:9;25900:17;25893:47;25957:131;26083:4;25957:131;:::i;:::-;25949:139;;25676:419;;;:::o;26101:224::-;26241:34;26237:1;26229:6;26225:14;26218:58;26310:7;26305:2;26297:6;26293:15;26286:32;26101:224;:::o;26331:366::-;26473:3;26494:67;26558:2;26553:3;26494:67;:::i;:::-;26487:74;;26570:93;26659:3;26570:93;:::i;:::-;26688:2;26683:3;26679:12;26672:19;;26331:366;;;:::o;26703:419::-;26869:4;26907:2;26896:9;26892:18;26884:26;;26956:9;26950:4;26946:20;26942:1;26931:9;26927:17;26920:47;26984:131;27110:4;26984:131;:::i;:::-;26976:139;;26703:419;;;:::o;27128:222::-;27268:34;27264:1;27256:6;27252:14;27245:58;27337:5;27332:2;27324:6;27320:15;27313:30;27128:222;:::o;27356:366::-;27498:3;27519:67;27583:2;27578:3;27519:67;:::i;:::-;27512:74;;27595:93;27684:3;27595:93;:::i;:::-;27713:2;27708:3;27704:12;27697:19;;27356:366;;;:::o;27728:419::-;27894:4;27932:2;27921:9;27917:18;27909:26;;27981:9;27975:4;27971:20;27967:1;27956:9;27952:17;27945:47;28009:131;28135:4;28009:131;:::i;:::-;28001:139;;27728:419;;;:::o;28153:228::-;28293:34;28289:1;28281:6;28277:14;28270:58;28362:11;28357:2;28349:6;28345:15;28338:36;28153:228;:::o;28387:366::-;28529:3;28550:67;28614:2;28609:3;28550:67;:::i;:::-;28543:74;;28626:93;28715:3;28626:93;:::i;:::-;28744:2;28739:3;28735:12;28728:19;;28387:366;;;:::o;28759:419::-;28925:4;28963:2;28952:9;28948:18;28940:26;;29012:9;29006:4;29002:20;28998:1;28987:9;28983:17;28976:47;29040:131;29166:4;29040:131;:::i;:::-;29032:139;;28759:419;;;:::o;29184:227::-;29324:34;29320:1;29312:6;29308:14;29301:58;29393:10;29388:2;29380:6;29376:15;29369:35;29184:227;:::o;29417:366::-;29559:3;29580:67;29644:2;29639:3;29580:67;:::i;:::-;29573:74;;29656:93;29745:3;29656:93;:::i;:::-;29774:2;29769:3;29765:12;29758:19;;29417:366;;;:::o;29789:419::-;29955:4;29993:2;29982:9;29978:18;29970:26;;30042:9;30036:4;30032:20;30028:1;30017:9;30013:17;30006:47;30070:131;30196:4;30070:131;:::i;:::-;30062:139;;29789:419;;;:::o;30214:177::-;30354:29;30350:1;30342:6;30338:14;30331:53;30214:177;:::o;30397:366::-;30539:3;30560:67;30624:2;30619:3;30560:67;:::i;:::-;30553:74;;30636:93;30725:3;30636:93;:::i;:::-;30754:2;30749:3;30745:12;30738:19;;30397:366;;;:::o;30769:419::-;30935:4;30973:2;30962:9;30958:18;30950:26;;31022:9;31016:4;31012:20;31008:1;30997:9;30993:17;30986:47;31050:131;31176:4;31050:131;:::i;:::-;31042:139;;30769:419;;;:::o;31194:180::-;31242:77;31239:1;31232:88;31339:4;31336:1;31329:15;31363:4;31360:1;31353:15;31380:194;31420:4;31440:20;31458:1;31440:20;:::i;:::-;31435:25;;31474:20;31492:1;31474:20;:::i;:::-;31469:25;;31518:1;31515;31511:9;31503:17;;31542:1;31536:4;31533:11;31530:37;;;31547:18;;:::i;:::-;31530:37;31380:194;;;;:::o;31580:191::-;31620:3;31639:20;31657:1;31639:20;:::i;:::-;31634:25;;31673:20;31691:1;31673:20;:::i;:::-;31668:25;;31716:1;31713;31709:9;31702:16;;31737:3;31734:1;31731:10;31728:36;;;31744:18;;:::i;:::-;31728:36;31580:191;;;;:::o;31777:177::-;31917:29;31913:1;31905:6;31901:14;31894:53;31777:177;:::o;31960:366::-;32102:3;32123:67;32187:2;32182:3;32123:67;:::i;:::-;32116:74;;32199:93;32288:3;32199:93;:::i;:::-;32317:2;32312:3;32308:12;32301:19;;31960:366;;;:::o;32332:419::-;32498:4;32536:2;32525:9;32521:18;32513:26;;32585:9;32579:4;32575:20;32571:1;32560:9;32556:17;32549:47;32613:131;32739:4;32613:131;:::i;:::-;32605:139;;32332:419;;;:::o;32757:180::-;32805:77;32802:1;32795:88;32902:4;32899:1;32892:15;32926:4;32923:1;32916:15;32943:180;32991:77;32988:1;32981:88;33088:4;33085:1;33078:15;33112:4;33109:1;33102:15;33129:114;33196:6;33230:5;33224:12;33214:22;;33129:114;;;:::o;33249:184::-;33348:11;33382:6;33377:3;33370:19;33422:4;33417:3;33413:14;33398:29;;33249:184;;;;:::o;33439:132::-;33506:4;33529:3;33521:11;;33559:4;33554:3;33550:14;33542:22;;33439:132;;;:::o;33577:108::-;33654:24;33672:5;33654:24;:::i;:::-;33649:3;33642:37;33577:108;;:::o;33691:179::-;33760:10;33781:46;33823:3;33815:6;33781:46;:::i;:::-;33859:4;33854:3;33850:14;33836:28;;33691:179;;;;:::o;33876:113::-;33946:4;33978;33973:3;33969:14;33961:22;;33876:113;;;:::o;34025:732::-;34144:3;34173:54;34221:5;34173:54;:::i;:::-;34243:86;34322:6;34317:3;34243:86;:::i;:::-;34236:93;;34353:56;34403:5;34353:56;:::i;:::-;34432:7;34463:1;34448:284;34473:6;34470:1;34467:13;34448:284;;;34549:6;34543:13;34576:63;34635:3;34620:13;34576:63;:::i;:::-;34569:70;;34662:60;34715:6;34662:60;:::i;:::-;34652:70;;34508:224;34495:1;34492;34488:9;34483:14;;34448:284;;;34452:14;34748:3;34741:10;;34149:608;;;34025:732;;;;:::o;34763:831::-;35026:4;35064:3;35053:9;35049:19;35041:27;;35078:71;35146:1;35135:9;35131:17;35122:6;35078:71;:::i;:::-;35159:80;35235:2;35224:9;35220:18;35211:6;35159:80;:::i;:::-;35286:9;35280:4;35276:20;35271:2;35260:9;35256:18;35249:48;35314:108;35417:4;35408:6;35314:108;:::i;:::-;35306:116;;35432:72;35500:2;35489:9;35485:18;35476:6;35432:72;:::i;:::-;35514:73;35582:3;35571:9;35567:19;35558:6;35514:73;:::i;:::-;34763:831;;;;;;;;:::o;35600:483::-;35771:4;35809:2;35798:9;35794:18;35786:26;;35822:71;35890:1;35879:9;35875:17;35866:6;35822:71;:::i;:::-;35940:9;35934:4;35930:20;35925:2;35914:9;35910:18;35903:48;35968:108;36071:4;36062:6;35968:108;:::i;:::-;35960:116;;35600:483;;;;;:::o;36089:410::-;36129:7;36152:20;36170:1;36152:20;:::i;:::-;36147:25;;36186:20;36204:1;36186:20;:::i;:::-;36181:25;;36241:1;36238;36234:9;36263:30;36281:11;36263:30;:::i;:::-;36252:41;;36442:1;36433:7;36429:15;36426:1;36423:22;36403:1;36396:9;36376:83;36353:139;;36472:18;;:::i;:::-;36353:139;36137:362;36089:410;;;;:::o;36505:180::-;36553:77;36550:1;36543:88;36650:4;36647:1;36640:15;36674:4;36671:1;36664:15;36691:185;36731:1;36748:20;36766:1;36748:20;:::i;:::-;36743:25;;36782:20;36800:1;36782:20;:::i;:::-;36777:25;;36821:1;36811:35;;36826:18;;:::i;:::-;36811:35;36868:1;36865;36861:9;36856:14;;36691:185;;;;:::o;36882:220::-;37022:34;37018:1;37010:6;37006:14;36999:58;37091:3;37086:2;37078:6;37074:15;37067:28;36882:220;:::o;37108:366::-;37250:3;37271:67;37335:2;37330:3;37271:67;:::i;:::-;37264:74;;37347:93;37436:3;37347:93;:::i;:::-;37465:2;37460:3;37456:12;37449:19;;37108:366;;;:::o;37480:419::-;37646:4;37684:2;37673:9;37669:18;37661:26;;37733:9;37727:4;37723:20;37719:1;37708:9;37704:17;37697:47;37761:131;37887:4;37761:131;:::i;:::-;37753:139;;37480:419;;;:::o

Swarm Source

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