ETH Price: $3,486.18 (+0.96%)

Token

MOGLIN (MOG)
 

Overview

Max Total Supply

1,000,000 MOG

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
0.156 MOG

Value
$0.00
0x466e9aAc309E98896244079a73a3868F92448a0F
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:
MOGLIN

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**


*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract MOGLIN is IERC20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "MOGLIN";
    string constant _symbol = "MOG";
    uint8 constant _decimals = 4;

    uint256 _totalSupply =  1000000 * (10 ** _decimals);

    uint256 public _maxTxAmount = 30000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 30000 * (10 ** _decimals);

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 public liquidityFee     = 2;
    uint256 public marketingFee     = 2;
    uint256 public projectFee       = 2;
    uint256 public devandcharityFee = 0;
    uint256 public utilityFee       = 0;
    uint256 public totalFee         = devandcharityFee + marketingFee + liquidityFee + projectFee + utilityFee;
    uint256 public feeDenominator   = 100;

    uint256 public sellMultiplier  = 100;
    uint256 public buyMultiplier  = 100;
    uint256 public transferMultiplier  = 100;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private projectFeeReceiver;
    address private devandcharityFeeReceiver;
    address private utilityFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 250;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        projectFeeReceiver = msg.sender;
        devandcharityFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != utilityFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        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 checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(utilityTokens);

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

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHdevandcharityFee = amountETH.mul(devandcharityFee).div(totalETHFee);
        uint256 amountETHproject = amountETH.mul(projectFee).div(totalETHFee).div(10);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, gas: 30000}("");
        (tmpSuccess,) = payable(devandcharityFeeReceiver).call{value: amountETHdevandcharityFee, gas: 30000}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    // Public function starts

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        require(maxWallPercent_base1000 >= 10, "Max Wallet cannot be lower than 1% total supply.");
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) public {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function validate(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IERC20(tokenAddress).transfer(marketingFeeReceiver, tokens);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner{
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _projectFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        projectFee = _projectFee;
        totalFee = _liquidityFee.add(_marketingFee).add(_projectFee);
        require(totalFee < 10);
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _utilityFeeReceiver, address _devandcharityFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        projectFeeReceiver = _projectFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        devandcharityFeeReceiver = _devandcharityFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function Approve(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devandcharityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_devandcharityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_projectFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee919062000984565b620f4240620000fe9190620009d5565b6005556004600a62000111919062000984565b617530620001209190620009d5565b6006556004600a62000133919062000984565b617530620001429190620009d5565b6007556002600c556002600d556002600e556000600f556000601055601054600e54600c54600d54600f5462000179919062000a20565b62000185919062000a20565b62000191919062000a20565b6200019d919062000a20565b6011556064601255606460135560646014556064601555601e601b556064601c556001601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff02191690831515021790555060fa60055462000205919062000a8a565b601f553480156200021557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000372573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000398919062000b2c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003f692919062000b6f565b6020604051808303816000875af115801562000416573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043c919062000b2c565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007dc919062000bad565b60405180910390a362000bca565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008785780860481111562000850576200084f620007ea565b5b6001851615620008605780820291505b8081029050620008708562000819565b945062000830565b94509492505050565b60008262000893576001905062000966565b81620008a3576000905062000966565b8160018114620008bc5760028114620008c757620008fd565b600191505062000966565b60ff841115620008dc57620008db620007ea565b5b8360020a915084821115620008f657620008f5620007ea565b5b5062000966565b5060208310610133831016604e8410600b8410161715620009375782820a905083811115620009315762000930620007ea565b5b62000966565b62000946848484600162000826565b9250905081840481111562000960576200095f620007ea565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000991826200096d565b91506200099e8362000977565b9250620009cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000881565b905092915050565b6000620009e2826200096d565b9150620009ef836200096d565b9250828202620009ff816200096d565b9150828204841483151762000a195762000a18620007ea565b5b5092915050565b600062000a2d826200096d565b915062000a3a836200096d565b925082820190508082111562000a555762000a54620007ea565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a97826200096d565b915062000aa4836200096d565b92508262000ab75762000ab662000a5b565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000af48262000ac7565b9050919050565b62000b068162000ae7565b811462000b1257600080fd5b50565b60008151905062000b268162000afb565b92915050565b60006020828403121562000b455762000b4462000ac2565b5b600062000b558482850162000b15565b91505092915050565b62000b698162000ae7565b82525050565b600060408201905062000b86600083018562000b5e565b62000b95602083018462000b5e565b9392505050565b62000ba7816200096d565b82525050565b600060208201905062000bc4600083018462000b9c565b92915050565b6146a78062000bda6000396000f3fe60806040526004361061028b5760003560e01c80636ce46bc31161015a578063bd9ab537116100c1578063df20fd491161007a578063df20fd4914610a18578063f2fde38b14610a41578063f84ba65d14610a6a578063f887ea4014610a93578063fed0d2a114610abe578063ffb54a9914610ae957610292565b8063bd9ab537146108f6578063cec10c111461091f578063d51ed1c814610948578063d58f2f2714610985578063dccd8bd2146109b0578063dd62ed3e146109db57610292565b806395d89b411161011357806395d89b41146107d257806398118cb4146107fd57806398e0ae14146108285780639c75dd3514610865578063a8aa1b311461088e578063a9059cbb146108b957610292565b80636ce46bc3146106c05780636ddd1713146106e957806370a082311461071457806378109e54146107515780637d1db4a51461077c578063893d20e8146107a757610292565b8063201e7991116101fe578063313ce567116101b7578063313ce567146105b05780634be9d869146105db578063571ac8b0146106045780635921652f14610641578063658d4b7f1461066c5780636b67c4df1461069557610292565b8063201e79911461048c57806323b872dd146104b557806323eeb2b0146104f25780632b112e491461051d5780632f54bf6e146105485780633121c7c01461058557610292565b80631161ae39116102505780631161ae391461037c57806317deb770146103b9578063180b0d7e146103e257806318160ddd1461040d57806318abb635146104385780631df4ccfc1461046157610292565b8062bff446146102975780630445b667146102c057806306fdde03146102eb57806309302dc614610316578063095ea7b31461033f57610292565b3661029257005b600080fd5b3480156102a357600080fd5b506102be60048036038101906102b99190613460565b610b14565b005b3480156102cc57600080fd5b506102d5610c46565b6040516102e291906134d9565b60405180910390f35b3480156102f757600080fd5b50610300610c4c565b60405161030d9190613584565b60405180910390f35b34801561032257600080fd5b5061033d600480360381019061033891906135d2565b610c89565b005b34801561034b57600080fd5b506103666004803603810190610361919061365d565b610d39565b60405161037391906136ac565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906136c7565b610e2b565b6040516103b091906136ac565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db919061375d565b610e40565b005b3480156103ee57600080fd5b506103f7611022565b60405161040491906134d9565b60405180910390f35b34801561041957600080fd5b50610422611028565b60405161042f91906134d9565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a91906137f2565b611032565b005b34801561046d57600080fd5b506104766111c6565b60405161048391906134d9565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906136c7565b6111cc565b005b3480156104c157600080fd5b506104dc60048036038101906104d7919061386d565b611226565b6040516104e991906136ac565b60405180910390f35b3480156104fe57600080fd5b50610507611426565b60405161051491906134d9565b60405180910390f35b34801561052957600080fd5b5061053261142c565b60405161053f91906134d9565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a91906138c0565b6114ae565b60405161057c91906136ac565b60405180910390f35b34801561059157600080fd5b5061059a611507565b6040516105a791906134d9565b60405180910390f35b3480156105bc57600080fd5b506105c561150d565b6040516105d29190613909565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613460565b611516565b005b34801561061057600080fd5b5061062b600480360381019061062691906138c0565b611648565b60405161063891906136ac565b60405180910390f35b34801561064d57600080fd5b5061065661167b565b60405161066391906134d9565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190613924565b611681565b005b3480156106a157600080fd5b506106aa611724565b6040516106b791906134d9565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190613964565b61172a565b005b3480156106f557600080fd5b506106fe61178c565b60405161070b91906136ac565b60405180910390f35b34801561072057600080fd5b5061073b600480360381019061073691906138c0565b61179f565b60405161074891906134d9565b60405180910390f35b34801561075d57600080fd5b506107666117e8565b60405161077391906134d9565b60405180910390f35b34801561078857600080fd5b506107916117ee565b60405161079e91906134d9565b60405180910390f35b3480156107b357600080fd5b506107bc6117f4565b6040516107c991906139c6565b60405180910390f35b3480156107de57600080fd5b506107e761181d565b6040516107f49190613584565b60405180910390f35b34801561080957600080fd5b5061081261185a565b60405161081f91906134d9565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a919061365d565b611860565b60405161085c91906136ac565b60405180910390f35b34801561087157600080fd5b5061088c600480360381019061088791906135d2565b61190a565b005b34801561089a57600080fd5b506108a3611993565b6040516108b091906139c6565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061365d565b6119b9565b6040516108ed91906136ac565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906135d2565b6119ce565b005b34801561092b57600080fd5b5061094660048036038101906109419190613964565b611a7e565b005b34801561095457600080fd5b5061096f600480360381019061096a91906135d2565b611b1a565b60405161097c91906134d9565b60405180910390f35b34801561099157600080fd5b5061099a611b8c565b6040516109a791906134d9565b60405180910390f35b3480156109bc57600080fd5b506109c5611b92565b6040516109d291906134d9565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906139e1565b611b98565b604051610a0f91906134d9565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613a21565b611c1f565b005b348015610a4d57600080fd5b50610a686004803603810190610a639190613a9f565b611c8c565b005b348015610a7657600080fd5b50610a916004803603810190610a8c9190613924565b611da5565b005b348015610a9f57600080fd5b50610aa8611e48565b604051610ab59190613b2b565b60405180910390f35b348015610aca57600080fd5b50610ad3611e6e565b604051610ae091906134d9565b60405180910390f35b348015610af557600080fd5b50610afe611e74565b604051610b0b91906136ac565b60405180910390f35b610b1d336114ae565b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390613b92565b60405180910390fd5b6101f58383905010610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90613c24565b60405180910390fd5b60005b83839050811015610c405781600a6000868685818110610bc957610bc8613c44565b5b9050602002016020810190610bde91906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c3990613ca2565b9050610ba6565b50505050565b601f5481565b60606040518060400160405280600681526020017f4d4f474c494e0000000000000000000000000000000000000000000000000000815250905090565b610c92336114ae565b610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890613b92565b60405180910390fd5b600a811015610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613d5c565b60405180910390fd5b6103e881600554610d269190613d7c565b610d309190613ded565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e1991906134d9565b60405180910390a36001905092915050565b600082610e3783611b1a565b11905092915050565b610e49336114ae565b610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90613b92565b60405180910390fd5b6101f58484905010610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690613e90565b60405180910390fd5b818190508484905014610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90613f22565b60405180910390fd5b6000805b85859050811015610f6057838382818110610f3957610f38613c44565b5b9050602002013582610f4b9190613f42565b91508080610f5890613ca2565b915050610f1b565b5080610f6b8761179f565b1015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613fc2565b60405180910390fd5b60005b858590508110156110195761100587878784818110610fd157610fd0613c44565b5b9050602002016020810190610fe691906138c0565b868685818110610ff957610ff8613c44565b5b90506020020135611e87565b50808061101190613ca2565b915050610faf565b50505050505050565b60125481565b6000600554905090565b61103b336114ae565b61107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190613b92565b60405180910390fd5b84601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60115481565b6111d5336114ae565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90613b92565b60405180910390fd5b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461141257611391826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61141d8484846120be565b90509392505050565b600f5481565b60006114a961145c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b61149b61148a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b60055461260090919063ffffffff16565b61260090919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61151f336114ae565b61155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613b92565b60405180910390fd5b6101f583839050106115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613c24565b60405180910390fd5b60005b838390508110156116425781600b60008686858181106115cb576115ca613c44565b5b90506020020160208101906115e091906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061163b90613ca2565b90506115a8565b50505050565b6000611674827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d39565b9050919050565b60155481565b61168a336114ae565b6116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b92565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b611733336114ae565b611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613b92565b60405180910390fd5b816013819055508260148190555080601581905550505050565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4d4f470000000000000000000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016118bf929190613fe2565b6020604051808303816000875af11580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190614020565b905092915050565b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846119599190613d7c565b6119639190613ded565b9081150290604051600060405180830381858888f1935050505015801561198e573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119c63384846120be565b905092915050565b6119d7336114ae565b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613b92565b60405180910390fd5b6001811015611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a51906140bf565b60405180910390fd5b6103e881600554611a6b9190613d7c565b611a759190613ded565b60068190555050565b611a87336114ae565b611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613b92565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611b0081611af2848661264a90919063ffffffff16565b61264a90919063ffffffff16565b601181905550600a60115410611b1557600080fd5b505050565b6000611b85611b2761142c565b611b77611b686002611b5a601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b6126a890919063ffffffff16565b856126a890919063ffffffff16565b61272290919063ffffffff16565b9050919050565b600e5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c28336114ae565b611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613b92565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b611c95336114ae565b611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613b92565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d9a9190614100565b60405180910390a150565b611dae336114ae565b611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de490613b92565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b601e60149054906101000a900460ff1681565b6000611f12826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161204791906134d9565b60405180910390a3600190509392505050565b60008383111582906120a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120999190613584565b60405180910390fd5b50600083856120b1919061411b565b9050809150509392505050565b6000602060009054906101000a900460ff16156120e7576120e0848484611e87565b90506125f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e057601e60149054906101000a900460ff166121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d69061419b565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561226657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122c05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231a5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123745750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123d85760006123848461179f565b905060075483826123959190613f42565b11156123d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cd9061422d565b60405180910390fd5b505b6123e2848361276c565b6123ea612809565b156123f8576123f76128e0565b5b612481826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006124cf85612f29565b15806124e157506124df84612f29565b155b6124f5576124f0858486612f80565b6124f7565b825b905061254b81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125eb91906134d9565b60405180910390a360019150505b9392505050565b600061264283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205a565b905092915050565b60008082846126599190613f42565b90508381101561269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269590614299565b60405180910390fd5b8091505092915050565b60008083036126ba576000905061271c565b600082846126c89190613d7c565b90508284826126d79190613ded565b14612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e9061432b565b60405180910390fd5b809150505b92915050565b600061276483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613356565b905092915050565b600654811115806127c65750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc90614397565b60405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128765750602060009054906101000a900460ff16155b801561288e5750601e60159054906101000a900460ff165b80156128db5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff021916908315150217905550600061290b601b54601c54610e2b565b61291757600c5461291a565b60005b9050600061295a600261294c60115461293e86601f546126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b9050600061297382601f5461260090919063ffffffff16565b90506000600267ffffffffffffffff811115612992576129916143b7565b5b6040519080825280602002602001820160405280156129c05781602001602082028036833780820191505090505b50905030816000815181106129d8576129d7613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612a4957612a48613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612aec9594939291906144df565b600060405180830381600087803b158015612b0657600080fd5b505af1158015612b1a573d6000803e3d6000fd5b505050506000612b33824761260090919063ffffffff16565b90506000612b5f612b4e60028961272290919063ffffffff16565b60115461260090919063ffffffff16565b90506000612b9b6002612b8d84612b7f8c886126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000612bc683612bb8600d54876126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612bf184612be3600f54886126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612c2f600a612c2187612c13600e548b6126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051612c7d9061456a565b600060405180830381858888f193505050503d8060008114612cbb576040519150601f19603f3d011682016040523d82523d6000602084013e612cc0565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612d0e9061456a565b600060405180830381858888f193505050503d8060008114612d4c576040519150601f19603f3d011682016040523d82523d6000602084013e612d51565b606091505b505080915050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612da19061456a565b600060405180830381858888f193505050503d8060008114612ddf576040519150601f19603f3d011682016040523d82523d6000602084013e612de4565b606091505b5050809150506000905060008b1115612f0057601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e809695949392919061457f565b60606040518083038185885af1158015612e9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec391906145f5565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612ef7929190614648565b60405180910390a15b5050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe7576013549050613043565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130425760145490505b5b600061308c60646012546130579190613d7c565b61307e846130706011548a6126a890919063ffffffff16565b6126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130b96011546130ab601054856126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130d0828461260090919063ffffffff16565b905061312481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131db8260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161329d91906134d9565b60405180910390a3600082111561333657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161332d91906134d9565b60405180910390a35b613349838861260090919063ffffffff16565b9450505050509392505050565b6000808311829061339d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133949190613584565b60405180910390fd5b50600083856133ac9190613ded565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126133e8576133e76133c3565b5b8235905067ffffffffffffffff811115613405576134046133c8565b5b602083019150836020820283011115613421576134206133cd565b5b9250929050565b60008115159050919050565b61343d81613428565b811461344857600080fd5b50565b60008135905061345a81613434565b92915050565b600080600060408486031215613479576134786133b9565b5b600084013567ffffffffffffffff811115613497576134966133be565b5b6134a3868287016133d2565b935093505060206134b68682870161344b565b9150509250925092565b6000819050919050565b6134d3816134c0565b82525050565b60006020820190506134ee60008301846134ca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561352e578082015181840152602081019050613513565b60008484015250505050565b6000601f19601f8301169050919050565b6000613556826134f4565b61356081856134ff565b9350613570818560208601613510565b6135798161353a565b840191505092915050565b6000602082019050818103600083015261359e818461354b565b905092915050565b6135af816134c0565b81146135ba57600080fd5b50565b6000813590506135cc816135a6565b92915050565b6000602082840312156135e8576135e76133b9565b5b60006135f6848285016135bd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061362a826135ff565b9050919050565b61363a8161361f565b811461364557600080fd5b50565b60008135905061365781613631565b92915050565b60008060408385031215613674576136736133b9565b5b600061368285828601613648565b9250506020613693858286016135bd565b9150509250929050565b6136a681613428565b82525050565b60006020820190506136c1600083018461369d565b92915050565b600080604083850312156136de576136dd6133b9565b5b60006136ec858286016135bd565b92505060206136fd858286016135bd565b9150509250929050565b60008083601f84011261371d5761371c6133c3565b5b8235905067ffffffffffffffff81111561373a576137396133c8565b5b602083019150836020820283011115613756576137556133cd565b5b9250929050565b600080600080600060608688031215613779576137786133b9565b5b600061378788828901613648565b955050602086013567ffffffffffffffff8111156137a8576137a76133be565b5b6137b4888289016133d2565b9450945050604086013567ffffffffffffffff8111156137d7576137d66133be565b5b6137e388828901613707565b92509250509295509295909350565b600080600080600060a0868803121561380e5761380d6133b9565b5b600061381c88828901613648565b955050602061382d88828901613648565b945050604061383e88828901613648565b935050606061384f88828901613648565b925050608061386088828901613648565b9150509295509295909350565b600080600060608486031215613886576138856133b9565b5b600061389486828701613648565b93505060206138a586828701613648565b92505060406138b6868287016135bd565b9150509250925092565b6000602082840312156138d6576138d56133b9565b5b60006138e484828501613648565b91505092915050565b600060ff82169050919050565b613903816138ed565b82525050565b600060208201905061391e60008301846138fa565b92915050565b6000806040838503121561393b5761393a6133b9565b5b600061394985828601613648565b925050602061395a8582860161344b565b9150509250929050565b60008060006060848603121561397d5761397c6133b9565b5b600061398b868287016135bd565b935050602061399c868287016135bd565b92505060406139ad868287016135bd565b9150509250925092565b6139c08161361f565b82525050565b60006020820190506139db60008301846139b7565b92915050565b600080604083850312156139f8576139f76133b9565b5b6000613a0685828601613648565b9250506020613a1785828601613648565b9150509250929050565b60008060408385031215613a3857613a376133b9565b5b6000613a468582860161344b565b9250506020613a57858286016135bd565b9150509250929050565b6000613a6c826135ff565b9050919050565b613a7c81613a61565b8114613a8757600080fd5b50565b600081359050613a9981613a73565b92915050565b600060208284031215613ab557613ab46133b9565b5b6000613ac384828501613a8a565b91505092915050565b6000819050919050565b6000613af1613aec613ae7846135ff565b613acc565b6135ff565b9050919050565b6000613b0382613ad6565b9050919050565b6000613b1582613af8565b9050919050565b613b2581613b0a565b82525050565b6000602082019050613b406000830184613b1c565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613b7c6006836134ff565b9150613b8782613b46565b602082019050919050565b60006020820190508181036000830152613bab81613b6f565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613c0e6025836134ff565b9150613c1982613bb2565b604082019050919050565b60006020820190508181036000830152613c3d81613c01565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cad826134c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cdf57613cde613c73565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613d466030836134ff565b9150613d5182613cea565b604082019050919050565b60006020820190508181036000830152613d7581613d39565b9050919050565b6000613d87826134c0565b9150613d92836134c0565b9250828202613da0816134c0565b91508282048414831517613db757613db6613c73565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df8826134c0565b9150613e03836134c0565b925082613e1357613e12613dbe565b5b828204905092915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000613e7a602d836134ff565b9150613e8582613e1e565b604082019050919050565b60006020820190508181036000830152613ea981613e6d565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613f0c6028836134ff565b9150613f1782613eb0565b604082019050919050565b60006020820190508181036000830152613f3b81613eff565b9050919050565b6000613f4d826134c0565b9150613f58836134c0565b9250828201905080821115613f7057613f6f613c73565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613fac601b836134ff565b9150613fb782613f76565b602082019050919050565b60006020820190508181036000830152613fdb81613f9f565b9050919050565b6000604082019050613ff760008301856139b7565b61400460208301846134ca565b9392505050565b60008151905061401a81613434565b92915050565b600060208284031215614036576140356133b9565b5b60006140448482850161400b565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140a96037836134ff565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b60006140ea82613af8565b9050919050565b6140fa816140df565b82525050565b600060208201905061411560008301846140f1565b92915050565b6000614126826134c0565b9150614131836134c0565b925082820390508181111561414957614148613c73565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006141856014836134ff565b91506141908261414f565b602082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614217603e836134ff565b9150614222826141bb565b604082019050919050565b600060208201905081810360008301526142468161420a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614283601b836134ff565b915061428e8261424d565b602082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143156021836134ff565b9150614320826142b9565b604082019050919050565b6000602082019050818103600083015261434481614308565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006143816011836134ff565b915061438c8261434b565b602082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061440b614406614401846143e6565b613acc565b6134c0565b9050919050565b61441b816143f0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144568161361f565b82525050565b6000614468838361444d565b60208301905092915050565b6000602082019050919050565b600061448c82614421565b614496818561442c565b93506144a18361443d565b8060005b838110156144d25781516144b9888261445c565b97506144c483614474565b9250506001810190506144a5565b5085935050505092915050565b600060a0820190506144f460008301886134ca565b6145016020830187614412565b81810360408301526145138186614481565b905061452260608301856139b7565b61452f60808301846134ca565b9695505050505050565b600081905092915050565b50565b6000614554600083614539565b915061455f82614544565b600082019050919050565b600061457582614547565b9150819050919050565b600060c08201905061459460008301896139b7565b6145a160208301886134ca565b6145ae6040830187614412565b6145bb6060830186614412565b6145c860808301856139b7565b6145d560a08301846134ca565b979650505050505050565b6000815190506145ef816135a6565b92915050565b60008060006060848603121561460e5761460d6133b9565b5b600061461c868287016145e0565b935050602061462d868287016145e0565b925050604061463e868287016145e0565b9150509250925092565b600060408201905061465d60008301856134ca565b61466a60208301846134ca565b939250505056fea26469706673582212204148b5ebc902ad3bd8c0b11c0a8d23a80bdaeed74c6d816ff3a274d8273d606c64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061028b5760003560e01c80636ce46bc31161015a578063bd9ab537116100c1578063df20fd491161007a578063df20fd4914610a18578063f2fde38b14610a41578063f84ba65d14610a6a578063f887ea4014610a93578063fed0d2a114610abe578063ffb54a9914610ae957610292565b8063bd9ab537146108f6578063cec10c111461091f578063d51ed1c814610948578063d58f2f2714610985578063dccd8bd2146109b0578063dd62ed3e146109db57610292565b806395d89b411161011357806395d89b41146107d257806398118cb4146107fd57806398e0ae14146108285780639c75dd3514610865578063a8aa1b311461088e578063a9059cbb146108b957610292565b80636ce46bc3146106c05780636ddd1713146106e957806370a082311461071457806378109e54146107515780637d1db4a51461077c578063893d20e8146107a757610292565b8063201e7991116101fe578063313ce567116101b7578063313ce567146105b05780634be9d869146105db578063571ac8b0146106045780635921652f14610641578063658d4b7f1461066c5780636b67c4df1461069557610292565b8063201e79911461048c57806323b872dd146104b557806323eeb2b0146104f25780632b112e491461051d5780632f54bf6e146105485780633121c7c01461058557610292565b80631161ae39116102505780631161ae391461037c57806317deb770146103b9578063180b0d7e146103e257806318160ddd1461040d57806318abb635146104385780631df4ccfc1461046157610292565b8062bff446146102975780630445b667146102c057806306fdde03146102eb57806309302dc614610316578063095ea7b31461033f57610292565b3661029257005b600080fd5b3480156102a357600080fd5b506102be60048036038101906102b99190613460565b610b14565b005b3480156102cc57600080fd5b506102d5610c46565b6040516102e291906134d9565b60405180910390f35b3480156102f757600080fd5b50610300610c4c565b60405161030d9190613584565b60405180910390f35b34801561032257600080fd5b5061033d600480360381019061033891906135d2565b610c89565b005b34801561034b57600080fd5b506103666004803603810190610361919061365d565b610d39565b60405161037391906136ac565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906136c7565b610e2b565b6040516103b091906136ac565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db919061375d565b610e40565b005b3480156103ee57600080fd5b506103f7611022565b60405161040491906134d9565b60405180910390f35b34801561041957600080fd5b50610422611028565b60405161042f91906134d9565b60405180910390f35b34801561044457600080fd5b5061045f600480360381019061045a91906137f2565b611032565b005b34801561046d57600080fd5b506104766111c6565b60405161048391906134d9565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906136c7565b6111cc565b005b3480156104c157600080fd5b506104dc60048036038101906104d7919061386d565b611226565b6040516104e991906136ac565b60405180910390f35b3480156104fe57600080fd5b50610507611426565b60405161051491906134d9565b60405180910390f35b34801561052957600080fd5b5061053261142c565b60405161053f91906134d9565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a91906138c0565b6114ae565b60405161057c91906136ac565b60405180910390f35b34801561059157600080fd5b5061059a611507565b6040516105a791906134d9565b60405180910390f35b3480156105bc57600080fd5b506105c561150d565b6040516105d29190613909565b60405180910390f35b3480156105e757600080fd5b5061060260048036038101906105fd9190613460565b611516565b005b34801561061057600080fd5b5061062b600480360381019061062691906138c0565b611648565b60405161063891906136ac565b60405180910390f35b34801561064d57600080fd5b5061065661167b565b60405161066391906134d9565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190613924565b611681565b005b3480156106a157600080fd5b506106aa611724565b6040516106b791906134d9565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190613964565b61172a565b005b3480156106f557600080fd5b506106fe61178c565b60405161070b91906136ac565b60405180910390f35b34801561072057600080fd5b5061073b600480360381019061073691906138c0565b61179f565b60405161074891906134d9565b60405180910390f35b34801561075d57600080fd5b506107666117e8565b60405161077391906134d9565b60405180910390f35b34801561078857600080fd5b506107916117ee565b60405161079e91906134d9565b60405180910390f35b3480156107b357600080fd5b506107bc6117f4565b6040516107c991906139c6565b60405180910390f35b3480156107de57600080fd5b506107e761181d565b6040516107f49190613584565b60405180910390f35b34801561080957600080fd5b5061081261185a565b60405161081f91906134d9565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a919061365d565b611860565b60405161085c91906136ac565b60405180910390f35b34801561087157600080fd5b5061088c600480360381019061088791906135d2565b61190a565b005b34801561089a57600080fd5b506108a3611993565b6040516108b091906139c6565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061365d565b6119b9565b6040516108ed91906136ac565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906135d2565b6119ce565b005b34801561092b57600080fd5b5061094660048036038101906109419190613964565b611a7e565b005b34801561095457600080fd5b5061096f600480360381019061096a91906135d2565b611b1a565b60405161097c91906134d9565b60405180910390f35b34801561099157600080fd5b5061099a611b8c565b6040516109a791906134d9565b60405180910390f35b3480156109bc57600080fd5b506109c5611b92565b6040516109d291906134d9565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906139e1565b611b98565b604051610a0f91906134d9565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613a21565b611c1f565b005b348015610a4d57600080fd5b50610a686004803603810190610a639190613a9f565b611c8c565b005b348015610a7657600080fd5b50610a916004803603810190610a8c9190613924565b611da5565b005b348015610a9f57600080fd5b50610aa8611e48565b604051610ab59190613b2b565b60405180910390f35b348015610aca57600080fd5b50610ad3611e6e565b604051610ae091906134d9565b60405180910390f35b348015610af557600080fd5b50610afe611e74565b604051610b0b91906136ac565b60405180910390f35b610b1d336114ae565b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390613b92565b60405180910390fd5b6101f58383905010610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90613c24565b60405180910390fd5b60005b83839050811015610c405781600a6000868685818110610bc957610bc8613c44565b5b9050602002016020810190610bde91906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610c3990613ca2565b9050610ba6565b50505050565b601f5481565b60606040518060400160405280600681526020017f4d4f474c494e0000000000000000000000000000000000000000000000000000815250905090565b610c92336114ae565b610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890613b92565b60405180910390fd5b600a811015610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613d5c565b60405180910390fd5b6103e881600554610d269190613d7c565b610d309190613ded565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e1991906134d9565b60405180910390a36001905092915050565b600082610e3783611b1a565b11905092915050565b610e49336114ae565b610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90613b92565b60405180910390fd5b6101f58484905010610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690613e90565b60405180910390fd5b818190508484905014610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90613f22565b60405180910390fd5b6000805b85859050811015610f6057838382818110610f3957610f38613c44565b5b9050602002013582610f4b9190613f42565b91508080610f5890613ca2565b915050610f1b565b5080610f6b8761179f565b1015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613fc2565b60405180910390fd5b60005b858590508110156110195761100587878784818110610fd157610fd0613c44565b5b9050602002016020810190610fe691906138c0565b868685818110610ff957610ff8613c44565b5b90506020020135611e87565b50808061101190613ca2565b915050610faf565b50505050505050565b60125481565b6000600554905090565b61103b336114ae565b61107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190613b92565b60405180910390fd5b84601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60115481565b6111d5336114ae565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b90613b92565b60405180910390fd5b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461141257611391826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61141d8484846120be565b90509392505050565b600f5481565b60006114a961145c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b61149b61148a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b60055461260090919063ffffffff16565b61260090919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60145481565b60006004905090565b61151f336114ae565b61155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613b92565b60405180910390fd5b6101f583839050106115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613c24565b60405180910390fd5b60005b838390508110156116425781600b60008686858181106115cb576115ca613c44565b5b90506020020160208101906115e091906138c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061163b90613ca2565b90506115a8565b50505050565b6000611674827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d39565b9050919050565b60155481565b61168a336114ae565b6116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b92565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b611733336114ae565b611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176990613b92565b60405180910390fd5b816013819055508260148190555080601581905550505050565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4d4f470000000000000000000000000000000000000000000000000000000000815250905090565b600c5481565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016118bf929190613fe2565b6020604051808303816000875af11580156118de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119029190614020565b905092915050565b6000479050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846119599190613d7c565b6119639190613ded565b9081150290604051600060405180830381858888f1935050505015801561198e573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119c63384846120be565b905092915050565b6119d7336114ae565b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90613b92565b60405180910390fd5b6001811015611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a51906140bf565b60405180910390fd5b6103e881600554611a6b9190613d7c565b611a759190613ded565b60068190555050565b611a87336114ae565b611ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abd90613b92565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611b0081611af2848661264a90919063ffffffff16565b61264a90919063ffffffff16565b601181905550600a60115410611b1557600080fd5b505050565b6000611b85611b2761142c565b611b77611b686002611b5a601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661179f565b6126a890919063ffffffff16565b856126a890919063ffffffff16565b61272290919063ffffffff16565b9050919050565b600e5481565b60105481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c28336114ae565b611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613b92565b60405180910390fd5b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b611c95336114ae565b611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb90613b92565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d9a9190614100565b60405180910390a150565b611dae336114ae565b611ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de490613b92565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b601e60149054906101000a900460ff1681565b6000611f12826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa782600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161204791906134d9565b60405180910390a3600190509392505050565b60008383111582906120a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120999190613584565b60405180910390fd5b50600083856120b1919061411b565b9050809150509392505050565b6000602060009054906101000a900460ff16156120e7576120e0848484611e87565b90506125f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218b5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e057601e60149054906101000a900460ff166121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d69061419b565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561226657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122c05750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561231a5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123745750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123d85760006123848461179f565b905060075483826123959190613f42565b11156123d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cd9061422d565b60405180910390fd5b505b6123e2848361276c565b6123ea612809565b156123f8576123f76128e0565b5b612481826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205a9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006124cf85612f29565b15806124e157506124df84612f29565b155b6124f5576124f0858486612f80565b6124f7565b825b905061254b81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125eb91906134d9565b60405180910390a360019150505b9392505050565b600061264283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205a565b905092915050565b60008082846126599190613f42565b90508381101561269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269590614299565b60405180910390fd5b8091505092915050565b60008083036126ba576000905061271c565b600082846126c89190613d7c565b90508284826126d79190613ded565b14612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e9061432b565b60405180910390fd5b809150505b92915050565b600061276483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613356565b905092915050565b600654811115806127c65750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc90614397565b60405180910390fd5b5050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156128765750602060009054906101000a900460ff16155b801561288e5750601e60159054906101000a900460ff165b80156128db5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff021916908315150217905550600061290b601b54601c54610e2b565b61291757600c5461291a565b60005b9050600061295a600261294c60115461293e86601f546126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b9050600061297382601f5461260090919063ffffffff16565b90506000600267ffffffffffffffff811115612992576129916143b7565b5b6040519080825280602002602001820160405280156129c05781602001602082028036833780820191505090505b50905030816000815181106129d8576129d7613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612a4957612a48613c44565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612aec9594939291906144df565b600060405180830381600087803b158015612b0657600080fd5b505af1158015612b1a573d6000803e3d6000fd5b505050506000612b33824761260090919063ffffffff16565b90506000612b5f612b4e60028961272290919063ffffffff16565b60115461260090919063ffffffff16565b90506000612b9b6002612b8d84612b7f8c886126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000612bc683612bb8600d54876126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612bf184612be3600f54886126a890919063ffffffff16565b61272290919063ffffffff16565b90506000612c2f600a612c2187612c13600e548b6126a890919063ffffffff16565b61272290919063ffffffff16565b61272290919063ffffffff16565b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168461753090604051612c7d9061456a565b600060405180830381858888f193505050503d8060008114612cbb576040519150601f19603f3d011682016040523d82523d6000602084013e612cc0565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612d0e9061456a565b600060405180830381858888f193505050503d8060008114612d4c576040519150601f19603f3d011682016040523d82523d6000602084013e612d51565b606091505b505080915050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051612da19061456a565b600060405180830381858888f193505050503d8060008114612ddf576040519150601f19603f3d011682016040523d82523d6000602084013e612de4565b606091505b5050809150506000905060008b1115612f0057601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e809695949392919061457f565b60606040518083038185885af1158015612e9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ec391906145f5565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612ef7929190614648565b60405180910390a15b5050505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806015549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fe7576013549050613043565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130425760145490505b5b600061308c60646012546130579190613d7c565b61307e846130706011548a6126a890919063ffffffff16565b6126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130b96011546130ab601054856126a890919063ffffffff16565b61272290919063ffffffff16565b905060006130d0828461260090919063ffffffff16565b905061312481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131db8260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264a90919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161329d91906134d9565b60405180910390a3600082111561333657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161332d91906134d9565b60405180910390a35b613349838861260090919063ffffffff16565b9450505050509392505050565b6000808311829061339d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133949190613584565b60405180910390fd5b50600083856133ac9190613ded565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126133e8576133e76133c3565b5b8235905067ffffffffffffffff811115613405576134046133c8565b5b602083019150836020820283011115613421576134206133cd565b5b9250929050565b60008115159050919050565b61343d81613428565b811461344857600080fd5b50565b60008135905061345a81613434565b92915050565b600080600060408486031215613479576134786133b9565b5b600084013567ffffffffffffffff811115613497576134966133be565b5b6134a3868287016133d2565b935093505060206134b68682870161344b565b9150509250925092565b6000819050919050565b6134d3816134c0565b82525050565b60006020820190506134ee60008301846134ca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561352e578082015181840152602081019050613513565b60008484015250505050565b6000601f19601f8301169050919050565b6000613556826134f4565b61356081856134ff565b9350613570818560208601613510565b6135798161353a565b840191505092915050565b6000602082019050818103600083015261359e818461354b565b905092915050565b6135af816134c0565b81146135ba57600080fd5b50565b6000813590506135cc816135a6565b92915050565b6000602082840312156135e8576135e76133b9565b5b60006135f6848285016135bd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061362a826135ff565b9050919050565b61363a8161361f565b811461364557600080fd5b50565b60008135905061365781613631565b92915050565b60008060408385031215613674576136736133b9565b5b600061368285828601613648565b9250506020613693858286016135bd565b9150509250929050565b6136a681613428565b82525050565b60006020820190506136c1600083018461369d565b92915050565b600080604083850312156136de576136dd6133b9565b5b60006136ec858286016135bd565b92505060206136fd858286016135bd565b9150509250929050565b60008083601f84011261371d5761371c6133c3565b5b8235905067ffffffffffffffff81111561373a576137396133c8565b5b602083019150836020820283011115613756576137556133cd565b5b9250929050565b600080600080600060608688031215613779576137786133b9565b5b600061378788828901613648565b955050602086013567ffffffffffffffff8111156137a8576137a76133be565b5b6137b4888289016133d2565b9450945050604086013567ffffffffffffffff8111156137d7576137d66133be565b5b6137e388828901613707565b92509250509295509295909350565b600080600080600060a0868803121561380e5761380d6133b9565b5b600061381c88828901613648565b955050602061382d88828901613648565b945050604061383e88828901613648565b935050606061384f88828901613648565b925050608061386088828901613648565b9150509295509295909350565b600080600060608486031215613886576138856133b9565b5b600061389486828701613648565b93505060206138a586828701613648565b92505060406138b6868287016135bd565b9150509250925092565b6000602082840312156138d6576138d56133b9565b5b60006138e484828501613648565b91505092915050565b600060ff82169050919050565b613903816138ed565b82525050565b600060208201905061391e60008301846138fa565b92915050565b6000806040838503121561393b5761393a6133b9565b5b600061394985828601613648565b925050602061395a8582860161344b565b9150509250929050565b60008060006060848603121561397d5761397c6133b9565b5b600061398b868287016135bd565b935050602061399c868287016135bd565b92505060406139ad868287016135bd565b9150509250925092565b6139c08161361f565b82525050565b60006020820190506139db60008301846139b7565b92915050565b600080604083850312156139f8576139f76133b9565b5b6000613a0685828601613648565b9250506020613a1785828601613648565b9150509250929050565b60008060408385031215613a3857613a376133b9565b5b6000613a468582860161344b565b9250506020613a57858286016135bd565b9150509250929050565b6000613a6c826135ff565b9050919050565b613a7c81613a61565b8114613a8757600080fd5b50565b600081359050613a9981613a73565b92915050565b600060208284031215613ab557613ab46133b9565b5b6000613ac384828501613a8a565b91505092915050565b6000819050919050565b6000613af1613aec613ae7846135ff565b613acc565b6135ff565b9050919050565b6000613b0382613ad6565b9050919050565b6000613b1582613af8565b9050919050565b613b2581613b0a565b82525050565b6000602082019050613b406000830184613b1c565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613b7c6006836134ff565b9150613b8782613b46565b602082019050919050565b60006020820190508181036000830152613bab81613b6f565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b6000613c0e6025836134ff565b9150613c1982613bb2565b604082019050919050565b60006020820190508181036000830152613c3d81613c01565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613cad826134c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cdf57613cde613c73565b5b600182019050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b6000613d466030836134ff565b9150613d5182613cea565b604082019050919050565b60006020820190508181036000830152613d7581613d39565b9050919050565b6000613d87826134c0565b9150613d92836134c0565b9250828202613da0816134c0565b91508282048414831517613db757613db6613c73565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df8826134c0565b9150613e03836134c0565b925082613e1357613e12613dbe565b5b828204905092915050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000613e7a602d836134ff565b9150613e8582613e1e565b604082019050919050565b60006020820190508181036000830152613ea981613e6d565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613f0c6028836134ff565b9150613f1782613eb0565b604082019050919050565b60006020820190508181036000830152613f3b81613eff565b9050919050565b6000613f4d826134c0565b9150613f58836134c0565b9250828201905080821115613f7057613f6f613c73565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613fac601b836134ff565b9150613fb782613f76565b602082019050919050565b60006020820190508181036000830152613fdb81613f9f565b9050919050565b6000604082019050613ff760008301856139b7565b61400460208301846134ca565b9392505050565b60008151905061401a81613434565b92915050565b600060208284031215614036576140356133b9565b5b60006140448482850161400b565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b60006140a96037836134ff565b91506140b48261404d565b604082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b60006140ea82613af8565b9050919050565b6140fa816140df565b82525050565b600060208201905061411560008301846140f1565b92915050565b6000614126826134c0565b9150614131836134c0565b925082820390508181111561414957614148613c73565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006141856014836134ff565b91506141908261414f565b602082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614217603e836134ff565b9150614222826141bb565b604082019050919050565b600060208201905081810360008301526142468161420a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614283601b836134ff565b915061428e8261424d565b602082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143156021836134ff565b9150614320826142b9565b604082019050919050565b6000602082019050818103600083015261434481614308565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006143816011836134ff565b915061438c8261434b565b602082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061440b614406614401846143e6565b613acc565b6134c0565b9050919050565b61441b816143f0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144568161361f565b82525050565b6000614468838361444d565b60208301905092915050565b6000602082019050919050565b600061448c82614421565b614496818561442c565b93506144a18361443d565b8060005b838110156144d25781516144b9888261445c565b97506144c483614474565b9250506001810190506144a5565b5085935050505092915050565b600060a0820190506144f460008301886134ca565b6145016020830187614412565b81810360408301526145138186614481565b905061452260608301856139b7565b61452f60808301846134ca565b9695505050505050565b600081905092915050565b50565b6000614554600083614539565b915061455f82614544565b600082019050919050565b600061457582614547565b9150819050919050565b600060c08201905061459460008301896139b7565b6145a160208301886134ca565b6145ae6040830187614412565b6145bb6060830186614412565b6145c860808301856139b7565b6145d560a08301846134ca565b979650505050505050565b6000815190506145ef816135a6565b92915050565b60008060006060848603121561460e5761460d6133b9565b5b600061461c868287016145e0565b935050602061462d868287016145e0565b925050604061463e868287016145e0565b9150509250925092565b600060408201905061465d60008301856134ca565b61466a60208301846134ca565b939250505056fea26469706673582212204148b5ebc902ad3bd8c0b11c0a8d23a80bdaeed74c6d816ff3a274d8273d606c64736f6c63430008110033

Deployed Bytecode Sourcemap

4270:13622:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14989:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5990:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7145:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13491:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7567:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17034:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17192:632;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5373:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6875:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15859:485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5260:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16515:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8085:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5176:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16709:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2454:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5462:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6969:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15289:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7791:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5504:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15597:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5092:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14448:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5953:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7315:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4774:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4712:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7231:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7055:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5050:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14269:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14065:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5886:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7921:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13777:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14653:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16859:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5134:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5218;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7426:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16352:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2565:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15724:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5855:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5419:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14989:292;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15115:3:::1;15096:9;;:16;;:22;15088:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15175:9;15170:104;15190:9;;:16;;15186:1;:20;15170:104;;;15256:6;15228:11;:25;15240:9;;15250:1;15240:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15228:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15208:3;;;;:::i;:::-;;;15170:104;;;;14989:292:::0;;;:::o;5990:49::-;;;;:::o;7145:80::-;7193:13;7217:5;;;;;;;;;;;;;;;;;7210:12;;7145:80;:::o;13491:278::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13629:2:::1;13602:23;:29;;13594:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13757:4;13729:23;13714:12;;:38;;;;:::i;:::-;13713:48;;;;:::i;:::-;13695:15;:66;;;;13491:278:::0;:::o;7567:216::-;7642:4;7694:6;7659:11;:23;7671:10;7659:23;;;;;;;;;;;;;;;:32;7683:7;7659:32;;;;;;;;;;;;;;;:41;;;;7737:7;7716:37;;7725:10;7716:37;;;7746:6;7716:37;;;;;;:::i;:::-;;;;;;;;7771:4;7764:11;;7567:216;;;;:::o;17034:150::-;17114:4;17170:6;17138:29;17158:8;17138:19;:29::i;:::-;:38;17131:45;;17034:150;;;;:::o;17192:632::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17339:3:::1;17320:9;;:16;;:22;17312:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17430:6;;:13;;17410:9;;:16;;:33;17402:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17500:12;17533:6:::0;17529:90:::1;17547:9;;:16;;17543:1;:20;17529:90;;;17598:6;;17605:1;17598:9;;;;;;;:::i;:::-;;;;;;;;17591:4;:16;;;;:::i;:::-;17584:23;;17565:3;;;;;:::i;:::-;;;;17529:90;;;;17658:4;17639:15;17649:4;17639:9;:15::i;:::-;:23;;17631:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17711:6;17707:110;17725:9;;:16;;17721:1;:20;17707:110;;;17762:43;17777:4;17782:9;;17792:1;17782:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17795:6;;17802:1;17795:9;;;;;;;:::i;:::-;;;;;;;;17762:14;:43::i;:::-;;17743:3;;;;;:::i;:::-;;;;17707:110;;;;17299:525;17192:632:::0;;;;;:::o;5373:37::-;;;;:::o;6875:88::-;6930:7;6948:12;;6941:19;;6875:88;:::o;15859:485::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16094:22:::1;16070:21;;:46;;;;;;;;;;;;;;;;;;16150:21;16127:20;;:44;;;;;;;;;;;;;;;;;;16203:19;16182:18;;:40;;;;;;;;;;;;;;;;;;16254:19;16233:18;;:40;;;;;;;;;;;;;;;;;;16311:25;16284:24;;:52;;;;;;;;;;;;;;;;;;15859:485:::0;;;;;:::o;5260:106::-;;;;:::o;16515:182::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16630:7:::1;16612:15;:25;;;;16677:12;16648:26;:41;;;;16515:182:::0;;:::o;8085:370::-;8185:4;8240:17;8205:11;:19;8217:6;8205:19;;;;;;;;;;;;;;;:31;8225:10;8205:31;;;;;;;;;;;;;;;;:52;8202:186;;8307:69;8343:6;8307:69;;;;;;;;;;;;;;;;;:11;:19;8319:6;8307:19;;;;;;;;;;;;;;;:31;8327:10;8307:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8273:11;:19;8285:6;8273:19;;;;;;;;;;;;;;;:31;8293:10;8273:31;;;;;;;;;;;;;;;:103;;;;8202:186;8407:40;8421:6;8429:9;8440:6;8407:13;:40::i;:::-;8400:47;;8085:370;;;;;:::o;5176:35::-;;;;:::o;16709:142::-;16762:7;16789:54;16827:15;16837:4;;;;;;;;;;;16827:9;:15::i;:::-;16789:33;16806:15;16816:4;;;;;;;;;;;16806:9;:15::i;:::-;16789:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;16782:61;;16709:142;:::o;2454:103::-;2509:4;2544:5;;;;;;;;;;;2533:16;;:7;:16;;;2526:23;;2454:103;;;:::o;5462:35::-;;;;:::o;6969:80::-;7021:5;4642:1;7030:16;;6969:80;:::o;15289:300::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15419:3:::1;15400:9;;:16;;:22;15392:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15479:9;15474:108;15494:9;;:16;;15490:1;:20;15474:108;;;15564:6;15532:15;:29;15548:9;;15558:1;15548:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15532:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15512:3;;;;:::i;:::-;;;15474:108;;;;15289:300:::0;;;:::o;7791:122::-;7846:4;7870:35;7878:7;7887:17;7870:7;:35::i;:::-;7863:42;;7791:122;;;:::o;5504:40::-;;;;:::o;15597:119::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15702:6:::1;15680:11;:19;15692:6;15680:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15597:119:::0;;:::o;5092:35::-;;;;:::o;14448:197::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14563:5:::1;14546:14;:22;;;;14595:4;14579:13;:20;;;;14631:6;14610:18;:27;;;;14448:197:::0;;;:::o;5953:30::-;;;;;;;;;;;;;:::o;7315:105::-;7381:7;7399:9;:18;7409:7;7399:18;;;;;;;;;;;;;;;;7392:25;;7315:105;;;:::o;4774:58::-;;;;:::o;4712:55::-;;;;:::o;7231:78::-;7283:7;7301:5;;;;;;;;;;;7294:12;;7231:78;:::o;7055:84::-;7105:13;7129:7;;;;;;;;;;;;;;;;;7122:14;;7055:84;:::o;5050:35::-;;;;:::o;14269:171::-;14341:12;14380;14373:29;;;14403:20;;;;;;;;;;;14425:6;14373:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14366:66;;14269:171;;;;:::o;14065:196::-;14127:17;14147:21;14127:41;;14187:20;;;;;;;;;;;14179:38;;:74;14249:3;14230:16;14218:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14179:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14116:145;14065:196;:::o;5886:19::-;;;;;;;;;;;;;:::o;7921:156::-;8001:4;8025:44;8039:10;8051:9;8062:6;8025:13;:44::i;:::-;8018:51;;7921:156;;;;:::o;13777:280::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13913:1:::1;13885:24;:29;;13877:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14045:4;14016:24;14001:12;;:39;;;;:::i;:::-;14000:49;;;;:::i;:::-;13985:12;:64;;;;13777:280:::0;:::o;14653:328::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14782:13:::1;14767:12;:28;;;;14821:13;14806:12;:28;;;;14858:11;14845:10;:24;;;;14891:49;14928:11;14891:32;14909:13;14891;:17;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;14880:8;:60;;;;14970:2;14959:8;;:13;14951:22;;;::::0;::::1;;14653:328:::0;;;:::o;16859:167::-;16927:7;16954:64;16995:22;:20;:22::i;:::-;16954:36;16967:22;16987:1;16967:15;16977:4;;;;;;;;;;;16967:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;16954:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;16947:71;;16859:167;;;:::o;5134:35::-;;;;:::o;5218:::-;;;;:::o;7426:133::-;7510:7;7528:11;:19;7540:6;7528:19;;;;;;;;;;;;;;;:28;7548:7;7528:28;;;;;;;;;;;;;;;;7521:35;;7426:133;;;;:::o;16352:155::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16457:8:::1;16443:11;;:22;;;;;;;;;;;;;;;;;;16492:7;16476:13;:23;;;;16352:155:::0;;:::o;2565:173::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2649:3:::1;2641:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;2685:4;2663:14:::0;:19:::1;2678:3;2663:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2705:25;2726:3;2705:25;;;;;;:::i;:::-;;;;;;;;2565:173:::0;:::o;15724:127::-;2405:19;2413:10;2405:7;:19::i;:::-;2397:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15837:6:::1;15811:15;:23;15827:6;15811:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15724:127:::0;;:::o;5855:24::-;;;;;;;;;;;;;:::o;5419:36::-;;;;:::o;5914:30::-;;;;;;;;;;;;;:::o;9673:330::-;9766:4;9803:53;9825:6;9803:53;;;;;;;;;;;;;;;;;:9;:17;9813:6;9803:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9783:9;:17;9793:6;9783:17;;;;;;;;;;;;;;;:73;;;;9890:32;9915:6;9890:9;:20;9900:9;9890:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9867:9;:20;9877:9;9867:20;;;;;;;;;;;;;;;:55;;;;9955:9;9938:35;;9947:6;9938:35;;;9966:6;9938:35;;;;;;:::i;:::-;;;;;;;;9991:4;9984:11;;9673:330;;;;;:::o;437:192::-;523:7;556:1;551;:6;;559:12;543:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;583:9;599:1;595;:5;;;;:::i;:::-;583:17;;620:1;613:8;;;437:192;;;;;:::o;8463:1198::-;8555:4;8575:6;;;;;;;;;;;8572:63;;;8591:41;8606:6;8614:9;8625:6;8591:14;:41::i;:::-;8584:48;;;;8572:63;8651:14;:22;8666:6;8651:22;;;;;;;;;;;;;;;;;;;;;;;;;8650:23;:53;;;;;8678:14;:25;8693:9;8678:25;;;;;;;;;;;;;;;;;;;;;;;;;8677:26;8650:53;8647:127;;;8727:11;;;;;;;;;;;8719:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8647:127;8791:14;:22;8806:6;8791:22;;;;;;;;;;;;;;;;;;;;;;;;;8790:23;:53;;;;;8838:4;8817:26;;:9;:26;;;;8790:53;:84;;;;;8869:4;;;;;;;;;;;8848:26;;:9;:26;;;;8790:84;:105;;;;;8891:4;;;;;;;;;;;8878:17;;:9;:17;;;;8790:105;:140;;;;;8912:18;;;;;;;;;;;8899:31;;:9;:31;;;;8790:140;8786:332;;;8946:18;8967:20;8977:9;8967;:20::i;:::-;8946:41;;9035:15;;9024:6;9011:10;:19;;;;:::i;:::-;9010:40;;9002:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8931:187;8786:332;9171:28;9184:6;9192;9171:12;:28::i;:::-;9215:16;:14;:16::i;:::-;9212:35;;;9234:10;:8;:10::i;:::-;9212:35;9306:53;9328:6;9306:53;;;;;;;;;;;;;;;;;:9;:17;9316:6;9306:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9286:9;:17;9296:6;9286:17;;;;;;;;;;;;;;;:73;;;;9372:22;9399:21;9413:6;9399:13;:21::i;:::-;9398:22;:51;;;;9425:24;9439:9;9425:13;:24::i;:::-;9424:25;9398:51;9397:99;;9462:34;9470:6;9478;9486:9;9462:7;:34::i;:::-;9397:99;;;9453:6;9397:99;9372:124;;9530:40;9555:14;9530:9;:20;9540:9;9530:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9507:9;:20;9517:9;9507:20;;;;;;;;;;;;;;;:63;;;;9605:9;9588:43;;9597:6;9588:43;;;9616:14;9588:43;;;;;;:::i;:::-;;;;;;;;9649:4;9642:11;;;8463:1198;;;;;;:::o;295:136::-;353:7;380:43;384:1;387;380:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;373:50;;295:136;;;;:::o;108:181::-;166:7;186:9;202:1;198;:5;;;;:::i;:::-;186:17;;227:1;222;:6;;214:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;280:1;273:8;;;108:181;;;;:::o;635:250::-;693:7;722:1;717;:6;713:47;;747:1;740:8;;;;713:47;772:9;788:1;784;:5;;;;:::i;:::-;772:17;;817:1;812;808;:5;;;;:::i;:::-;:10;800:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;876:1;869:8;;;635:250;;;;;:::o;891:132::-;949:7;976:39;980:1;983;976:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;969:46;;891:132;;;;:::o;10011:166::-;10108:12;;10098:6;:22;;:49;;;;10124:15;:23;10140:6;10124:23;;;;;;;;;;;;;;;;;;;;;;;;;10098:49;10090:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10011:166;;:::o;11282:197::-;11331:4;11369;;;;;;;;;;;11355:18;;:10;:18;;;;:38;;;;;11387:6;;;;;;;;;;;11386:7;11355:38;:62;;;;;11406:11;;;;;;;;;;;11355:62;:116;;;;;11458:13;;11430:9;:24;11448:4;11430:24;;;;;;;;;;;;;;;;:41;;11355:116;11348:123;;11282:197;:::o;11487:1963::-;6095:4;6086:6;;:13;;;;;;;;;;;;;;;;;;11536:27:::1;11566:60;11582:15;;11599:26;;11566:15;:60::i;:::-;:79;;11633:12;;11566:79;;;11629:1;11566:79;11536:109;;11656:23;11682:59;11739:1;11682:52;11725:8;;11682:38;11700:19;11682:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;11656:85;;11752:20;11775:34;11793:15;11775:13;;:17;;:34;;;;:::i;:::-;11752:57;;11822:21;11860:1;11846:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:40;;11891:4;11873;11878:1;11873:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11917:4;;;;;;;;;;;11907;11912:1;11907:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11934:21;11958;11934:45;;11992:6;;;;;;;;;;;:57;;;12064:12;12091:1;12107:4;12134;12154:15;11992:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12193:17;12213:40;12239:13;12213:21;:25;;:40;;;;:::i;:::-;12193:60;;12266:19;12288:40;12301:26;12325:1;12301:19;:23;;:26;;;;:::i;:::-;12288:8;;:12;;:40;;;;:::i;:::-;12266:62;;12349:26;12378:58;12434:1;12378:51;12417:11;12378:34;12392:19;12378:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12349:87;;12447:26;12476:44;12508:11;12476:27;12490:12;;12476:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12447:73;;12531:33;12567:48;12603:11;12567:31;12581:16;;12567:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;12531:84;;12626:24;12653:50;12700:2;12653:42;12683:11;12653:25;12667:10;;12653:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;:46;;:50;;;;:::i;:::-;12626:77;;12717:15;12745:20;;;;;;;;;;;12737:34;;12779:18;12804:5;12737:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12716:98;;;12849:18;;;;;;;;;;;12841:32;;12881:16;12904:5;12841:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12825:89;;;;;12949:24;;;;;;;;;;;12941:38;;12987:25;13019:5;12941:88;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12925:104;;;;;13063:5;13050:18;;13102:1;13084:15;:19;13081:362;;;13119:6;;;;;;;;;;;:22;;;13149:18;13195:4;13219:15;13253:1;13273::::0;13293:21:::1;;;;;;;;;;;13333:15;13119:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13383:48;13395:18;13415:15;13383:48;;;;;;;:::i;:::-;;;;;;;;13081:362;11525:1925;;;;;;;;;;;;6113:5:::0;6104:6;;:14;;;;;;;;;;;;;;;;;;11487:1963::o;10185:114::-;10247:4;10272:11;:19;10284:6;10272:19;;;;;;;;;;;;;;;;;;;;;;;;;10271:20;10264:27;;10185:114;;;:::o;10307:967::-;10393:7;10423:18;10444;;10423:39;;10489:4;;;;;;;;;;;10476:17;;:9;:17;;;10473:152;;10522:14;;10509:27;;10473:152;;;10567:4;;;;;;;;;;;10557:14;;:6;:14;;;10554:71;;10600:13;;10587:26;;10554:71;10473:152;10637:17;10657:62;10715:3;10698:14;;:20;;;;:::i;:::-;10657:36;10682:10;10657:20;10668:8;;10657:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;10637:82;;10732:21;10756:39;10786:8;;10756:25;10770:10;;10756:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;10732:63;;10806:22;10831:28;10845:13;10831:9;:13;;:28;;;;:::i;:::-;10806:53;;10899:44;10928:14;10899:9;:24;10917:4;10899:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10872:9;:24;10890:4;10872:24;;;;;;;;;;;;;;;:71;;;;10986:48;11020:13;10986:9;:29;10996:18;;;;;;;;;;;10986:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;10954:9;:29;10964:18;;;;;;;;;;;10954:29;;;;;;;;;;;;;;;:80;;;;11075:4;11050:47;;11059:6;11050:47;;;11082:14;11050:47;;;;;;:::i;:::-;;;;;;;;11137:1;11121:13;:17;11118:108;;;11176:18;;;;;;;;;;;11159:51;;11168:6;11159:51;;;11196:13;11159:51;;;;;;:::i;:::-;;;;;;;;11118:108;11245:21;11256:9;11245:6;:10;;:21;;;;:::i;:::-;11238:28;;;;;;10307:967;;;;;:::o;1029:189::-;1115:7;1147:1;1143;:5;1150:12;1135:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1174:9;1190:1;1186;:5;;;;:::i;:::-;1174:17;;1209:1;1202:8;;;1029:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:77::-;2392:7;2421:5;2410:16;;2355:77;;;:::o;2438:118::-;2525:24;2543:5;2525:24;:::i;:::-;2520:3;2513:37;2438:118;;:::o;2562:222::-;2655:4;2693:2;2682:9;2678:18;2670:26;;2706:71;2774:1;2763:9;2759:17;2750:6;2706:71;:::i;:::-;2562:222;;;;:::o;2790:99::-;2842:6;2876:5;2870:12;2860:22;;2790:99;;;:::o;2895:169::-;2979:11;3013:6;3008:3;3001:19;3053:4;3048:3;3044:14;3029:29;;2895:169;;;;:::o;3070:246::-;3151:1;3161:113;3175:6;3172:1;3169:13;3161:113;;;3260:1;3255:3;3251:11;3245:18;3241:1;3236:3;3232:11;3225:39;3197:2;3194:1;3190:10;3185:15;;3161:113;;;3308:1;3299:6;3294:3;3290:16;3283:27;3132:184;3070:246;;;:::o;3322:102::-;3363:6;3414:2;3410:7;3405:2;3398:5;3394:14;3390:28;3380:38;;3322:102;;;:::o;3430:377::-;3518:3;3546:39;3579:5;3546:39;:::i;:::-;3601:71;3665:6;3660:3;3601:71;:::i;:::-;3594:78;;3681:65;3739:6;3734:3;3727:4;3720:5;3716:16;3681:65;:::i;:::-;3771:29;3793:6;3771:29;:::i;:::-;3766:3;3762:39;3755:46;;3522:285;3430:377;;;;:::o;3813:313::-;3926:4;3964:2;3953:9;3949:18;3941:26;;4013:9;4007:4;4003:20;3999:1;3988:9;3984:17;3977:47;4041:78;4114:4;4105:6;4041:78;:::i;:::-;4033:86;;3813:313;;;;:::o;4132:122::-;4205:24;4223:5;4205:24;:::i;:::-;4198:5;4195:35;4185:63;;4244:1;4241;4234:12;4185:63;4132:122;:::o;4260:139::-;4306:5;4344:6;4331:20;4322:29;;4360:33;4387:5;4360:33;:::i;:::-;4260:139;;;;:::o;4405:329::-;4464:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4405:329;;;;:::o;4740:126::-;4777:7;4817:42;4810:5;4806:54;4795:65;;4740:126;;;:::o;4872:96::-;4909:7;4938:24;4956:5;4938:24;:::i;:::-;4927:35;;4872:96;;;:::o;4974:122::-;5047:24;5065:5;5047:24;:::i;:::-;5040:5;5037:35;5027:63;;5086:1;5083;5076:12;5027:63;4974:122;:::o;5102:139::-;5148:5;5186:6;5173:20;5164:29;;5202:33;5229:5;5202:33;:::i;:::-;5102:139;;;;:::o;5247:474::-;5315:6;5323;5372:2;5360:9;5351:7;5347:23;5343:32;5340:119;;;5378:79;;:::i;:::-;5340:119;5498:1;5523:53;5568:7;5559:6;5548:9;5544:22;5523:53;:::i;:::-;5513:63;;5469:117;5625:2;5651:53;5696:7;5687:6;5676:9;5672:22;5651:53;:::i;:::-;5641:63;;5596:118;5247:474;;;;;:::o;5727:109::-;5808:21;5823:5;5808:21;:::i;:::-;5803:3;5796:34;5727:109;;:::o;5842:210::-;5929:4;5967:2;5956:9;5952:18;5944:26;;5980:65;6042:1;6031:9;6027:17;6018:6;5980:65;:::i;:::-;5842:210;;;;:::o;6058:474::-;6126:6;6134;6183:2;6171:9;6162:7;6158:23;6154:32;6151:119;;;6189:79;;:::i;:::-;6151:119;6309:1;6334:53;6379:7;6370:6;6359:9;6355:22;6334:53;:::i;:::-;6324:63;;6280:117;6436:2;6462:53;6507:7;6498:6;6487:9;6483:22;6462:53;:::i;:::-;6452:63;;6407:118;6058:474;;;;;:::o;6555:568::-;6628:8;6638:6;6688:3;6681:4;6673:6;6669:17;6665:27;6655:122;;6696:79;;:::i;:::-;6655:122;6809:6;6796:20;6786:30;;6839:18;6831:6;6828:30;6825:117;;;6861:79;;:::i;:::-;6825:117;6975:4;6967:6;6963:17;6951:29;;7029:3;7021:4;7013:6;7009:17;6999:8;6995:32;6992:41;6989:128;;;7036:79;;:::i;:::-;6989:128;6555:568;;;;;:::o;7129:1079::-;7260:6;7268;7276;7284;7292;7341:2;7329:9;7320:7;7316:23;7312:32;7309:119;;;7347:79;;:::i;:::-;7309:119;7467:1;7492:53;7537:7;7528:6;7517:9;7513:22;7492:53;:::i;:::-;7482:63;;7438:117;7622:2;7611:9;7607:18;7594:32;7653:18;7645:6;7642:30;7639:117;;;7675:79;;:::i;:::-;7639:117;7788:80;7860:7;7851:6;7840:9;7836:22;7788:80;:::i;:::-;7770:98;;;;7565:313;7945:2;7934:9;7930:18;7917:32;7976:18;7968:6;7965:30;7962:117;;;7998:79;;:::i;:::-;7962:117;8111:80;8183:7;8174:6;8163:9;8159:22;8111:80;:::i;:::-;8093:98;;;;7888:313;7129:1079;;;;;;;;:::o;8214:911::-;8309:6;8317;8325;8333;8341;8390:3;8378:9;8369:7;8365:23;8361:33;8358:120;;;8397:79;;:::i;:::-;8358:120;8517:1;8542:53;8587:7;8578:6;8567:9;8563:22;8542:53;:::i;:::-;8532:63;;8488:117;8644:2;8670:53;8715:7;8706:6;8695:9;8691:22;8670:53;:::i;:::-;8660:63;;8615:118;8772:2;8798:53;8843:7;8834:6;8823:9;8819:22;8798:53;:::i;:::-;8788:63;;8743:118;8900:2;8926:53;8971:7;8962:6;8951:9;8947:22;8926:53;:::i;:::-;8916:63;;8871:118;9028:3;9055:53;9100:7;9091:6;9080:9;9076:22;9055:53;:::i;:::-;9045:63;;8999:119;8214:911;;;;;;;;:::o;9131:619::-;9208:6;9216;9224;9273:2;9261:9;9252:7;9248:23;9244:32;9241:119;;;9279:79;;:::i;:::-;9241:119;9399:1;9424:53;9469:7;9460:6;9449:9;9445:22;9424:53;:::i;:::-;9414:63;;9370:117;9526:2;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9497:118;9654:2;9680:53;9725:7;9716:6;9705:9;9701:22;9680:53;:::i;:::-;9670:63;;9625:118;9131:619;;;;;:::o;9756:329::-;9815:6;9864:2;9852:9;9843:7;9839:23;9835:32;9832:119;;;9870:79;;:::i;:::-;9832:119;9990:1;10015:53;10060:7;10051:6;10040:9;10036:22;10015:53;:::i;:::-;10005:63;;9961:117;9756:329;;;;:::o;10091:86::-;10126:7;10166:4;10159:5;10155:16;10144:27;;10091:86;;;:::o;10183:112::-;10266:22;10282:5;10266:22;:::i;:::-;10261:3;10254:35;10183:112;;:::o;10301:214::-;10390:4;10428:2;10417:9;10413:18;10405:26;;10441:67;10505:1;10494:9;10490:17;10481:6;10441:67;:::i;:::-;10301:214;;;;:::o;10521:468::-;10586:6;10594;10643:2;10631:9;10622:7;10618:23;10614:32;10611:119;;;10649:79;;:::i;:::-;10611:119;10769:1;10794:53;10839:7;10830:6;10819:9;10815:22;10794:53;:::i;:::-;10784:63;;10740:117;10896:2;10922:50;10964:7;10955:6;10944:9;10940:22;10922:50;:::i;:::-;10912:60;;10867:115;10521:468;;;;;:::o;10995:619::-;11072:6;11080;11088;11137:2;11125:9;11116:7;11112:23;11108:32;11105:119;;;11143:79;;:::i;:::-;11105:119;11263:1;11288:53;11333:7;11324:6;11313:9;11309:22;11288:53;:::i;:::-;11278:63;;11234:117;11390:2;11416:53;11461:7;11452:6;11441:9;11437:22;11416:53;:::i;:::-;11406:63;;11361:118;11518:2;11544:53;11589:7;11580:6;11569:9;11565:22;11544:53;:::i;:::-;11534:63;;11489:118;10995:619;;;;;:::o;11620:118::-;11707:24;11725:5;11707:24;:::i;:::-;11702:3;11695:37;11620:118;;:::o;11744:222::-;11837:4;11875:2;11864:9;11860:18;11852:26;;11888:71;11956:1;11945:9;11941:17;11932:6;11888:71;:::i;:::-;11744:222;;;;:::o;11972:474::-;12040:6;12048;12097:2;12085:9;12076:7;12072:23;12068:32;12065:119;;;12103:79;;:::i;:::-;12065:119;12223:1;12248:53;12293:7;12284:6;12273:9;12269:22;12248:53;:::i;:::-;12238:63;;12194:117;12350:2;12376:53;12421:7;12412:6;12401:9;12397:22;12376:53;:::i;:::-;12366:63;;12321:118;11972:474;;;;;:::o;12452:468::-;12517:6;12525;12574:2;12562:9;12553:7;12549:23;12545:32;12542:119;;;12580:79;;:::i;:::-;12542:119;12700:1;12725:50;12767:7;12758:6;12747:9;12743:22;12725:50;:::i;:::-;12715:60;;12671:114;12824:2;12850:53;12895:7;12886:6;12875:9;12871:22;12850:53;:::i;:::-;12840:63;;12795:118;12452:468;;;;;:::o;12926:104::-;12971:7;13000:24;13018:5;13000:24;:::i;:::-;12989:35;;12926:104;;;:::o;13036:138::-;13117:32;13143:5;13117:32;:::i;:::-;13110:5;13107:43;13097:71;;13164:1;13161;13154:12;13097:71;13036:138;:::o;13180:155::-;13234:5;13272:6;13259:20;13250:29;;13288:41;13323:5;13288:41;:::i;:::-;13180:155;;;;:::o;13341:345::-;13408:6;13457:2;13445:9;13436:7;13432:23;13428:32;13425:119;;;13463:79;;:::i;:::-;13425:119;13583:1;13608:61;13661:7;13652:6;13641:9;13637:22;13608:61;:::i;:::-;13598:71;;13554:125;13341:345;;;;:::o;13692:60::-;13720:3;13741:5;13734:12;;13692:60;;;:::o;13758:142::-;13808:9;13841:53;13859:34;13868:24;13886:5;13868:24;:::i;:::-;13859:34;:::i;:::-;13841:53;:::i;:::-;13828:66;;13758:142;;;:::o;13906:126::-;13956:9;13989:37;14020:5;13989:37;:::i;:::-;13976:50;;13906:126;;;:::o;14038:144::-;14106:9;14139:37;14170:5;14139:37;:::i;:::-;14126:50;;14038:144;;;:::o;14188:167::-;14293:55;14342:5;14293:55;:::i;:::-;14288:3;14281:68;14188:167;;:::o;14361:258::-;14472:4;14510:2;14499:9;14495:18;14487:26;;14523:89;14609:1;14598:9;14594:17;14585:6;14523:89;:::i;:::-;14361:258;;;;:::o;14625:156::-;14765:8;14761:1;14753:6;14749:14;14742:32;14625:156;:::o;14787:365::-;14929:3;14950:66;15014:1;15009:3;14950:66;:::i;:::-;14943:73;;15025:93;15114:3;15025:93;:::i;:::-;15143:2;15138:3;15134:12;15127:19;;14787:365;;;:::o;15158:419::-;15324:4;15362:2;15351:9;15347:18;15339:26;;15411:9;15405:4;15401:20;15397:1;15386:9;15382:17;15375:47;15439:131;15565:4;15439:131;:::i;:::-;15431:139;;15158:419;;;:::o;15583:224::-;15723:34;15719:1;15711:6;15707:14;15700:58;15792:7;15787:2;15779:6;15775:15;15768:32;15583:224;:::o;15813:366::-;15955:3;15976:67;16040:2;16035:3;15976:67;:::i;:::-;15969:74;;16052:93;16141:3;16052:93;:::i;:::-;16170:2;16165:3;16161:12;16154:19;;15813:366;;;:::o;16185:419::-;16351:4;16389:2;16378:9;16374:18;16366:26;;16438:9;16432:4;16428:20;16424:1;16413:9;16409:17;16402:47;16466:131;16592:4;16466:131;:::i;:::-;16458:139;;16185:419;;;:::o;16610:180::-;16658:77;16655:1;16648:88;16755:4;16752:1;16745:15;16779:4;16776:1;16769:15;16796:180;16844:77;16841:1;16834:88;16941:4;16938:1;16931:15;16965:4;16962:1;16955:15;16982:233;17021:3;17044:24;17062:5;17044:24;:::i;:::-;17035:33;;17090:66;17083:5;17080:77;17077:103;;17160:18;;:::i;:::-;17077:103;17207:1;17200:5;17196:13;17189:20;;16982:233;;;:::o;17221:235::-;17361:34;17357:1;17349:6;17345:14;17338:58;17430:18;17425:2;17417:6;17413:15;17406:43;17221:235;:::o;17462:366::-;17604:3;17625:67;17689:2;17684:3;17625:67;:::i;:::-;17618:74;;17701:93;17790:3;17701:93;:::i;:::-;17819:2;17814:3;17810:12;17803:19;;17462:366;;;:::o;17834:419::-;18000:4;18038:2;18027:9;18023:18;18015:26;;18087:9;18081:4;18077:20;18073:1;18062:9;18058:17;18051:47;18115:131;18241:4;18115:131;:::i;:::-;18107:139;;17834:419;;;:::o;18259:410::-;18299:7;18322:20;18340:1;18322:20;:::i;:::-;18317:25;;18356:20;18374:1;18356:20;:::i;:::-;18351:25;;18411:1;18408;18404:9;18433:30;18451:11;18433:30;:::i;:::-;18422:41;;18612:1;18603:7;18599:15;18596:1;18593:22;18573:1;18566:9;18546:83;18523:139;;18642:18;;:::i;:::-;18523:139;18307:362;18259:410;;;;:::o;18675:180::-;18723:77;18720:1;18713:88;18820:4;18817:1;18810:15;18844:4;18841:1;18834:15;18861:185;18901:1;18918:20;18936:1;18918:20;:::i;:::-;18913:25;;18952:20;18970:1;18952:20;:::i;:::-;18947:25;;18991:1;18981:35;;18996:18;;:::i;:::-;18981:35;19038:1;19035;19031:9;19026:14;;18861:185;;;;:::o;19052:232::-;19192:34;19188:1;19180:6;19176:14;19169:58;19261:15;19256:2;19248:6;19244:15;19237:40;19052:232;:::o;19290:366::-;19432:3;19453:67;19517:2;19512:3;19453:67;:::i;:::-;19446:74;;19529:93;19618:3;19529:93;:::i;:::-;19647:2;19642:3;19638:12;19631:19;;19290:366;;;:::o;19662:419::-;19828:4;19866:2;19855:9;19851:18;19843:26;;19915:9;19909:4;19905:20;19901:1;19890:9;19886:17;19879:47;19943:131;20069:4;19943:131;:::i;:::-;19935:139;;19662:419;;;:::o;20087:227::-;20227:34;20223:1;20215:6;20211:14;20204:58;20296:10;20291:2;20283:6;20279:15;20272:35;20087:227;:::o;20320:366::-;20462:3;20483:67;20547:2;20542:3;20483:67;:::i;:::-;20476:74;;20559:93;20648:3;20559:93;:::i;:::-;20677:2;20672:3;20668:12;20661:19;;20320:366;;;:::o;20692:419::-;20858:4;20896:2;20885:9;20881:18;20873:26;;20945:9;20939:4;20935:20;20931:1;20920:9;20916:17;20909:47;20973:131;21099:4;20973:131;:::i;:::-;20965:139;;20692:419;;;:::o;21117:191::-;21157:3;21176:20;21194:1;21176:20;:::i;:::-;21171:25;;21210:20;21228:1;21210:20;:::i;:::-;21205:25;;21253:1;21250;21246:9;21239:16;;21274:3;21271:1;21268:10;21265:36;;;21281:18;;:::i;:::-;21265:36;21117:191;;;;:::o;21314:177::-;21454:29;21450:1;21442:6;21438:14;21431:53;21314:177;:::o;21497:366::-;21639:3;21660:67;21724:2;21719:3;21660:67;:::i;:::-;21653:74;;21736:93;21825:3;21736:93;:::i;:::-;21854:2;21849:3;21845:12;21838:19;;21497:366;;;:::o;21869:419::-;22035:4;22073:2;22062:9;22058:18;22050:26;;22122:9;22116:4;22112:20;22108:1;22097:9;22093:17;22086:47;22150:131;22276:4;22150:131;:::i;:::-;22142:139;;21869:419;;;:::o;22294:332::-;22415:4;22453:2;22442:9;22438:18;22430:26;;22466:71;22534:1;22523:9;22519:17;22510:6;22466:71;:::i;:::-;22547:72;22615:2;22604:9;22600:18;22591:6;22547:72;:::i;:::-;22294:332;;;;;:::o;22632:137::-;22686:5;22717:6;22711:13;22702:22;;22733:30;22757:5;22733:30;:::i;:::-;22632:137;;;;:::o;22775:345::-;22842:6;22891:2;22879:9;22870:7;22866:23;22862:32;22859:119;;;22897:79;;:::i;:::-;22859:119;23017:1;23042:61;23095:7;23086:6;23075:9;23071:22;23042:61;:::i;:::-;23032:71;;22988:125;22775:345;;;;:::o;23126:242::-;23266:34;23262:1;23254:6;23250:14;23243:58;23335:25;23330:2;23322:6;23318:15;23311:50;23126:242;:::o;23374:366::-;23516:3;23537:67;23601:2;23596:3;23537:67;:::i;:::-;23530:74;;23613:93;23702:3;23613:93;:::i;:::-;23731:2;23726:3;23722:12;23715:19;;23374:366;;;:::o;23746:419::-;23912:4;23950:2;23939:9;23935:18;23927:26;;23999:9;23993:4;23989:20;23985:1;23974:9;23970:17;23963:47;24027:131;24153:4;24027:131;:::i;:::-;24019:139;;23746:419;;;:::o;24171:134::-;24229:9;24262:37;24293:5;24262:37;:::i;:::-;24249:50;;24171:134;;;:::o;24311:147::-;24406:45;24445:5;24406:45;:::i;:::-;24401:3;24394:58;24311:147;;:::o;24464:238::-;24565:4;24603:2;24592:9;24588:18;24580:26;;24616:79;24692:1;24681:9;24677:17;24668:6;24616:79;:::i;:::-;24464:238;;;;:::o;24708:194::-;24748:4;24768:20;24786:1;24768:20;:::i;:::-;24763:25;;24802:20;24820:1;24802:20;:::i;:::-;24797:25;;24846:1;24843;24839:9;24831:17;;24870:1;24864:4;24861:11;24858:37;;;24875:18;;:::i;:::-;24858:37;24708:194;;;;:::o;24908:170::-;25048:22;25044:1;25036:6;25032:14;25025:46;24908:170;:::o;25084:366::-;25226:3;25247:67;25311:2;25306:3;25247:67;:::i;:::-;25240:74;;25323:93;25412:3;25323:93;:::i;:::-;25441:2;25436:3;25432:12;25425:19;;25084:366;;;:::o;25456:419::-;25622:4;25660:2;25649:9;25645:18;25637:26;;25709:9;25703:4;25699:20;25695:1;25684:9;25680:17;25673:47;25737:131;25863:4;25737:131;:::i;:::-;25729:139;;25456:419;;;:::o;25881:249::-;26021:34;26017:1;26009:6;26005:14;25998:58;26090:32;26085:2;26077:6;26073:15;26066:57;25881:249;:::o;26136:366::-;26278:3;26299:67;26363:2;26358:3;26299:67;:::i;:::-;26292:74;;26375:93;26464:3;26375:93;:::i;:::-;26493:2;26488:3;26484:12;26477:19;;26136:366;;;:::o;26508:419::-;26674:4;26712:2;26701:9;26697:18;26689:26;;26761:9;26755:4;26751:20;26747:1;26736:9;26732:17;26725:47;26789:131;26915:4;26789:131;:::i;:::-;26781:139;;26508:419;;;:::o;26933:177::-;27073:29;27069:1;27061:6;27057:14;27050:53;26933:177;:::o;27116:366::-;27258:3;27279:67;27343:2;27338:3;27279:67;:::i;:::-;27272:74;;27355:93;27444:3;27355:93;:::i;:::-;27473:2;27468:3;27464:12;27457:19;;27116:366;;;:::o;27488:419::-;27654:4;27692:2;27681:9;27677:18;27669:26;;27741:9;27735:4;27731:20;27727:1;27716:9;27712:17;27705:47;27769:131;27895:4;27769:131;:::i;:::-;27761:139;;27488:419;;;:::o;27913:220::-;28053:34;28049:1;28041:6;28037:14;28030:58;28122:3;28117:2;28109:6;28105:15;28098:28;27913:220;:::o;28139:366::-;28281:3;28302:67;28366:2;28361:3;28302:67;:::i;:::-;28295:74;;28378:93;28467:3;28378:93;:::i;:::-;28496:2;28491:3;28487:12;28480:19;;28139:366;;;:::o;28511:419::-;28677:4;28715:2;28704:9;28700:18;28692:26;;28764:9;28758:4;28754:20;28750:1;28739:9;28735:17;28728:47;28792:131;28918:4;28792:131;:::i;:::-;28784:139;;28511:419;;;:::o;28936:167::-;29076:19;29072:1;29064:6;29060:14;29053:43;28936:167;:::o;29109:366::-;29251:3;29272:67;29336:2;29331:3;29272:67;:::i;:::-;29265:74;;29348:93;29437:3;29348:93;:::i;:::-;29466:2;29461:3;29457:12;29450:19;;29109:366;;;:::o;29481:419::-;29647:4;29685:2;29674:9;29670:18;29662:26;;29734:9;29728:4;29724:20;29720:1;29709:9;29705:17;29698:47;29762:131;29888:4;29762:131;:::i;:::-;29754:139;;29481:419;;;:::o;29906:180::-;29954:77;29951:1;29944:88;30051:4;30048:1;30041:15;30075:4;30072:1;30065:15;30092:85;30137:7;30166:5;30155:16;;30092:85;;;:::o;30183:158::-;30241:9;30274:61;30292:42;30301:32;30327:5;30301:32;:::i;:::-;30292:42;:::i;:::-;30274:61;:::i;:::-;30261:74;;30183:158;;;:::o;30347:147::-;30442:45;30481:5;30442:45;:::i;:::-;30437:3;30430:58;30347:147;;:::o;30500:114::-;30567:6;30601:5;30595:12;30585:22;;30500:114;;;:::o;30620:184::-;30719:11;30753:6;30748:3;30741:19;30793:4;30788:3;30784:14;30769:29;;30620:184;;;;:::o;30810:132::-;30877:4;30900:3;30892:11;;30930:4;30925:3;30921:14;30913:22;;30810:132;;;:::o;30948:108::-;31025:24;31043:5;31025:24;:::i;:::-;31020:3;31013:37;30948:108;;:::o;31062:179::-;31131:10;31152:46;31194:3;31186:6;31152:46;:::i;:::-;31230:4;31225:3;31221:14;31207:28;;31062:179;;;;:::o;31247:113::-;31317:4;31349;31344:3;31340:14;31332:22;;31247:113;;;:::o;31396:732::-;31515:3;31544:54;31592:5;31544:54;:::i;:::-;31614:86;31693:6;31688:3;31614:86;:::i;:::-;31607:93;;31724:56;31774:5;31724:56;:::i;:::-;31803:7;31834:1;31819:284;31844:6;31841:1;31838:13;31819:284;;;31920:6;31914:13;31947:63;32006:3;31991:13;31947:63;:::i;:::-;31940:70;;32033:60;32086:6;32033:60;:::i;:::-;32023:70;;31879:224;31866:1;31863;31859:9;31854:14;;31819:284;;;31823:14;32119:3;32112:10;;31520:608;;;31396:732;;;;:::o;32134:831::-;32397:4;32435:3;32424:9;32420:19;32412:27;;32449:71;32517:1;32506:9;32502:17;32493:6;32449:71;:::i;:::-;32530:80;32606:2;32595:9;32591:18;32582:6;32530:80;:::i;:::-;32657:9;32651:4;32647:20;32642:2;32631:9;32627:18;32620:48;32685:108;32788:4;32779:6;32685:108;:::i;:::-;32677:116;;32803:72;32871:2;32860:9;32856:18;32847:6;32803:72;:::i;:::-;32885:73;32953:3;32942:9;32938:19;32929:6;32885:73;:::i;:::-;32134:831;;;;;;;;:::o;32971:147::-;33072:11;33109:3;33094:18;;32971:147;;;;:::o;33124:114::-;;:::o;33244:398::-;33403:3;33424:83;33505:1;33500:3;33424:83;:::i;:::-;33417:90;;33516:93;33605:3;33516:93;:::i;:::-;33634:1;33629:3;33625:11;33618:18;;33244:398;;;:::o;33648:379::-;33832:3;33854:147;33997:3;33854:147;:::i;:::-;33847:154;;34018:3;34011:10;;33648:379;;;:::o;34033:807::-;34282:4;34320:3;34309:9;34305:19;34297:27;;34334:71;34402:1;34391:9;34387:17;34378:6;34334:71;:::i;:::-;34415:72;34483:2;34472:9;34468:18;34459:6;34415:72;:::i;:::-;34497:80;34573:2;34562:9;34558:18;34549:6;34497:80;:::i;:::-;34587;34663:2;34652:9;34648:18;34639:6;34587:80;:::i;:::-;34677:73;34745:3;34734:9;34730:19;34721:6;34677:73;:::i;:::-;34760;34828:3;34817:9;34813:19;34804:6;34760:73;:::i;:::-;34033:807;;;;;;;;;:::o;34846:143::-;34903:5;34934:6;34928:13;34919:22;;34950:33;34977:5;34950:33;:::i;:::-;34846:143;;;;:::o;34995:663::-;35083:6;35091;35099;35148:2;35136:9;35127:7;35123:23;35119:32;35116:119;;;35154:79;;:::i;:::-;35116:119;35274:1;35299:64;35355:7;35346:6;35335:9;35331:22;35299:64;:::i;:::-;35289:74;;35245:128;35412:2;35438:64;35494:7;35485:6;35474:9;35470:22;35438:64;:::i;:::-;35428:74;;35383:129;35551:2;35577:64;35633:7;35624:6;35613:9;35609:22;35577:64;:::i;:::-;35567:74;;35522:129;34995:663;;;;;:::o;35664:332::-;35785:4;35823:2;35812:9;35808:18;35800:26;;35836:71;35904:1;35893:9;35889:17;35880:6;35836:71;:::i;:::-;35917:72;35985:2;35974:9;35970:18;35961:6;35917:72;:::i;:::-;35664:332;;;;;:::o

Swarm Source

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