ETH Price: $3,379.67 (+3.72%)

Token

Flur AI (FLUR)
 

Overview

Max Total Supply

100,000,000 FLUR

Holders

432 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,112.752155596088826617 FLUR

Value
$0.00
0x3290C3ceBA1a82996D844E4771f272BB191A52B0
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Flur AI represents the pioneering AI news trading ecosystem designed to thrive in all market conditions. Tailored individually for each trader, it operates with intelligence and autonomy.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FLURAI

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-23
*/

// SPDX-License-Identifier: Unlicensed

//Flur AI represents the pioneering AI news trading ecosystem designed to thrive in all market conditions.

//Website: https://flur.ai/
//Telegram - https://t.me/flur_ai
//Twitter - https://x.com/flur_ai


pragma solidity 0.8.25;

interface ERC20 {
    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 Context {
    
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
}

contract Ownable is Context {
    address public _owner;

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

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

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

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

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

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

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

interface InterfaceLP {}

contract FLURAI is Ownable, ERC20 {

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

    string constant _name = "Flur AI";
    string constant _symbol = "FLUR";
    uint8 constant _decimals = 18; 
  

    uint256 _totalSupply = 1e8 * 10**_decimals;

    uint256 public _maxTxAmount = 1e6 * 10**_decimals;
    uint256 public _maxWalletAmount = 2e6 * 10**_decimals;
    uint256 public swapThreshold = 5e5 * 10**_decimals;

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

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

    uint256 public  buyFee = 30;
    uint256 public  sellFee = 30;
    uint256 private transferFee = 0;
    
    uint256 private lastSwap;
    uint256 private tradingStartTime;

    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private infrastructureFeeReceiver;

    struct TaxRatio {
       uint256 marketing;
       uint256 dev;
       uint256 infrastructure;
    }

    TaxRatio public taxBreakdown = TaxRatio(40, 30, 30);
    TaxRatio private taxRatio;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

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

    event maxWalletUpdated(uint256 indexed maxWalletAmount);
    event maxTxUpdated(uint256 indexed maxTxAmount);
    event maxLimitsRemoved(uint256 indexed maxWalletToken, uint256 indexed maxTxAmount);
    event exemptFees(address indexed holder, bool indexed exempt);
    event exemptTxLimit(address indexed holder, bool indexed exempt);
    event feesUpdated(uint256 indexed buyFee, uint256 indexed sellFee);
    event feesWalletsUpdated(address indexed marketingFeeReceiver, address indexed devFeeReceiver, address indexed infrastructureFeeReceiver);
    event swapbackSettingsUpdated(bool indexed enabled, uint256 indexed amount);
    event tradingEnabled(bool indexed enabled, uint256 indexed startTime , uint256 indexed lastTokenSwap);
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xeA5CeC7Ca2be0cc72Bd3608F01d99757eDEdEEB8;
        devFeeReceiver = 0x1337cEdE27964b91bD47bee8827cbA32db351337;
        infrastructureFeeReceiver = 0x08b96bDA04Ff9f7E119F02e1ed767c6C467A01D7;

        isFeeExempt[msg.sender] = true; 
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[devFeeReceiver] = true;
        isTxLimitExempt[infrastructureFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        

        _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 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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _allowances[sender][_msgSender()] = currentAllowance - amount;
            }
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWalletAmount) external onlyOwner {
        require(maxWalletAmount >= 1e6, "Max wallet cannot be less than 1%.");
        _maxWalletAmount = maxWalletAmount * 10**_decimals;
        emit maxWalletUpdated(_maxWalletAmount);       
    }

    function setMaxTx(uint256 maxTxAmount) external onlyOwner {
        require(maxTxAmount >= 1e6, "Max tx cannot be less than 1%." ); 
        _maxTxAmount = maxTxAmount * 10**_decimals;
        emit maxTxUpdated(_maxTxAmount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner()){
            require(TradingOpen,"Trading not open yet");
        
           }
       
        if (sender != owner() || (recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient])){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletAmount,"Total Holding is currently limited, you can not buy that much.");}
            
       
        checkTxLimit(sender, amount);

        if(
            lastSwap != block.number &&
            _balances[address(this)] >= swapThreshold &&
            swapEnabled &&
            !inSwap &&
            recipient == pair
        ){ 
            swapBack();
            lastSwap = block.number;
            }
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] += amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += 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 feeAmount = 0;

        if(recipient == pair) {
            feeAmount = (amount * sellFee) / 100;
        } else if(sender == pair) {
            feeAmount = (amount * buyFee) / 100;
        }else{
            feeAmount = (amount * transferFee) / 100;
        }

        _balances[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        uint256 notFeeAmount = amount - feeAmount;

        return notFeeAmount;
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletAmount = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit maxLimitsRemoved(_maxWalletAmount, _maxTxAmount);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool) {
        require(address(tokenAddress) != address(this), "Cannot withdraw Flur tokens");
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }


    function startTrading() external onlyOwner {
        require(!TradingOpen,"Trading already Enabled.");
        TradingOpen = true;
        tradingStartTime = block.timestamp;
        lastSwap = block.number;
        emit tradingEnabled(TradingOpen, tradingStartTime, lastSwap);
    }

    function swapBack() internal swapping {
        if (block.timestamp < tradingStartTime + 10 minutes) {
            taxRatio = TaxRatio(100, 0, 0);
        }else {
            taxRatio = taxBreakdown;
        }

        uint256 amountToSwap = swapThreshold;

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

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

        uint256 totalETHFee = address(this).balance;
        uint256 marketingEthAmount = (totalETHFee * taxRatio.marketing) / 100;
        uint256 devEthAmount = (totalETHFee * taxRatio.dev) / 100;
        uint256 infrastructureEthAmount = totalETHFee - marketingEthAmount - devEthAmount;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: marketingEthAmount}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: devEthAmount}("");
        (tmpSuccess,) = payable(infrastructureFeeReceiver).call{value: infrastructureEthAmount}("");
        
        tmpSuccess = false;

    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
        emit exemptFees(holder, exempt);
    }

    function setTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isTxLimitExempt[holder] = exempt;
        emit exemptTxLimit(holder, exempt);
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require( _buyFee <= 20 && _sellFee <= 20, "Fees can not be more than 20%"); 
        buyFee = _buyFee;
        sellFee = _sellFee;
        emit feesUpdated(buyFee, sellFee);
    }

    function updateFeeWallets( address _marketingFeeReceiver, address _devFeeReceiver, address _infrastructureFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0) && _devFeeReceiver != address(0) && _infrastructureFeeReceiver != address(0), "Fee receiver cannot be zero address");
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        infrastructureFeeReceiver = _infrastructureFeeReceiver;
        emit feesWalletsUpdated(marketingFeeReceiver, devFeeReceiver, infrastructureFeeReceiver);
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require( _amount <= 1e6 && _amount >= 1e5, "Swap amount can not be more than 1% or less than 0.1%"); 
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**_decimals;
        emit swapbackSettingsUpdated(_enabled, _amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD)- balanceOf(ZERO);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"feesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"devFeeReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"infrastructureFeeReceiver","type":"address"}],"name":"feesWalletsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxLimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"maxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"lastTokenSwap","type":"uint256"}],"name":"tradingEnabled","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":"taxBreakdown","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"infrastructure","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_infrastructureFeeReceiver","type":"address"}],"name":"updateFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a6100129190610b5c565b6305f5e1006100219190610ba6565b6002556012600a6100329190610b5c565b620f42406100409190610ba6565b6003556012600a6100519190610b5c565b621e848061005f9190610ba6565b6004556012600a6100709190610b5c565b6207a12061007e9190610ba6565b600555601e600a55601e600b555f600c55604051806060016040528060288152602001601e8152602001601e81525060125f820151815f0155602082015181600101556040820151816002015550505f601a60146101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555034801561010d575f80fd5b505f61011d6109e460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610277573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029b9190610c45565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103689190610c45565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016103c3929190610c7f565b6020604051808303815f875af11580156103df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190610c45565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555073ea5cec7ca2be0cc72bd3608f01d99757ededeeb8600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731337cede27964b91bd47bee8827cba32db35133760105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507308b96bda04ff9f7e119f02e1ed767c6c467a01d760115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6002546040516109d79190610cb5565b60405180910390a3610cce565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610a6d57808604811115610a4957610a486109eb565b5b6001851615610a585780820291505b8081029050610a6685610a18565b9450610a2d565b94509492505050565b5f82610a855760019050610b40565b81610a92575f9050610b40565b8160018114610aa85760028114610ab257610ae1565b6001915050610b40565b60ff841115610ac457610ac36109eb565b5b8360020a915084821115610adb57610ada6109eb565b5b50610b40565b5060208310610133831016604e8410600b8410161715610b165782820a905083811115610b1157610b106109eb565b5b610b40565b610b238484846001610a24565b92509050818404811115610b3a57610b396109eb565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610b6682610b47565b9150610b7183610b50565b9250610b9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610a76565b905092915050565b5f610bb082610b47565b9150610bbb83610b47565b9250828202610bc981610b47565b91508282048414831517610be057610bdf6109eb565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c1482610beb565b9050919050565b610c2481610c0a565b8114610c2e575f80fd5b50565b5f81519050610c3f81610c1b565b92915050565b5f60208284031215610c5a57610c59610be7565b5b5f610c6784828501610c31565b91505092915050565b610c7981610c0a565b82525050565b5f604082019050610c925f830185610c70565b610c9f6020830184610c70565b9392505050565b610caf81610b47565b82525050565b5f602082019050610cc85f830184610ca6565b92915050565b613f7780610cdb5f395ff3fe608060405260043610610207575f3560e01c806370a0823111610117578063a8aa1b311161009f578063ccf8c0361161006e578063ccf8c03614610726578063dd62ed3e1461074e578063f2fde38b1461078a578063f6a78e17146107b2578063f887ea40146107c85761020e565b8063a8aa1b311461066e578063a9059cbb14610698578063b2bdfa7b146106d4578063bc337182146106fe5761020e565b8063893d20e8116100e6578063893d20e8146105a05780638d7a8ba7146105ca5780638da5cb5b146105f2578063937ebc301461061c57806395d89b41146106445761020e565b806370a08231146104e8578063715018a61461052457806377b54bad1461053a5780637d1db4a5146105765761020e565b80632b112e491161019a5780634706240211610169578063470624021461041a5780635d0044ca146104445780636c0a24eb1461046c5780636db79437146104965780636ddd1713146104be5761020e565b80632b112e49146103705780632b14ca561461039a5780632b6f6a17146103c4578063313ce567146103f05761020e565b8063095ea7b3116101d6578063095ea7b3146102b857806318160ddd146102f457806323b872dd1461031e578063293230b81461035a5761020e565b806304368f65146102125780630445b6671461023a57806306fdde031461026457806308fd3d051461028e5761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b5061023860048036038101906102339190612e82565b6107f2565b005b348015610245575f80fd5b5061024e610948565b60405161025b9190612ecf565b60405180910390f35b34801561026f575f80fd5b5061027861094e565b6040516102859190612f58565b60405180910390f35b348015610299575f80fd5b506102a261098b565b6040516102af9190612f87565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612ffa565b61099e565b6040516102eb9190612f87565b60405180910390f35b3480156102ff575f80fd5b50610308610a8b565b6040516103159190612ecf565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613038565b610a94565b6040516103519190612f87565b60405180910390f35b348015610365575f80fd5b5061036e610c1e565b005b34801561037b575f80fd5b50610384610d71565b6040516103919190612ecf565b60405180910390f35b3480156103a5575f80fd5b506103ae610da2565b6040516103bb9190612ecf565b60405180910390f35b3480156103cf575f80fd5b506103d8610da8565b6040516103e793929190613088565b60405180910390f35b3480156103fb575f80fd5b50610404610dbf565b60405161041191906130d8565b60405180910390f35b348015610425575f80fd5b5061042e610dc7565b60405161043b9190612ecf565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906130f1565b610dcd565b005b348015610477575f80fd5b50610480610ef8565b60405161048d9190612ecf565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b7919061311c565b610efe565b005b3480156104c9575f80fd5b506104d2611027565b6040516104df9190612f87565b60405180910390f35b3480156104f3575f80fd5b5061050e6004803603810190610509919061315a565b61103a565b60405161051b9190612ecf565b60405180910390f35b34801561052f575f80fd5b50610538611080565b005b348015610545575f80fd5b50610560600480360381019061055b9190612ffa565b6111ce565b60405161056d9190612f87565b60405180910390f35b348015610581575f80fd5b5061058a6113d6565b6040516105979190612ecf565b60405180910390f35b3480156105ab575f80fd5b506105b46113dc565b6040516105c19190613194565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb91906131ad565b6113ea565b005b3480156105fd575f80fd5b5061060661158a565b6040516106139190613194565b60405180910390f35b348015610627575f80fd5b50610642600480360381019061063d91906131eb565b6115b1565b005b34801561064f575f80fd5b506106586118bd565b6040516106659190612f58565b60405180910390f35b348015610679575f80fd5b506106826118fa565b60405161068f9190613194565b60405180910390f35b3480156106a3575f80fd5b506106be60048036038101906106b99190612ffa565b61191f565b6040516106cb9190612f87565b60405180910390f35b3480156106df575f80fd5b506106e8611933565b6040516106f59190613194565b60405180910390f35b348015610709575f80fd5b50610724600480360381019061071f91906130f1565b611956565b005b348015610731575f80fd5b5061074c600480360381019061074791906131ad565b611a81565b005b348015610759575f80fd5b50610774600480360381019061076f919061323b565b611c75565b6040516107819190612ecf565b60405180910390f35b348015610795575f80fd5b506107b060048036038101906107ab919061315a565b611cf7565b005b3480156107bd575f80fd5b506107c6611eb4565b005b3480156107d3575f80fd5b506107dc611f8e565b6040516107e991906132d4565b60405180910390f35b6107fa611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d90613337565b60405180910390fd5b620f4240811115801561089c5750620186a08110155b6108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d2906133c5565b60405180910390fd5b81601a60156101000a81548160ff0219169083151502179055506012600a610903919061353f565b8161090e9190613589565b600581905550808215157fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd960405160405180910390a35050565b60055481565b60606040518060400160405280600781526020017f466c757220414900000000000000000000000000000000000000000000000000815250905090565b601a60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a799190612ecf565b60405180910390a36001905092915050565b5f600254905090565b5f8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610adc611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c095782811015610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b799061363a565b60405180910390fd5b82810360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bcb611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610c14858585611fba565b9150509392505050565b610c26611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990613337565b60405180910390fd5b601a60149054906101000a900460ff1615610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906136a2565b60405180910390fd5b6001601a60146101000a81548160ff02191690831515021790555042600e8190555043600d81905550600d54600e54601a60149054906101000a900460ff1615157f6a88444adba589164a0c0f1f33a72555328570cbb508a11c3213089c63c6378b60405160405180910390a4565b5f610d7b5f61103a565b610d8661dead61103a565b600254610d9391906136c0565b610d9d91906136c0565b905090565b600b5481565b6012805f0154908060010154908060020154905083565b5f6012905090565b600a5481565b610dd5611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613337565b60405180910390fd5b620f4240811015610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e90613763565b60405180910390fd5b6012600a610eb5919061353f565b81610ec09190613589565b6004819055506004547ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c3560405160405180910390a250565b60045481565b610f06611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990613337565b60405180910390fd5b60148211158015610fa4575060148111155b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906137cb565b60405180910390fd5b81600a8190555080600b81905550600b54600a547f3708aaa16bcac28f689a62245e6afcba1ccda04df915fc9f43b0c1a7570d1b5e60405160405180910390a35050565b601a60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611088611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6111d7611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90613337565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890613833565b60405180910390fd5b5f8203611353578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113119190613194565b602060405180830381865afa15801561132c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113509190613865565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161138e929190613890565b6020604051808303815f875af11580156113aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ce91906138cb565b905092915050565b60035481565b5f6113e561158a565b905090565b6113f2611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613940565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377560405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b9611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ad57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116e557505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b906139ce565b60405180910390fd5b82600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fabe0d5e54c3b508d0c57b7b623c2be48ed55805564807278933d61d0012eec2460405160405180910390a4505050565b60606040518060400160405280600481526020017f464c555200000000000000000000000000000000000000000000000000000000815250905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61192b338484611fba565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61195e611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613337565b60405180910390fd5b620f4240811015611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790613a36565b60405180910390fd5b6012600a611a3e919061353f565b81611a499190613589565b6003819055506003547f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c504160405160405180910390a250565b611a89611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90613940565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734660405160405180910390a35050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611cff611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090613ac4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ebc611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613337565b60405180910390fd5b6002546004819055506002546003819055506003546004547fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa960405160405180910390a3565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f601a60169054906101000a900460ff1615611fe257611fdb8484846125b7565b90506125b0565b611fea61158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461206c57601a60149054906101000a900460ff1661206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290613b2c565b60405180910390fd5b5b61207461158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158061221957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612113575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561216c5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121c55750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612218575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b1561227c575f6122288461103a565b905060045483826122399190613b4a565b111561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613bed565b60405180910390fd5b505b6122868483612744565b43600d54141580156122d7575060055460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b80156122ef5750601a60159054906101000a900460ff165b80156123085750601a60169054906101000a900460ff16155b80156123605750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156123755761236d6127de565b43600d819055505b5f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f090613c7b565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124d9575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124ed576124e8868587612c36565b6124ef565b835b90508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461253d9190613b4a565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a19190612ecf565b60405180910390a36001925050505b9392505050565b5f8060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390613c7b565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126cc9190613b4a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127309190612ecf565b60405180910390a360019150509392505050565b6003548111158061279b575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d190613ce3565b60405180910390fd5b5050565b6001601a60166101000a81548160ff021916908315150217905550610258600e546128099190613b4a565b421015612852576040518060600160405280606481526020015f81526020015f81525060155f820151815f01556020820151816001015560408201518160020155905050612876565b601260155f820154815f015560018201548160010155600282015481600201559050505b5f60055490505f600267ffffffffffffffff81111561289857612897613d01565b5b6040519080825280602002602001820160405280156128c65781602001602082028036833780820191505090505b50905030815f815181106128dd576128dc613d2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061294d5761294c613d2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129e9959493929190613e4b565b5f604051808303815f87803b158015612a00575f80fd5b505af1158015612a12573d5f803e3d5ffd5b505050505f4790505f606460155f015483612a2d9190613589565b612a379190613ed0565b90505f606460156001015484612a4d9190613589565b612a579190613ed0565b90505f818385612a6791906136c0565b612a7191906136c0565b90505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612ab990613f2d565b5f6040518083038185875af1925050503d805f8114612af3576040519150601f19603f3d011682016040523d82523d5f602084013e612af8565b606091505b5050905060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612b4190613f2d565b5f6040518083038185875af1925050503d805f8114612b7b576040519150601f19603f3d011682016040523d82523d5f602084013e612b80565b606091505b50508091505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612bcb90613f2d565b5f6040518083038185875af1925050503d805f8114612c05576040519150601f19603f3d011682016040523d82523d5f602084013e612c0a565b606091505b5050809150505f9050505050505050505f601a60166101000a81548160ff021916908315150217905550565b5f805f9050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb0576064600b5485612c9f9190613589565b612ca99190613ed0565b9050612d43565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612d25576064600a5485612d149190613589565b612d1e9190613ed0565b9050612d42565b6064600c5485612d359190613589565b612d3f9190613ed0565b90505b5b8060065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612d8f9190613b4a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612df39190612ecf565b60405180910390a35f8185612e0891906136c0565b905080925050509392505050565b5f80fd5b5f8115159050919050565b612e2e81612e1a565b8114612e38575f80fd5b50565b5f81359050612e4981612e25565b92915050565b5f819050919050565b612e6181612e4f565b8114612e6b575f80fd5b50565b5f81359050612e7c81612e58565b92915050565b5f8060408385031215612e9857612e97612e16565b5b5f612ea585828601612e3b565b9250506020612eb685828601612e6e565b9150509250929050565b612ec981612e4f565b82525050565b5f602082019050612ee25f830184612ec0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612f2a82612ee8565b612f348185612ef2565b9350612f44818560208601612f02565b612f4d81612f10565b840191505092915050565b5f6020820190508181035f830152612f708184612f20565b905092915050565b612f8181612e1a565b82525050565b5f602082019050612f9a5f830184612f78565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fc982612fa0565b9050919050565b612fd981612fbf565b8114612fe3575f80fd5b50565b5f81359050612ff481612fd0565b92915050565b5f80604083850312156130105761300f612e16565b5b5f61301d85828601612fe6565b925050602061302e85828601612e6e565b9150509250929050565b5f805f6060848603121561304f5761304e612e16565b5b5f61305c86828701612fe6565b935050602061306d86828701612fe6565b925050604061307e86828701612e6e565b9150509250925092565b5f60608201905061309b5f830186612ec0565b6130a86020830185612ec0565b6130b56040830184612ec0565b949350505050565b5f60ff82169050919050565b6130d2816130bd565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f6020828403121561310657613105612e16565b5b5f61311384828501612e6e565b91505092915050565b5f806040838503121561313257613131612e16565b5b5f61313f85828601612e6e565b925050602061315085828601612e6e565b9150509250929050565b5f6020828403121561316f5761316e612e16565b5b5f61317c84828501612fe6565b91505092915050565b61318e81612fbf565b82525050565b5f6020820190506131a75f830184613185565b92915050565b5f80604083850312156131c3576131c2612e16565b5b5f6131d085828601612fe6565b92505060206131e185828601612e3b565b9150509250929050565b5f805f6060848603121561320257613201612e16565b5b5f61320f86828701612fe6565b935050602061322086828701612fe6565b925050604061323186828701612fe6565b9150509250925092565b5f806040838503121561325157613250612e16565b5b5f61325e85828601612fe6565b925050602061326f85828601612fe6565b9150509250929050565b5f819050919050565b5f61329c61329761329284612fa0565b613279565b612fa0565b9050919050565b5f6132ad82613282565b9050919050565b5f6132be826132a3565b9050919050565b6132ce816132b4565b82525050565b5f6020820190506132e75f8301846132c5565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613321602083612ef2565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f5377617020616d6f756e742063616e206e6f74206265206d6f7265207468616e5f8201527f203125206f72206c657373207468616e20302e31250000000000000000000000602082015250565b5f6133af603583612ef2565b91506133ba82613355565b604082019050919050565b5f6020820190508181035f8301526133dc816133a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561346557808604811115613441576134406133e3565b5b60018516156134505780820291505b808102905061345e85613410565b9450613425565b94509492505050565b5f8261347d5760019050613538565b8161348a575f9050613538565b81600181146134a057600281146134aa576134d9565b6001915050613538565b60ff8411156134bc576134bb6133e3565b5b8360020a9150848211156134d3576134d26133e3565b5b50613538565b5060208310610133831016604e8410600b841016171561350e5782820a905083811115613509576135086133e3565b5b613538565b61351b848484600161341c565b92509050818404811115613532576135316133e3565b5b81810290505b9392505050565b5f61354982612e4f565b9150613554836130bd565b92506135817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461346e565b905092915050565b5f61359382612e4f565b915061359e83612e4f565b92508282026135ac81612e4f565b915082820484148315176135c3576135c26133e3565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613624602883612ef2565b915061362f826135ca565b604082019050919050565b5f6020820190508181035f83015261365181613618565b9050919050565b7f54726164696e6720616c726561647920456e61626c65642e00000000000000005f82015250565b5f61368c601883612ef2565b915061369782613658565b602082019050919050565b5f6020820190508181035f8301526136b981613680565b9050919050565b5f6136ca82612e4f565b91506136d583612e4f565b92508282039050818111156136ed576136ec6133e3565b5b92915050565b7f4d61782077616c6c65742063616e6e6f74206265206c657373207468616e20315f8201527f252e000000000000000000000000000000000000000000000000000000000000602082015250565b5f61374d602283612ef2565b9150613758826136f3565b604082019050919050565b5f6020820190508181035f83015261377a81613741565b9050919050565b7f466565732063616e206e6f74206265206d6f7265207468616e203230250000005f82015250565b5f6137b5601d83612ef2565b91506137c082613781565b602082019050919050565b5f6020820190508181035f8301526137e2816137a9565b9050919050565b7f43616e6e6f7420776974686472617720466c757220746f6b656e7300000000005f82015250565b5f61381d601b83612ef2565b9150613828826137e9565b602082019050919050565b5f6020820190508181035f83015261384a81613811565b9050919050565b5f8151905061385f81612e58565b92915050565b5f6020828403121561387a57613879612e16565b5b5f61388784828501613851565b91505092915050565b5f6040820190506138a35f830185613185565b6138b06020830184612ec0565b9392505050565b5f815190506138c581612e25565b92915050565b5f602082840312156138e0576138df612e16565b5b5f6138ed848285016138b7565b91505092915050565b7f486f6c64657220697320746865207a65726f20616464726573730000000000005f82015250565b5f61392a601a83612ef2565b9150613935826138f6565b602082019050919050565b5f6020820190508181035f8301526139578161391e565b9050919050565b7f4665652072656365697665722063616e6e6f74206265207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b8602383612ef2565b91506139c38261395e565b604082019050919050565b5f6020820190508181035f8301526139e5816139ac565b9050919050565b7f4d61782074782063616e6e6f74206265206c657373207468616e2031252e00005f82015250565b5f613a20601e83612ef2565b9150613a2b826139ec565b602082019050919050565b5f6020820190508181035f830152613a4d81613a14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613aae602683612ef2565b9150613ab982613a54565b604082019050919050565b5f6020820190508181035f830152613adb81613aa2565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613b16601483612ef2565b9150613b2182613ae2565b602082019050919050565b5f6020820190508181035f830152613b4381613b0a565b9050919050565b5f613b5482612e4f565b9150613b5f83612e4f565b9250828201905080821115613b7757613b766133e3565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613bd7603e83612ef2565b9150613be282613b7d565b604082019050919050565b5f6020820190508181035f830152613c0481613bcb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c65602683612ef2565b9150613c7082613c0b565b604082019050919050565b5f6020820190508181035f830152613c9281613c59565b9050919050565b7f5478204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613ccd601183612ef2565b9150613cd882613c99565b602082019050919050565b5f6020820190508181035f830152613cfa81613cc1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613d7e613d79613d7484613d5b565b613279565b612e4f565b9050919050565b613d8e81613d64565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dc681612fbf565b82525050565b5f613dd78383613dbd565b60208301905092915050565b5f602082019050919050565b5f613df982613d94565b613e038185613d9e565b9350613e0e83613dae565b805f5b83811015613e3e578151613e258882613dcc565b9750613e3083613de3565b925050600181019050613e11565b5085935050505092915050565b5f60a082019050613e5e5f830188612ec0565b613e6b6020830187613d85565b8181036040830152613e7d8186613def565b9050613e8c6060830185613185565b613e996080830184612ec0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613eda82612e4f565b9150613ee583612e4f565b925082613ef557613ef4613ea3565b5b828204905092915050565b5f81905092915050565b50565b5f613f185f83613f00565b9150613f2382613f0a565b5f82019050919050565b5f613f3782613f0d565b915081905091905056fea2646970667358221220209f6a079e39830b47258182ba3abf27f753f4f698e6b0ce62142758e99d82ad64736f6c63430008190033

Deployed Bytecode

0x608060405260043610610207575f3560e01c806370a0823111610117578063a8aa1b311161009f578063ccf8c0361161006e578063ccf8c03614610726578063dd62ed3e1461074e578063f2fde38b1461078a578063f6a78e17146107b2578063f887ea40146107c85761020e565b8063a8aa1b311461066e578063a9059cbb14610698578063b2bdfa7b146106d4578063bc337182146106fe5761020e565b8063893d20e8116100e6578063893d20e8146105a05780638d7a8ba7146105ca5780638da5cb5b146105f2578063937ebc301461061c57806395d89b41146106445761020e565b806370a08231146104e8578063715018a61461052457806377b54bad1461053a5780637d1db4a5146105765761020e565b80632b112e491161019a5780634706240211610169578063470624021461041a5780635d0044ca146104445780636c0a24eb1461046c5780636db79437146104965780636ddd1713146104be5761020e565b80632b112e49146103705780632b14ca561461039a5780632b6f6a17146103c4578063313ce567146103f05761020e565b8063095ea7b3116101d6578063095ea7b3146102b857806318160ddd146102f457806323b872dd1461031e578063293230b81461035a5761020e565b806304368f65146102125780630445b6671461023a57806306fdde031461026457806308fd3d051461028e5761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b5061023860048036038101906102339190612e82565b6107f2565b005b348015610245575f80fd5b5061024e610948565b60405161025b9190612ecf565b60405180910390f35b34801561026f575f80fd5b5061027861094e565b6040516102859190612f58565b60405180910390f35b348015610299575f80fd5b506102a261098b565b6040516102af9190612f87565b60405180910390f35b3480156102c3575f80fd5b506102de60048036038101906102d99190612ffa565b61099e565b6040516102eb9190612f87565b60405180910390f35b3480156102ff575f80fd5b50610308610a8b565b6040516103159190612ecf565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190613038565b610a94565b6040516103519190612f87565b60405180910390f35b348015610365575f80fd5b5061036e610c1e565b005b34801561037b575f80fd5b50610384610d71565b6040516103919190612ecf565b60405180910390f35b3480156103a5575f80fd5b506103ae610da2565b6040516103bb9190612ecf565b60405180910390f35b3480156103cf575f80fd5b506103d8610da8565b6040516103e793929190613088565b60405180910390f35b3480156103fb575f80fd5b50610404610dbf565b60405161041191906130d8565b60405180910390f35b348015610425575f80fd5b5061042e610dc7565b60405161043b9190612ecf565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906130f1565b610dcd565b005b348015610477575f80fd5b50610480610ef8565b60405161048d9190612ecf565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b7919061311c565b610efe565b005b3480156104c9575f80fd5b506104d2611027565b6040516104df9190612f87565b60405180910390f35b3480156104f3575f80fd5b5061050e6004803603810190610509919061315a565b61103a565b60405161051b9190612ecf565b60405180910390f35b34801561052f575f80fd5b50610538611080565b005b348015610545575f80fd5b50610560600480360381019061055b9190612ffa565b6111ce565b60405161056d9190612f87565b60405180910390f35b348015610581575f80fd5b5061058a6113d6565b6040516105979190612ecf565b60405180910390f35b3480156105ab575f80fd5b506105b46113dc565b6040516105c19190613194565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb91906131ad565b6113ea565b005b3480156105fd575f80fd5b5061060661158a565b6040516106139190613194565b60405180910390f35b348015610627575f80fd5b50610642600480360381019061063d91906131eb565b6115b1565b005b34801561064f575f80fd5b506106586118bd565b6040516106659190612f58565b60405180910390f35b348015610679575f80fd5b506106826118fa565b60405161068f9190613194565b60405180910390f35b3480156106a3575f80fd5b506106be60048036038101906106b99190612ffa565b61191f565b6040516106cb9190612f87565b60405180910390f35b3480156106df575f80fd5b506106e8611933565b6040516106f59190613194565b60405180910390f35b348015610709575f80fd5b50610724600480360381019061071f91906130f1565b611956565b005b348015610731575f80fd5b5061074c600480360381019061074791906131ad565b611a81565b005b348015610759575f80fd5b50610774600480360381019061076f919061323b565b611c75565b6040516107819190612ecf565b60405180910390f35b348015610795575f80fd5b506107b060048036038101906107ab919061315a565b611cf7565b005b3480156107bd575f80fd5b506107c6611eb4565b005b3480156107d3575f80fd5b506107dc611f8e565b6040516107e991906132d4565b60405180910390f35b6107fa611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d90613337565b60405180910390fd5b620f4240811115801561089c5750620186a08110155b6108db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d2906133c5565b60405180910390fd5b81601a60156101000a81548160ff0219169083151502179055506012600a610903919061353f565b8161090e9190613589565b600581905550808215157fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd960405160405180910390a35050565b60055481565b60606040518060400160405280600781526020017f466c757220414900000000000000000000000000000000000000000000000000815250905090565b601a60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a799190612ecf565b60405180910390a36001905092915050565b5f600254905090565b5f8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610adc611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c095782811015610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b799061363a565b60405180910390fd5b82810360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bcb611fb3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610c14858585611fba565b9150509392505050565b610c26611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990613337565b60405180910390fd5b601a60149054906101000a900460ff1615610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906136a2565b60405180910390fd5b6001601a60146101000a81548160ff02191690831515021790555042600e8190555043600d81905550600d54600e54601a60149054906101000a900460ff1615157f6a88444adba589164a0c0f1f33a72555328570cbb508a11c3213089c63c6378b60405160405180910390a4565b5f610d7b5f61103a565b610d8661dead61103a565b600254610d9391906136c0565b610d9d91906136c0565b905090565b600b5481565b6012805f0154908060010154908060020154905083565b5f6012905090565b600a5481565b610dd5611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890613337565b60405180910390fd5b620f4240811015610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e90613763565b60405180910390fd5b6012600a610eb5919061353f565b81610ec09190613589565b6004819055506004547ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c3560405160405180910390a250565b60045481565b610f06611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990613337565b60405180910390fd5b60148211158015610fa4575060148111155b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda906137cb565b60405180910390fd5b81600a8190555080600b81905550600b54600a547f3708aaa16bcac28f689a62245e6afcba1ccda04df915fc9f43b0c1a7570d1b5e60405160405180910390a35050565b601a60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611088611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6111d7611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90613337565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890613833565b60405180910390fd5b5f8203611353578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113119190613194565b602060405180830381865afa15801561132c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113509190613865565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161138e929190613890565b6020604051808303815f875af11580156113aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ce91906138cb565b905092915050565b60035481565b5f6113e561158a565b905090565b6113f2611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e390613940565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377560405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115b9611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ad57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116e557505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b906139ce565b60405180910390fd5b82600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fabe0d5e54c3b508d0c57b7b623c2be48ed55805564807278933d61d0012eec2460405160405180910390a4505050565b60606040518060400160405280600481526020017f464c555200000000000000000000000000000000000000000000000000000000815250905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61192b338484611fba565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61195e611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190613337565b60405180910390fd5b620f4240811015611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790613a36565b60405180910390fd5b6012600a611a3e919061353f565b81611a499190613589565b6003819055506003547f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c504160405160405180910390a250565b611a89611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c90613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90613940565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734660405160405180910390a35050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611cff611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613337565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090613ac4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ebc611fb3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613337565b60405180910390fd5b6002546004819055506002546003819055506003546004547fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa960405160405180910390a3565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f601a60169054906101000a900460ff1615611fe257611fdb8484846125b7565b90506125b0565b611fea61158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461206c57601a60149054906101000a900460ff1661206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290613b2c565b60405180910390fd5b5b61207461158a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158061221957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612113575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561216c5750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121c55750600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612218575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b5b1561227c575f6122288461103a565b905060045483826122399190613b4a565b111561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613bed565b60405180910390fd5b505b6122868483612744565b43600d54141580156122d7575060055460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b80156122ef5750601a60159054906101000a900460ff165b80156123085750601a60169054906101000a900460ff16155b80156123605750601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156123755761236d6127de565b43600d819055505b5f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f090613c7b565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806124d9575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124ed576124e8868587612c36565b6124ef565b835b90508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461253d9190613b4a565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a19190612ecf565b60405180910390a36001925050505b9392505050565b5f8060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390613c7b565b60405180910390fd5b82810360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546126cc9190613b4a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127309190612ecf565b60405180910390a360019150509392505050565b6003548111158061279b575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d190613ce3565b60405180910390fd5b5050565b6001601a60166101000a81548160ff021916908315150217905550610258600e546128099190613b4a565b421015612852576040518060600160405280606481526020015f81526020015f81525060155f820151815f01556020820151816001015560408201518160020155905050612876565b601260155f820154815f015560018201548160010155600282015481600201559050505b5f60055490505f600267ffffffffffffffff81111561289857612897613d01565b5b6040519080825280602002602001820160405280156128c65781602001602082028036833780820191505090505b50905030815f815181106128dd576128dc613d2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061294d5761294c613d2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016129e9959493929190613e4b565b5f604051808303815f87803b158015612a00575f80fd5b505af1158015612a12573d5f803e3d5ffd5b505050505f4790505f606460155f015483612a2d9190613589565b612a379190613ed0565b90505f606460156001015484612a4d9190613589565b612a579190613ed0565b90505f818385612a6791906136c0565b612a7191906136c0565b90505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612ab990613f2d565b5f6040518083038185875af1925050503d805f8114612af3576040519150601f19603f3d011682016040523d82523d5f602084013e612af8565b606091505b5050905060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612b4190613f2d565b5f6040518083038185875af1925050503d805f8114612b7b576040519150601f19603f3d011682016040523d82523d5f602084013e612b80565b606091505b50508091505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612bcb90613f2d565b5f6040518083038185875af1925050503d805f8114612c05576040519150601f19603f3d011682016040523d82523d5f602084013e612c0a565b606091505b5050809150505f9050505050505050505f601a60166101000a81548160ff021916908315150217905550565b5f805f9050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb0576064600b5485612c9f9190613589565b612ca99190613ed0565b9050612d43565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612d25576064600a5485612d149190613589565b612d1e9190613ed0565b9050612d42565b6064600c5485612d359190613589565b612d3f9190613ed0565b90505b5b8060065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612d8f9190613b4a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612df39190612ecf565b60405180910390a35f8185612e0891906136c0565b905080925050509392505050565b5f80fd5b5f8115159050919050565b612e2e81612e1a565b8114612e38575f80fd5b50565b5f81359050612e4981612e25565b92915050565b5f819050919050565b612e6181612e4f565b8114612e6b575f80fd5b50565b5f81359050612e7c81612e58565b92915050565b5f8060408385031215612e9857612e97612e16565b5b5f612ea585828601612e3b565b9250506020612eb685828601612e6e565b9150509250929050565b612ec981612e4f565b82525050565b5f602082019050612ee25f830184612ec0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612f2a82612ee8565b612f348185612ef2565b9350612f44818560208601612f02565b612f4d81612f10565b840191505092915050565b5f6020820190508181035f830152612f708184612f20565b905092915050565b612f8181612e1a565b82525050565b5f602082019050612f9a5f830184612f78565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fc982612fa0565b9050919050565b612fd981612fbf565b8114612fe3575f80fd5b50565b5f81359050612ff481612fd0565b92915050565b5f80604083850312156130105761300f612e16565b5b5f61301d85828601612fe6565b925050602061302e85828601612e6e565b9150509250929050565b5f805f6060848603121561304f5761304e612e16565b5b5f61305c86828701612fe6565b935050602061306d86828701612fe6565b925050604061307e86828701612e6e565b9150509250925092565b5f60608201905061309b5f830186612ec0565b6130a86020830185612ec0565b6130b56040830184612ec0565b949350505050565b5f60ff82169050919050565b6130d2816130bd565b82525050565b5f6020820190506130eb5f8301846130c9565b92915050565b5f6020828403121561310657613105612e16565b5b5f61311384828501612e6e565b91505092915050565b5f806040838503121561313257613131612e16565b5b5f61313f85828601612e6e565b925050602061315085828601612e6e565b9150509250929050565b5f6020828403121561316f5761316e612e16565b5b5f61317c84828501612fe6565b91505092915050565b61318e81612fbf565b82525050565b5f6020820190506131a75f830184613185565b92915050565b5f80604083850312156131c3576131c2612e16565b5b5f6131d085828601612fe6565b92505060206131e185828601612e3b565b9150509250929050565b5f805f6060848603121561320257613201612e16565b5b5f61320f86828701612fe6565b935050602061322086828701612fe6565b925050604061323186828701612fe6565b9150509250925092565b5f806040838503121561325157613250612e16565b5b5f61325e85828601612fe6565b925050602061326f85828601612fe6565b9150509250929050565b5f819050919050565b5f61329c61329761329284612fa0565b613279565b612fa0565b9050919050565b5f6132ad82613282565b9050919050565b5f6132be826132a3565b9050919050565b6132ce816132b4565b82525050565b5f6020820190506132e75f8301846132c5565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613321602083612ef2565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f5377617020616d6f756e742063616e206e6f74206265206d6f7265207468616e5f8201527f203125206f72206c657373207468616e20302e31250000000000000000000000602082015250565b5f6133af603583612ef2565b91506133ba82613355565b604082019050919050565b5f6020820190508181035f8301526133dc816133a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561346557808604811115613441576134406133e3565b5b60018516156134505780820291505b808102905061345e85613410565b9450613425565b94509492505050565b5f8261347d5760019050613538565b8161348a575f9050613538565b81600181146134a057600281146134aa576134d9565b6001915050613538565b60ff8411156134bc576134bb6133e3565b5b8360020a9150848211156134d3576134d26133e3565b5b50613538565b5060208310610133831016604e8410600b841016171561350e5782820a905083811115613509576135086133e3565b5b613538565b61351b848484600161341c565b92509050818404811115613532576135316133e3565b5b81810290505b9392505050565b5f61354982612e4f565b9150613554836130bd565b92506135817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461346e565b905092915050565b5f61359382612e4f565b915061359e83612e4f565b92508282026135ac81612e4f565b915082820484148315176135c3576135c26133e3565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613624602883612ef2565b915061362f826135ca565b604082019050919050565b5f6020820190508181035f83015261365181613618565b9050919050565b7f54726164696e6720616c726561647920456e61626c65642e00000000000000005f82015250565b5f61368c601883612ef2565b915061369782613658565b602082019050919050565b5f6020820190508181035f8301526136b981613680565b9050919050565b5f6136ca82612e4f565b91506136d583612e4f565b92508282039050818111156136ed576136ec6133e3565b5b92915050565b7f4d61782077616c6c65742063616e6e6f74206265206c657373207468616e20315f8201527f252e000000000000000000000000000000000000000000000000000000000000602082015250565b5f61374d602283612ef2565b9150613758826136f3565b604082019050919050565b5f6020820190508181035f83015261377a81613741565b9050919050565b7f466565732063616e206e6f74206265206d6f7265207468616e203230250000005f82015250565b5f6137b5601d83612ef2565b91506137c082613781565b602082019050919050565b5f6020820190508181035f8301526137e2816137a9565b9050919050565b7f43616e6e6f7420776974686472617720466c757220746f6b656e7300000000005f82015250565b5f61381d601b83612ef2565b9150613828826137e9565b602082019050919050565b5f6020820190508181035f83015261384a81613811565b9050919050565b5f8151905061385f81612e58565b92915050565b5f6020828403121561387a57613879612e16565b5b5f61388784828501613851565b91505092915050565b5f6040820190506138a35f830185613185565b6138b06020830184612ec0565b9392505050565b5f815190506138c581612e25565b92915050565b5f602082840312156138e0576138df612e16565b5b5f6138ed848285016138b7565b91505092915050565b7f486f6c64657220697320746865207a65726f20616464726573730000000000005f82015250565b5f61392a601a83612ef2565b9150613935826138f6565b602082019050919050565b5f6020820190508181035f8301526139578161391e565b9050919050565b7f4665652072656365697665722063616e6e6f74206265207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b8602383612ef2565b91506139c38261395e565b604082019050919050565b5f6020820190508181035f8301526139e5816139ac565b9050919050565b7f4d61782074782063616e6e6f74206265206c657373207468616e2031252e00005f82015250565b5f613a20601e83612ef2565b9150613a2b826139ec565b602082019050919050565b5f6020820190508181035f830152613a4d81613a14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613aae602683612ef2565b9150613ab982613a54565b604082019050919050565b5f6020820190508181035f830152613adb81613aa2565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613b16601483612ef2565b9150613b2182613ae2565b602082019050919050565b5f6020820190508181035f830152613b4381613b0a565b9050919050565b5f613b5482612e4f565b9150613b5f83612e4f565b9250828201905080821115613b7757613b766133e3565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f613bd7603e83612ef2565b9150613be282613b7d565b604082019050919050565b5f6020820190508181035f830152613c0481613bcb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c65602683612ef2565b9150613c7082613c0b565b604082019050919050565b5f6020820190508181035f830152613c9281613c59565b9050919050565b7f5478204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f613ccd601183612ef2565b9150613cd882613c99565b602082019050919050565b5f6020820190508181035f830152613cfa81613cc1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613d7e613d79613d7484613d5b565b613279565b612e4f565b9050919050565b613d8e81613d64565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dc681612fbf565b82525050565b5f613dd78383613dbd565b60208301905092915050565b5f602082019050919050565b5f613df982613d94565b613e038185613d9e565b9350613e0e83613dae565b805f5b83811015613e3e578151613e258882613dcc565b9750613e3083613de3565b925050600181019050613e11565b5085935050505092915050565b5f60a082019050613e5e5f830188612ec0565b613e6b6020830187613d85565b8181036040830152613e7d8186613def565b9050613e8c6060830185613185565b613e996080830184612ec0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613eda82612e4f565b9150613ee583612e4f565b925082613ef557613ef4613ea3565b5b828204905092915050565b5f81905092915050565b50565b5f613f185f83613f00565b9150613f2382613f0a565b5f82019050919050565b5f613f3782613f0d565b915081905091905056fea2646970667358221220209f6a079e39830b47258182ba3abf27f753f4f698e6b0ce62142758e99d82ad64736f6c63430008190033

Deployed Bytecode Sourcemap

3801:12379:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15687:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4300:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7468:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5195:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7890:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7198:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8278:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12793:289;;;;;;;;;;;;;:::i;:::-;;16040:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4608:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5001:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7292:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4574:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8808:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4240:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14824:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5239:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7638:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1889:150;;;;;;;;;;;;;:::i;:::-;;12418:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4184:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7554:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14576:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1675:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15100:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7378:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5163:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8114:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1391:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9088:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14299:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7749:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2047:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12211:199;;;;;;;;;;;;;:::i;:::-;;5093:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15687:341;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15799:3:::1;15788:7;:14;;:32;;;;;15817:3;15806:7;:14;;15788:32;15779:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;15904:8;15890:11;;:22;;;;;;;;;;;;;;;;;;4117:2;15949;:13;;;;:::i;:::-;15939:7;:23;;;;:::i;:::-;15923:13;:39;;;;16012:7;16002:8;15978:42;;;;;;;;;;;;15687:341:::0;;:::o;4300:50::-;;;;:::o;7468:80::-;7516:13;7540:5;;;;;;;;;;;;;;;;;7533:12;;7468:80;:::o;5195:31::-;;;;;;;;;;;;;:::o;7890:216::-;7965:4;8017:6;7982:11;:23;7994:10;7982:23;;;;;;;;;;;;;;;:32;8006:7;7982:32;;;;;;;;;;;;;;;:41;;;;8060:7;8039:37;;8048:10;8039:37;;;8069:6;8039:37;;;;;;:::i;:::-;;;;;;;;8094:4;8087:11;;7890:216;;;;:::o;7198:88::-;7253:7;7271:12;;7264:19;;7198:88;:::o;8278:522::-;8378:4;8395:24;8422:11;:19;8434:6;8422:19;;;;;;;;;;;;;;;:33;8442:12;:10;:12::i;:::-;8422:33;;;;;;;;;;;;;;;;8395:60;;8489:17;8469:16;:37;8466:267;;8550:6;8530:16;:26;;8522:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8700:6;8681:16;:25;8645:11;:19;8657:6;8645:19;;;;;;;;;;;;;;;:33;8665:12;:10;:12::i;:::-;8645:33;;;;;;;;;;;;;;;:61;;;;8466:267;8752:40;8766:6;8774:9;8785:6;8752:13;:40::i;:::-;8745:47;;;8278:522;;;;;:::o;12793:289::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12856:11:::1;;;;;;;;;;;12855:12;12847:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12920:4;12906:11;;:18;;;;;;;;;;;;;;;;;;12954:15;12935:16;:34;;;;12991:12;12980:8;:23;;;;13065:8;;13047:16;;13034:11;;;;;;;;;;;13019:55;;;;;;;;;;;;12793:289::o:0;16040:135::-;16093:7;16152:15;3960:42;16152:9;:15::i;:::-;16135;3887:42;16135:9;:15::i;:::-;16120:12;;:30;;;;:::i;:::-;:47;;;;:::i;:::-;16113:54;;16040:135;:::o;4608:28::-;;;;:::o;5001:51::-;;;;;;;;;;;;;;;;;;;:::o;7292:80::-;7344:5;4117:2;7353:16;;7292:80;:::o;4574:27::-;;;;:::o;8808:272::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8912:3:::1;8893:15;:22;;8885:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;4117:2;9002;:13;;;;:::i;:::-;8984:15;:31;;;;:::i;:::-;8965:16;:50;;;;9048:16;;9031:34;;;;;;;;;;8808:272:::0;:::o;4240:53::-;;;;:::o;14824:268::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14929:2:::1;14918:7;:13;;:31;;;;;14947:2;14935:8;:14;;14918:31;14909:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15004:7;14995:6;:16;;;;15032:8;15022:7;:18;;;;15076:7;;15068:6;;15056:28;;;;;;;;;;14824:268:::0;;:::o;5239:30::-;;;;;;;;;;;;;:::o;7638:105::-;7704:7;7722:9;:18;7732:7;7722:18;;;;;;;;;;;;;;;;7715:25;;7638:105;;;:::o;1889:150::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1998:1:::1;1961:40;;1982:6;::::0;::::1;;;;;;;;1961:40;;;;;;;;;;;;2029:1;2012:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1889:150::o:0;12418:365::-;12509:4;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12567:4:::1;12534:38;;12542:12;12534:38;;::::0;12526:78:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12628:1;12618:6;:11:::0;12615:95:::1;;12660:12;12654:29;;;12692:4;12654:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12645:53;;12615:95;12733:12;12727:28;;;12756:10;12768:6;12727:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12720:55;;12418:365:::0;;;;:::o;4184:49::-;;;;:::o;7554:78::-;7606:7;7623;:5;:7::i;:::-;7616:14;;7554:78;:::o;14576:240::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14687:1:::1;14669:20;;:6;:20;;::::0;14661:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14757:6;14731:15;:23;14747:6;14731:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14801:6;14779:29;;14793:6;14779:29;;;;;;;;;;;;14576:240:::0;;:::o;1675:79::-;1713:7;1740:6;;;;;;;;;;;1733:13;;1675:79;:::o;15100:579::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15290:1:::1;15257:35;;:21;:35;;;;:68;;;;;15323:1;15296:29;;:15;:29;;;;15257:68;:112;;;;;15367:1;15329:40;;:26;:40;;;;15257:112;15249:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;15443:21;15420:20;;:44;;;;;;;;;;;;;;;;;;15492:15;15475:14;;:32;;;;;;;;;;;;;;;;;;15546:26;15518:25;;:54;;;;;;;;;;;;;;;;;;15645:25;;;;;;;;;;;15588:83;;15629:14;;;;;;;;;;;15588:83;;15607:20;;;;;;;;;;;15588:83;;;;;;;;;;;;15100:579:::0;;;:::o;7378:84::-;7428:13;7452:7;;;;;;;;;;;;;;;;;7445:14;;7378:84;:::o;5163:19::-;;;;;;;;;;;;;:::o;8114:156::-;8194:4;8218:44;8232:10;8244:9;8255:6;8218:13;:44::i;:::-;8211:51;;8114:156;;;;:::o;1391:21::-;;;;;;;;;;;;:::o;9088:235::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9180:3:::1;9165:11;:18;;9157:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;4117:2;9260;:13;;;;:::i;:::-;9246:11;:27;;;;:::i;:::-;9231:12;:42;;;;9302:12;;9289:26;;;;;;;;;;9088:235:::0;:::o;14299:269::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14403:1:::1;14385:20;;:6;:20;;::::0;14377:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14469:6;14447:11;:19;14459:6;14447:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14512:6;14486:15;:23;14502:6;14486:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14553:6;14534:26;;14545:6;14534:26;;;;;;;;;;;;14299:269:::0;;:::o;7749:133::-;7833:7;7851:11;:19;7863:6;7851:19;;;;;;;;;;;;;;;:28;7871:7;7851:28;;;;;;;;;;;;;;;;7844:35;;7749:133;;;;:::o;2047:244::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2156:1:::1;2136:22;;:8;:22;;::::0;2128:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2246:8;2217:38;;2238:6;::::0;::::1;;;;;;;;2217:38;;;;;;;;;;;;2275:8;2266:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2047:244:::0;:::o;12211:199::-;1812:12;:10;:12::i;:::-;1802:22;;:6;;;;;;;;;;:22;;;1794:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12288:12:::1;;12269:16;:31;;;;12326:12;;12311;:27;;;;12389:12;;12371:16;;12354:48;;;;;;;;;;12211:199::o:0;5093:24::-;;;;;;;;;;;;;:::o;1234:115::-;1287:15;1330:10;1315:26;;1234:115;:::o;9331:1527::-;9423:4;9445:6;;;;;;;;;;;9442:63;;;9461:41;9476:6;9484:9;9495:6;9461:14;:41::i;:::-;9454:48;;;;9442:63;9530:7;:5;:7::i;:::-;9520:17;;:6;:17;;;9517:104;;9561:11;;;;;;;;;;;9553:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9517:104;9654:7;:5;:7::i;:::-;9644:17;;:6;:17;;;;:169;;;;9687:4;9666:26;;:9;:26;;;;:57;;;;;3887:42;9697:26;;:9;:26;;;;9666:57;:78;;;;;9740:4;;;;;;;;;;;9727:17;;:9;:17;;;;9666:78;:115;;;;;9761:20;;;;;;;;;;;9748:33;;:9;:33;;;;9666:115;:146;;;;;9786:15;:26;9802:9;9786:26;;;;;;;;;;;;;;;;;;;;;;;;;9785:27;9666:146;9644:169;9640:362;;;9829:18;9850:20;9860:9;9850;:20::i;:::-;9829:41;;9918:16;;9907:6;9894:10;:19;;;;:::i;:::-;9893:41;;9885:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;9814:188;9640:362;10035:28;10048:6;10056;10035:12;:28::i;:::-;10105:12;10093:8;;:24;;:82;;;;;10162:13;;10134:9;:24;10152:4;10134:24;;;;;;;;;;;;;;;;:41;;10093:82;:110;;;;;10192:11;;;;;;;;;;;10093:110;:134;;;;;10221:6;;;;;;;;;;;10220:7;10093:134;:168;;;;;10257:4;;;;;;;;;;;10244:17;;:9;:17;;;10093:168;10076:276;;;10288:10;:8;:10::i;:::-;10324:12;10313:8;:23;;;;10076:276;10372:21;10396:9;:17;10406:6;10396:17;;;;;;;;;;;;;;;;10372:41;;10449:6;10432:13;:23;;10424:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10570:6;10554:13;:22;10534:9;:17;10544:6;10534:17;;;;;;;;;;;;;;;:42;;;;10600:22;10626:11;:19;10638:6;10626:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;10649:11;:22;10661:9;10649:22;;;;;;;;;;;;;;;;;;;;;;;;;10626:45;10625:93;;10684:34;10692:6;10700;10708:9;10684:7;:34::i;:::-;10625:93;;;10675:6;10625:93;10600:118;;10753:14;10729:9;:20;10739:9;10729:20;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;10802:9;10785:43;;10794:6;10785:43;;;10813:14;10785:43;;;;;;:::i;:::-;;;;;;;;10846:4;10839:11;;;;9331:1527;;;;;;:::o;10870:447::-;10963:4;10980:21;11004:9;:17;11014:6;11004:17;;;;;;;;;;;;;;;;10980:41;;11057:6;11040:13;:23;;11032:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11178:6;11162:13;:22;11142:9;:17;11152:6;11142:17;;;;;;;;;;;;;;;:42;;;;11230:6;11206:9;:20;11216:9;11206:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;11269:9;11252:35;;11261:6;11252:35;;;11280:6;11252:35;;;;;;:::i;:::-;;;;;;;;11305:4;11298:11;;;10870:447;;;;;:::o;11325:166::-;11422:12;;11412:6;:22;;:49;;;;11438:15;:23;11454:6;11438:23;;;;;;;;;;;;;;;;;;;;;;;;;11412:49;11404:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11325:166;;:::o;13090:1201::-;5325:4;5316:6;;:13;;;;;;;;;;;;;;;;;;13180:10:::1;13161:16;;:29;;;;:::i;:::-;13143:15;:47;13139:165;;;13218:19;;;;;;;;13227:3;13218:19;;;;13232:1;13218:19;;;;13235:1;13218:19;;::::0;13207:8:::1;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;13139:165;;;13280:12;13269:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;13139:165;13316:20;13339:13;;13316:36;;13365:21;13403:1;13389:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13365:40;;13434:4;13416;13421:1;13416:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13460:4;;;;;;;;;;;13450;13455:1;13450:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;13477:6;;;;;;;;;;;:57;;;13549:12;13576:1;13592:4;13619;13639:15;13477:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13678:19;13700:21;13678:43;;13732:26;13798:3;13776:8;:18;;;13762:11;:32;;;;:::i;:::-;13761:40;;;;:::i;:::-;13732:69;;13812:20;13866:3;13850:8;:12;;;13836:11;:26;;;;:::i;:::-;13835:34;;;;:::i;:::-;13812:57;;13880:31;13949:12;13928:18;13914:11;:32;;;;:::i;:::-;:47;;;;:::i;:::-;13880:81;;13975:15;14003:20;;;;;;;;;;;13995:34;;14037:18;13995:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13974:86;;;14095:14;;;;;;;;;;;14087:28;;14123:12;14087:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14071:69;;;;;14175:25;;;;;;;;;;;14167:39;;14214:23;14167:75;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14151:91;;;;;14276:5;14263:18;;13128:1163;;;;;;;5343:5:::0;5334:6;;:14;;;;;;;;;;;;;;;;;;13090:1201::o;11621:582::-;11707:7;11727:17;11747:1;11727:21;;11777:4;;;;;;;;;;;11764:17;;:9;:17;;;11761:243;;11831:3;11820:7;;11811:6;:16;;;;:::i;:::-;11810:24;;;;:::i;:::-;11798:36;;11761:243;;;11865:4;;;;;;;;;;;11855:14;;:6;:14;;;11852:152;;11918:3;11908:6;;11899;:15;;;;:::i;:::-;11898:23;;;;:::i;:::-;11886:35;;11852:152;;;11989:3;11974:11;;11965:6;:20;;;;:::i;:::-;11964:28;;;;:::i;:::-;11952:40;;11852:152;11761:243;12044:9;12016;:24;12034:4;12016:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;12094:4;12069:42;;12078:6;12069:42;;;12101:9;12069:42;;;;;;:::i;:::-;;;;;;;;12122:20;12154:9;12145:6;:18;;;;:::i;:::-;12122:41;;12183:12;12176:19;;;;11621:582;;;;;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:77::-;728:7;757:5;746:16;;691:77;;;:::o;774:122::-;847:24;865:5;847:24;:::i;:::-;840:5;837:35;827:63;;886:1;883;876:12;827:63;774:122;:::o;902:139::-;948:5;986:6;973:20;964:29;;1002:33;1029:5;1002:33;:::i;:::-;902:139;;;;:::o;1047:468::-;1112:6;1120;1169:2;1157:9;1148:7;1144:23;1140:32;1137:119;;;1175:79;;:::i;:::-;1137:119;1295:1;1320:50;1362:7;1353:6;1342:9;1338:22;1320:50;:::i;:::-;1310:60;;1266:114;1419:2;1445:53;1490:7;1481:6;1470:9;1466:22;1445:53;:::i;:::-;1435:63;;1390:118;1047:468;;;;;:::o;1521:118::-;1608:24;1626:5;1608:24;:::i;:::-;1603:3;1596:37;1521:118;;:::o;1645:222::-;1738:4;1776:2;1765:9;1761:18;1753:26;;1789:71;1857:1;1846:9;1842:17;1833:6;1789:71;:::i;:::-;1645:222;;;;:::o;1873:99::-;1925:6;1959:5;1953:12;1943:22;;1873:99;;;:::o;1978:169::-;2062:11;2096:6;2091:3;2084:19;2136:4;2131:3;2127:14;2112:29;;1978:169;;;;:::o;2153:139::-;2242:6;2237:3;2232;2226:23;2283:1;2274:6;2269:3;2265:16;2258:27;2153:139;;;:::o;2298:102::-;2339:6;2390:2;2386:7;2381:2;2374:5;2370:14;2366:28;2356:38;;2298:102;;;:::o;2406:377::-;2494:3;2522:39;2555:5;2522:39;:::i;:::-;2577:71;2641:6;2636:3;2577:71;:::i;:::-;2570:78;;2657:65;2715:6;2710:3;2703:4;2696:5;2692:16;2657:65;:::i;:::-;2747:29;2769:6;2747:29;:::i;:::-;2742:3;2738:39;2731:46;;2498:285;2406:377;;;;:::o;2789:313::-;2902:4;2940:2;2929:9;2925:18;2917:26;;2989:9;2983:4;2979:20;2975:1;2964:9;2960:17;2953:47;3017:78;3090:4;3081:6;3017:78;:::i;:::-;3009:86;;2789:313;;;;:::o;3108:109::-;3189:21;3204:5;3189:21;:::i;:::-;3184:3;3177:34;3108:109;;:::o;3223:210::-;3310:4;3348:2;3337:9;3333:18;3325:26;;3361:65;3423:1;3412:9;3408:17;3399:6;3361:65;:::i;:::-;3223:210;;;;:::o;3439:126::-;3476:7;3516:42;3509:5;3505:54;3494:65;;3439:126;;;:::o;3571:96::-;3608:7;3637:24;3655:5;3637:24;:::i;:::-;3626:35;;3571:96;;;:::o;3673:122::-;3746:24;3764:5;3746:24;:::i;:::-;3739:5;3736:35;3726:63;;3785:1;3782;3775:12;3726:63;3673:122;:::o;3801:139::-;3847:5;3885:6;3872:20;3863:29;;3901:33;3928:5;3901:33;:::i;:::-;3801:139;;;;:::o;3946:474::-;4014:6;4022;4071:2;4059:9;4050:7;4046:23;4042:32;4039:119;;;4077:79;;:::i;:::-;4039:119;4197:1;4222:53;4267:7;4258:6;4247:9;4243:22;4222:53;:::i;:::-;4212:63;;4168:117;4324:2;4350:53;4395:7;4386:6;4375:9;4371:22;4350:53;:::i;:::-;4340:63;;4295:118;3946:474;;;;;:::o;4426:619::-;4503:6;4511;4519;4568:2;4556:9;4547:7;4543:23;4539:32;4536:119;;;4574:79;;:::i;:::-;4536:119;4694:1;4719:53;4764:7;4755:6;4744:9;4740:22;4719:53;:::i;:::-;4709:63;;4665:117;4821:2;4847:53;4892:7;4883:6;4872:9;4868:22;4847:53;:::i;:::-;4837:63;;4792:118;4949:2;4975:53;5020:7;5011:6;5000:9;4996:22;4975:53;:::i;:::-;4965:63;;4920:118;4426:619;;;;;:::o;5051:442::-;5200:4;5238:2;5227:9;5223:18;5215:26;;5251:71;5319:1;5308:9;5304:17;5295:6;5251:71;:::i;:::-;5332:72;5400:2;5389:9;5385:18;5376:6;5332:72;:::i;:::-;5414;5482:2;5471:9;5467:18;5458:6;5414:72;:::i;:::-;5051:442;;;;;;:::o;5499:86::-;5534:7;5574:4;5567:5;5563:16;5552:27;;5499:86;;;:::o;5591:112::-;5674:22;5690:5;5674:22;:::i;:::-;5669:3;5662:35;5591:112;;:::o;5709:214::-;5798:4;5836:2;5825:9;5821:18;5813:26;;5849:67;5913:1;5902:9;5898:17;5889:6;5849:67;:::i;:::-;5709:214;;;;:::o;5929:329::-;5988:6;6037:2;6025:9;6016:7;6012:23;6008:32;6005:119;;;6043:79;;:::i;:::-;6005:119;6163:1;6188:53;6233:7;6224:6;6213:9;6209:22;6188:53;:::i;:::-;6178:63;;6134:117;5929:329;;;;:::o;6264:474::-;6332:6;6340;6389:2;6377:9;6368:7;6364:23;6360:32;6357:119;;;6395:79;;:::i;:::-;6357:119;6515:1;6540:53;6585:7;6576:6;6565:9;6561:22;6540:53;:::i;:::-;6530:63;;6486:117;6642:2;6668:53;6713:7;6704:6;6693:9;6689:22;6668:53;:::i;:::-;6658:63;;6613:118;6264:474;;;;;:::o;6744:329::-;6803:6;6852:2;6840:9;6831:7;6827:23;6823:32;6820:119;;;6858:79;;:::i;:::-;6820:119;6978:1;7003:53;7048:7;7039:6;7028:9;7024:22;7003:53;:::i;:::-;6993:63;;6949:117;6744:329;;;;:::o;7079:118::-;7166:24;7184:5;7166:24;:::i;:::-;7161:3;7154:37;7079:118;;:::o;7203:222::-;7296:4;7334:2;7323:9;7319:18;7311:26;;7347:71;7415:1;7404:9;7400:17;7391:6;7347:71;:::i;:::-;7203:222;;;;:::o;7431:468::-;7496:6;7504;7553:2;7541:9;7532:7;7528:23;7524:32;7521:119;;;7559:79;;:::i;:::-;7521:119;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:50;7874:7;7865:6;7854:9;7850:22;7832:50;:::i;:::-;7822:60;;7777:115;7431:468;;;;;:::o;7905:619::-;7982:6;7990;7998;8047:2;8035:9;8026:7;8022:23;8018:32;8015:119;;;8053:79;;:::i;:::-;8015:119;8173:1;8198:53;8243:7;8234:6;8223:9;8219:22;8198:53;:::i;:::-;8188:63;;8144:117;8300:2;8326:53;8371:7;8362:6;8351:9;8347:22;8326:53;:::i;:::-;8316:63;;8271:118;8428:2;8454:53;8499:7;8490:6;8479:9;8475:22;8454:53;:::i;:::-;8444:63;;8399:118;7905:619;;;;;:::o;8530:474::-;8598:6;8606;8655:2;8643:9;8634:7;8630:23;8626:32;8623:119;;;8661:79;;:::i;:::-;8623:119;8781:1;8806:53;8851:7;8842:6;8831:9;8827:22;8806:53;:::i;:::-;8796:63;;8752:117;8908:2;8934:53;8979:7;8970:6;8959:9;8955:22;8934:53;:::i;:::-;8924:63;;8879:118;8530:474;;;;;:::o;9010:60::-;9038:3;9059:5;9052:12;;9010:60;;;:::o;9076:142::-;9126:9;9159:53;9177:34;9186:24;9204:5;9186:24;:::i;:::-;9177:34;:::i;:::-;9159:53;:::i;:::-;9146:66;;9076:142;;;:::o;9224:126::-;9274:9;9307:37;9338:5;9307:37;:::i;:::-;9294:50;;9224:126;;;:::o;9356:144::-;9424:9;9457:37;9488:5;9457:37;:::i;:::-;9444:50;;9356:144;;;:::o;9506:167::-;9611:55;9660:5;9611:55;:::i;:::-;9606:3;9599:68;9506:167;;:::o;9679:258::-;9790:4;9828:2;9817:9;9813:18;9805:26;;9841:89;9927:1;9916:9;9912:17;9903:6;9841:89;:::i;:::-;9679:258;;;;:::o;9943:182::-;10083:34;10079:1;10071:6;10067:14;10060:58;9943:182;:::o;10131:366::-;10273:3;10294:67;10358:2;10353:3;10294:67;:::i;:::-;10287:74;;10370:93;10459:3;10370:93;:::i;:::-;10488:2;10483:3;10479:12;10472:19;;10131:366;;;:::o;10503:419::-;10669:4;10707:2;10696:9;10692:18;10684:26;;10756:9;10750:4;10746:20;10742:1;10731:9;10727:17;10720:47;10784:131;10910:4;10784:131;:::i;:::-;10776:139;;10503:419;;;:::o;10928:240::-;11068:34;11064:1;11056:6;11052:14;11045:58;11137:23;11132:2;11124:6;11120:15;11113:48;10928:240;:::o;11174:366::-;11316:3;11337:67;11401:2;11396:3;11337:67;:::i;:::-;11330:74;;11413:93;11502:3;11413:93;:::i;:::-;11531:2;11526:3;11522:12;11515:19;;11174:366;;;:::o;11546:419::-;11712:4;11750:2;11739:9;11735:18;11727:26;;11799:9;11793:4;11789:20;11785:1;11774:9;11770:17;11763:47;11827:131;11953:4;11827:131;:::i;:::-;11819:139;;11546:419;;;:::o;11971:180::-;12019:77;12016:1;12009:88;12116:4;12113:1;12106:15;12140:4;12137:1;12130:15;12157:102;12199:8;12246:5;12243:1;12239:13;12218:34;;12157:102;;;:::o;12265:848::-;12326:5;12333:4;12357:6;12348:15;;12381:5;12372:14;;12395:712;12416:1;12406:8;12403:15;12395:712;;;12511:4;12506:3;12502:14;12496:4;12493:24;12490:50;;;12520:18;;:::i;:::-;12490:50;12570:1;12560:8;12556:16;12553:451;;;12985:4;12978:5;12974:16;12965:25;;12553:451;13035:4;13029;13025:15;13017:23;;13065:32;13088:8;13065:32;:::i;:::-;13053:44;;12395:712;;;12265:848;;;;;;;:::o;13119:1073::-;13173:5;13364:8;13354:40;;13385:1;13376:10;;13387:5;;13354:40;13413:4;13403:36;;13430:1;13421:10;;13432:5;;13403:36;13499:4;13547:1;13542:27;;;;13583:1;13578:191;;;;13492:277;;13542:27;13560:1;13551:10;;13562:5;;;13578:191;13623:3;13613:8;13610:17;13607:43;;;13630:18;;:::i;:::-;13607:43;13679:8;13676:1;13672:16;13663:25;;13714:3;13707:5;13704:14;13701:40;;;13721:18;;:::i;:::-;13701:40;13754:5;;;13492:277;;13878:2;13868:8;13865:16;13859:3;13853:4;13850:13;13846:36;13828:2;13818:8;13815:16;13810:2;13804:4;13801:12;13797:35;13781:111;13778:246;;;13934:8;13928:4;13924:19;13915:28;;13969:3;13962:5;13959:14;13956:40;;;13976:18;;:::i;:::-;13956:40;14009:5;;13778:246;14049:42;14087:3;14077:8;14071:4;14068:1;14049:42;:::i;:::-;14034:57;;;;14123:4;14118:3;14114:14;14107:5;14104:25;14101:51;;;14132:18;;:::i;:::-;14101:51;14181:4;14174:5;14170:16;14161:25;;13119:1073;;;;;;:::o;14198:281::-;14256:5;14280:23;14298:4;14280:23;:::i;:::-;14272:31;;14324:25;14340:8;14324:25;:::i;:::-;14312:37;;14368:104;14405:66;14395:8;14389:4;14368:104;:::i;:::-;14359:113;;14198:281;;;;:::o;14485:410::-;14525:7;14548:20;14566:1;14548:20;:::i;:::-;14543:25;;14582:20;14600:1;14582:20;:::i;:::-;14577:25;;14637:1;14634;14630:9;14659:30;14677:11;14659:30;:::i;:::-;14648:41;;14838:1;14829:7;14825:15;14822:1;14819:22;14799:1;14792:9;14772:83;14749:139;;14868:18;;:::i;:::-;14749:139;14533:362;14485:410;;;;:::o;14901:227::-;15041:34;15037:1;15029:6;15025:14;15018:58;15110:10;15105:2;15097:6;15093:15;15086:35;14901:227;:::o;15134:366::-;15276:3;15297:67;15361:2;15356:3;15297:67;:::i;:::-;15290:74;;15373:93;15462:3;15373:93;:::i;:::-;15491:2;15486:3;15482:12;15475:19;;15134:366;;;:::o;15506:419::-;15672:4;15710:2;15699:9;15695:18;15687:26;;15759:9;15753:4;15749:20;15745:1;15734:9;15730:17;15723:47;15787:131;15913:4;15787:131;:::i;:::-;15779:139;;15506:419;;;:::o;15931:174::-;16071:26;16067:1;16059:6;16055:14;16048:50;15931:174;:::o;16111:366::-;16253:3;16274:67;16338:2;16333:3;16274:67;:::i;:::-;16267:74;;16350:93;16439:3;16350:93;:::i;:::-;16468:2;16463:3;16459:12;16452:19;;16111:366;;;:::o;16483:419::-;16649:4;16687:2;16676:9;16672:18;16664:26;;16736:9;16730:4;16726:20;16722:1;16711:9;16707:17;16700:47;16764:131;16890:4;16764:131;:::i;:::-;16756:139;;16483:419;;;:::o;16908:194::-;16948:4;16968:20;16986:1;16968:20;:::i;:::-;16963:25;;17002:20;17020:1;17002:20;:::i;:::-;16997:25;;17046:1;17043;17039:9;17031:17;;17070:1;17064:4;17061:11;17058:37;;;17075:18;;:::i;:::-;17058:37;16908:194;;;;:::o;17108:221::-;17248:34;17244:1;17236:6;17232:14;17225:58;17317:4;17312:2;17304:6;17300:15;17293:29;17108:221;:::o;17335:366::-;17477:3;17498:67;17562:2;17557:3;17498:67;:::i;:::-;17491:74;;17574:93;17663:3;17574:93;:::i;:::-;17692:2;17687:3;17683:12;17676:19;;17335:366;;;:::o;17707:419::-;17873:4;17911:2;17900:9;17896:18;17888:26;;17960:9;17954:4;17950:20;17946:1;17935:9;17931:17;17924:47;17988:131;18114:4;17988:131;:::i;:::-;17980:139;;17707:419;;;:::o;18132:179::-;18272:31;18268:1;18260:6;18256:14;18249:55;18132:179;:::o;18317:366::-;18459:3;18480:67;18544:2;18539:3;18480:67;:::i;:::-;18473:74;;18556:93;18645:3;18556:93;:::i;:::-;18674:2;18669:3;18665:12;18658:19;;18317:366;;;:::o;18689:419::-;18855:4;18893:2;18882:9;18878:18;18870:26;;18942:9;18936:4;18932:20;18928:1;18917:9;18913:17;18906:47;18970:131;19096:4;18970:131;:::i;:::-;18962:139;;18689:419;;;:::o;19114:177::-;19254:29;19250:1;19242:6;19238:14;19231:53;19114:177;:::o;19297:366::-;19439:3;19460:67;19524:2;19519:3;19460:67;:::i;:::-;19453:74;;19536:93;19625:3;19536:93;:::i;:::-;19654:2;19649:3;19645:12;19638:19;;19297:366;;;:::o;19669:419::-;19835:4;19873:2;19862:9;19858:18;19850:26;;19922:9;19916:4;19912:20;19908:1;19897:9;19893:17;19886:47;19950:131;20076:4;19950:131;:::i;:::-;19942:139;;19669:419;;;:::o;20094:143::-;20151:5;20182:6;20176:13;20167:22;;20198:33;20225:5;20198:33;:::i;:::-;20094:143;;;;:::o;20243:351::-;20313:6;20362:2;20350:9;20341:7;20337:23;20333:32;20330:119;;;20368:79;;:::i;:::-;20330:119;20488:1;20513:64;20569:7;20560:6;20549:9;20545:22;20513:64;:::i;:::-;20503:74;;20459:128;20243:351;;;;:::o;20600:332::-;20721:4;20759:2;20748:9;20744:18;20736:26;;20772:71;20840:1;20829:9;20825:17;20816:6;20772:71;:::i;:::-;20853:72;20921:2;20910:9;20906:18;20897:6;20853:72;:::i;:::-;20600:332;;;;;:::o;20938:137::-;20992:5;21023:6;21017:13;21008:22;;21039:30;21063:5;21039:30;:::i;:::-;20938:137;;;;:::o;21081:345::-;21148:6;21197:2;21185:9;21176:7;21172:23;21168:32;21165:119;;;21203:79;;:::i;:::-;21165:119;21323:1;21348:61;21401:7;21392:6;21381:9;21377:22;21348:61;:::i;:::-;21338:71;;21294:125;21081:345;;;;:::o;21432:176::-;21572:28;21568:1;21560:6;21556:14;21549:52;21432:176;:::o;21614:366::-;21756:3;21777:67;21841:2;21836:3;21777:67;:::i;:::-;21770:74;;21853:93;21942:3;21853:93;:::i;:::-;21971:2;21966:3;21962:12;21955:19;;21614:366;;;:::o;21986:419::-;22152:4;22190:2;22179:9;22175:18;22167:26;;22239:9;22233:4;22229:20;22225:1;22214:9;22210:17;22203:47;22267:131;22393:4;22267:131;:::i;:::-;22259:139;;21986:419;;;:::o;22411:222::-;22551:34;22547:1;22539:6;22535:14;22528:58;22620:5;22615:2;22607:6;22603:15;22596:30;22411:222;:::o;22639:366::-;22781:3;22802:67;22866:2;22861:3;22802:67;:::i;:::-;22795:74;;22878:93;22967:3;22878:93;:::i;:::-;22996:2;22991:3;22987:12;22980:19;;22639:366;;;:::o;23011:419::-;23177:4;23215:2;23204:9;23200:18;23192:26;;23264:9;23258:4;23254:20;23250:1;23239:9;23235:17;23228:47;23292:131;23418:4;23292:131;:::i;:::-;23284:139;;23011:419;;;:::o;23436:180::-;23576:32;23572:1;23564:6;23560:14;23553:56;23436:180;:::o;23622:366::-;23764:3;23785:67;23849:2;23844:3;23785:67;:::i;:::-;23778:74;;23861:93;23950:3;23861:93;:::i;:::-;23979:2;23974:3;23970:12;23963:19;;23622:366;;;:::o;23994:419::-;24160:4;24198:2;24187:9;24183:18;24175:26;;24247:9;24241:4;24237:20;24233:1;24222:9;24218:17;24211:47;24275:131;24401:4;24275:131;:::i;:::-;24267:139;;23994:419;;;:::o;24419:225::-;24559:34;24555:1;24547:6;24543:14;24536:58;24628:8;24623:2;24615:6;24611:15;24604:33;24419:225;:::o;24650:366::-;24792:3;24813:67;24877:2;24872:3;24813:67;:::i;:::-;24806:74;;24889:93;24978:3;24889:93;:::i;:::-;25007:2;25002:3;24998:12;24991:19;;24650:366;;;:::o;25022:419::-;25188:4;25226:2;25215:9;25211:18;25203:26;;25275:9;25269:4;25265:20;25261:1;25250:9;25246:17;25239:47;25303:131;25429:4;25303:131;:::i;:::-;25295:139;;25022:419;;;:::o;25447:170::-;25587:22;25583:1;25575:6;25571:14;25564:46;25447:170;:::o;25623:366::-;25765:3;25786:67;25850:2;25845:3;25786:67;:::i;:::-;25779:74;;25862:93;25951:3;25862:93;:::i;:::-;25980:2;25975:3;25971:12;25964:19;;25623:366;;;:::o;25995:419::-;26161:4;26199:2;26188:9;26184:18;26176:26;;26248:9;26242:4;26238:20;26234:1;26223:9;26219:17;26212:47;26276:131;26402:4;26276:131;:::i;:::-;26268:139;;25995:419;;;:::o;26420:191::-;26460:3;26479:20;26497:1;26479:20;:::i;:::-;26474:25;;26513:20;26531:1;26513:20;:::i;:::-;26508:25;;26556:1;26553;26549:9;26542:16;;26577:3;26574:1;26571:10;26568:36;;;26584:18;;:::i;:::-;26568:36;26420:191;;;;:::o;26617:249::-;26757:34;26753:1;26745:6;26741:14;26734:58;26826:32;26821:2;26813:6;26809:15;26802:57;26617:249;:::o;26872:366::-;27014:3;27035:67;27099:2;27094:3;27035:67;:::i;:::-;27028:74;;27111:93;27200:3;27111:93;:::i;:::-;27229:2;27224:3;27220:12;27213:19;;26872:366;;;:::o;27244:419::-;27410:4;27448:2;27437:9;27433:18;27425:26;;27497:9;27491:4;27487:20;27483:1;27472:9;27468:17;27461:47;27525:131;27651:4;27525:131;:::i;:::-;27517:139;;27244:419;;;:::o;27669:225::-;27809:34;27805:1;27797:6;27793:14;27786:58;27878:8;27873:2;27865:6;27861:15;27854:33;27669:225;:::o;27900:366::-;28042:3;28063:67;28127:2;28122:3;28063:67;:::i;:::-;28056:74;;28139:93;28228:3;28139:93;:::i;:::-;28257:2;28252:3;28248:12;28241:19;;27900:366;;;:::o;28272:419::-;28438:4;28476:2;28465:9;28461:18;28453:26;;28525:9;28519:4;28515:20;28511:1;28500:9;28496:17;28489:47;28553:131;28679:4;28553:131;:::i;:::-;28545:139;;28272:419;;;:::o;28697:167::-;28837:19;28833:1;28825:6;28821:14;28814:43;28697:167;:::o;28870:366::-;29012:3;29033:67;29097:2;29092:3;29033:67;:::i;:::-;29026:74;;29109:93;29198:3;29109:93;:::i;:::-;29227:2;29222:3;29218:12;29211:19;;28870:366;;;:::o;29242:419::-;29408:4;29446:2;29435:9;29431:18;29423:26;;29495:9;29489:4;29485:20;29481:1;29470:9;29466:17;29459:47;29523:131;29649:4;29523:131;:::i;:::-;29515:139;;29242:419;;;:::o;29667:180::-;29715:77;29712:1;29705:88;29812:4;29809:1;29802:15;29836:4;29833:1;29826:15;29853:180;29901:77;29898:1;29891:88;29998:4;29995:1;29988:15;30022:4;30019:1;30012:15;30039:85;30084:7;30113:5;30102:16;;30039:85;;;:::o;30130:158::-;30188:9;30221:61;30239:42;30248:32;30274:5;30248:32;:::i;:::-;30239:42;:::i;:::-;30221:61;:::i;:::-;30208:74;;30130:158;;;:::o;30294:147::-;30389:45;30428:5;30389:45;:::i;:::-;30384:3;30377:58;30294:147;;:::o;30447:114::-;30514:6;30548:5;30542:12;30532:22;;30447:114;;;:::o;30567:184::-;30666:11;30700:6;30695:3;30688:19;30740:4;30735:3;30731:14;30716:29;;30567:184;;;;:::o;30757:132::-;30824:4;30847:3;30839:11;;30877:4;30872:3;30868:14;30860:22;;30757:132;;;:::o;30895:108::-;30972:24;30990:5;30972:24;:::i;:::-;30967:3;30960:37;30895:108;;:::o;31009:179::-;31078:10;31099:46;31141:3;31133:6;31099:46;:::i;:::-;31177:4;31172:3;31168:14;31154:28;;31009:179;;;;:::o;31194:113::-;31264:4;31296;31291:3;31287:14;31279:22;;31194:113;;;:::o;31343:732::-;31462:3;31491:54;31539:5;31491:54;:::i;:::-;31561:86;31640:6;31635:3;31561:86;:::i;:::-;31554:93;;31671:56;31721:5;31671:56;:::i;:::-;31750:7;31781:1;31766:284;31791:6;31788:1;31785:13;31766:284;;;31867:6;31861:13;31894:63;31953:3;31938:13;31894:63;:::i;:::-;31887:70;;31980:60;32033:6;31980:60;:::i;:::-;31970:70;;31826:224;31813:1;31810;31806:9;31801:14;;31766:284;;;31770:14;32066:3;32059:10;;31467:608;;;31343:732;;;;:::o;32081:831::-;32344:4;32382:3;32371:9;32367:19;32359:27;;32396:71;32464:1;32453:9;32449:17;32440:6;32396:71;:::i;:::-;32477:80;32553:2;32542:9;32538:18;32529:6;32477:80;:::i;:::-;32604:9;32598:4;32594:20;32589:2;32578:9;32574:18;32567:48;32632:108;32735:4;32726:6;32632:108;:::i;:::-;32624:116;;32750:72;32818:2;32807:9;32803:18;32794:6;32750:72;:::i;:::-;32832:73;32900:3;32889:9;32885:19;32876:6;32832:73;:::i;:::-;32081:831;;;;;;;;:::o;32918:180::-;32966:77;32963:1;32956:88;33063:4;33060:1;33053:15;33087:4;33084:1;33077:15;33104:185;33144:1;33161:20;33179:1;33161:20;:::i;:::-;33156:25;;33195:20;33213:1;33195:20;:::i;:::-;33190:25;;33234:1;33224:35;;33239:18;;:::i;:::-;33224:35;33281:1;33278;33274:9;33269:14;;33104:185;;;;:::o;33295:147::-;33396:11;33433:3;33418:18;;33295:147;;;;:::o;33448:114::-;;:::o;33568:398::-;33727:3;33748:83;33829:1;33824:3;33748:83;:::i;:::-;33741:90;;33840:93;33929:3;33840:93;:::i;:::-;33958:1;33953:3;33949:11;33942:18;;33568:398;;;:::o;33972:379::-;34156:3;34178:147;34321:3;34178:147;:::i;:::-;34171:154;;34342:3;34335:10;;33972:379;;;:::o

Swarm Source

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