ETH Price: $2,224.35 (-2.85%)

Contract

0x5A2CDB4a9e978C4C1DB58fbaCa1a62D59A26ff1D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer180685902023-09-05 6:48:11542 days ago1693896491IN
0x5A2CDB4a...59A26ff1D
0 ETH0.000642849.42369875
Approve179563312023-08-20 13:43:35558 days ago1692539015IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0012028925.4791642
Approve179473532023-08-19 7:31:59559 days ago1692430319IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0006241313.22018312
Approve179470882023-08-19 6:38:23559 days ago1692427103IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0007869216.66827882
Approve179470712023-08-19 6:34:47559 days ago1692426887IN
0x5A2CDB4a...59A26ff1D
0 ETH0.000764516.19337426
Approve179470702023-08-19 6:34:35559 days ago1692426875IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0007059814.95380123
Approve179446502023-08-18 22:28:11559 days ago1692397691IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0008190117.37009283
Approve179443602023-08-18 21:29:35559 days ago1692394175IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0009464120.18493323
Update Sell Fees179439472023-08-18 20:06:47559 days ago1692389207IN
0x5A2CDB4a...59A26ff1D
0 ETH0.001290930.29507653
Approve179439342023-08-18 20:04:11559 days ago1692389051IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0016246634.41274993
Approve179439172023-08-18 20:00:47559 days ago1692388847IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0018812939.84869154
Approve179439152023-08-18 20:00:23559 days ago1692388823IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0016480834.90887968
Approve179439132023-08-18 19:59:59559 days ago1692388799IN
0x5A2CDB4a...59A26ff1D
0 ETH0.001332128.21593848
Enable Trading179439122023-08-18 19:59:47559 days ago1692388787IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0007162224.68821268
Approve179346472023-08-17 12:50:11561 days ago1692276611IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0011537524.43825436
Approve179345412023-08-17 12:28:35561 days ago1692275315IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0013291528.31911888
Transfer179343042023-08-17 11:41:11561 days ago1692272471IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0011349116.12364599
Approve179334752023-08-17 8:54:11561 days ago1692262451IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0008840718.72611662
Exclude From Fee...179333632023-08-17 8:31:35561 days ago1692261095IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0009120518.86116624
Transfer179333172023-08-17 8:22:23561 days ago1692260543IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0013162118.07115741
Approve179333042023-08-17 8:19:47561 days ago1692260387IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0007550116.09046031
Transfer179272332023-08-16 11:56:35562 days ago1692186995IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0012453418.98399329
Approve179270182023-08-16 11:13:35562 days ago1692184415IN
0x5A2CDB4a...59A26ff1D
0 ETH0.0011290924.06277292

Latest 3 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
179473572023-08-19 7:32:47559 days ago1692430367
0x5A2CDB4a...59A26ff1D
0.00934594 ETH
179473572023-08-19 7:32:47559 days ago1692430367
0x5A2CDB4a...59A26ff1D
0.0074437 ETH
179473572023-08-19 7:32:47559 days ago1692430367
0x5A2CDB4a...59A26ff1D
0.01678964 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OnlyFansLight

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
pragma experimental ABIEncoderV2;

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

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {_transferOwnership(_msgSender());}
    function owner() public view virtual returns (address) {return _owner;}
    modifier onlyOwner() {require(owner() == _msgSender(), "Ownable: caller is not the 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);}
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    constructor(string memory name_, string memory symbol_) {_name = name_;_symbol = symbol_;}
    function name() public view virtual override returns (string memory) {return _name;}
    function symbol() public view virtual override returns (string memory) {return _symbol;}
    function decimals() public view virtual override returns (uint8) {return 18;}
    function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {_transfer(_msgSender(), recipient, amount);return true;}
    function allowance(address owner, address spender) public view virtual override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public virtual override returns (bool) {_approve(_msgSender(), spender, amount);return true;}
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {_transfer(sender, recipient, amount);uint256 currentAllowance = _allowances[sender][_msgSender()];require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");unchecked {_approve(sender, _msgSender(), currentAllowance - amount);}return true;}
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);return true;}
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {uint256 currentAllowance = _allowances[_msgSender()][spender];require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");unchecked {_approve(_msgSender(), spender, currentAllowance - subtractedValue);}return true;}
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {require(sender != address(0), "ERC20: transfer from the zero address");require(recipient != address(0), "ERC20: transfer to the zero address");_beforeTokenTransfer(sender, recipient, amount);uint256 senderBalance = _balances[sender];require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");unchecked {_balances[sender] = senderBalance - amount;}_balances[recipient] += amount;emit Transfer(sender, recipient, amount);_afterTokenTransfer(sender, recipient, amount);}
    function _mint(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: mint to the zero address");_beforeTokenTransfer(address(0), account, amount);_totalSupply += amount;_balances[account] += amount;emit Transfer(address(0), account, amount);_afterTokenTransfer(address(0), account, amount);}
    function _burn(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: burn from the zero address");_beforeTokenTransfer(account, address(0), amount);uint256 accountBalance = _balances[account];require(accountBalance >= amount, "ERC20: burn amount exceeds balance");unchecked {_balances[account] = accountBalance - 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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

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

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

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 Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    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 burn(address to) external returns (uint256 amount0, uint256 amount1);
    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 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 swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
}

contract OnlyFansLight is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    mapping (address => bool) private _blacklist;
    bool private swapping;
    address public marketingWallet;
    address public devWallet;
    uint256 public swapTokensAtAmount;
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 public buyTotalFees;
    uint256 public buyLiquidityFee;
    uint256 public buyMarketingFee;
    uint256 public buyDevFee;
    uint256 public sellTotalFees;
    uint256 public sellLiquidityFee;
    uint256 public sellMarketingFee;
    uint256 public sellDevFee;
    uint256 public tokensForLiquidity;
    uint256 public tokensForMarketing;
    uint256 public tokensForDev;
    /***************************/
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    event AutoNukeLP();
    event ManualNukeLP();

    constructor() ERC20("OnlyFansLight.com", "OFL") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyLiquidityFee = 0;
        uint256 _buyMarketingFee = 1;
        uint256 _buyDevFee = 1;

        uint256 _sellLiquidityFee = 0;
        uint256 _sellMarketingFee = 25;
        uint256 _sellDevFee = 25;

        uint256 totalSupply = 10_000_000 * 1e18;

        swapTokensAtAmount = (totalSupply * 1) / 500; // 0.2% swap wallet

        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyLiquidityFee + buyMarketingFee + buyDevFee;

        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellLiquidityFee + sellMarketingFee + sellDevFee;

        marketingWallet = address(0x84dDb8930415Dbba4c52Ed88eb666608c5ED7c2E); // set as marketing wallet
        devWallet = address(0x2A05b2b73e4E2B874B232D3F03CAe1111A209B71); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(marketingWallet, true);
        excludeFromFees(devWallet, true);
        excludeFromFees(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }


    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        buyLiquidityFee = _liquidityFee;
        buyMarketingFee = _marketingFee;
        buyDevFee = _devFee;
        buyTotalFees = buyLiquidityFee + buyMarketingFee + buyDevFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function updateSellFees(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        sellLiquidityFee = _liquidityFee;
        sellMarketingFee = _marketingFee;
        sellDevFee = _devFee;
        sellTotalFees = sellLiquidityFee + sellMarketingFee + sellDevFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    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 updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

    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");
        require(!_blacklist[from] && !_blacklist[to], "You are a bot");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "Only one transfer per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
            }

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

        super._transfer(from, to, amount);
    }

    function addBL(address account, bool isBlacklisted) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }

    function multiBL(address[] memory multiblacklist_) public onlyOwner {
        for (uint256 i = 0; i < multiblacklist_.length; i++) {
            _blacklist[multiblacklist_[i]] = true;
        }
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

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

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"addBL","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"multiblacklist_","type":"address[]"}],"name":"multiBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff0219169083151502179055505f600a60026101000a81548160ff0219169083151502179055506001600c5f6101000a81548160ff02191690831515021790555034801562000078575f80fd5b506040518060400160405280601181526020017f4f6e6c7946616e734c696768742e636f6d0000000000000000000000000000008152506040518060400160405280600381526020017f4f464c00000000000000000000000000000000000000000000000000000000008152508160039081620000f6919062000bff565b50806004908162000108919062000bff565b5050506200012b6200011f6200055a60201b60201c565b6200056160201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e7919062000d48565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000273919062000d48565b6040518363ffffffff1660e01b81526004016200029292919062000d89565b6020604051808303815f875af1158015620002af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d5919062000d48565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031d60a05160016200062460201b60201c565b5f80600190505f600190505f80601990505f601990505f6a084595161401484a00000090506101f460018262000354919062000de1565b62000360919062000e58565b60098190555086600e8190555085600f8190555084601081905550601054600f54600e5462000390919062000e8f565b6200039c919062000e8f565b600d81905550836012819055508260138190555081601481905550601454601354601254620003cc919062000e8f565b620003d8919062000e8f565b6011819055507384ddb8930415dbba4c52ed88eb666608c5ed7c2e600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732a05b2b73e4e2b874b232d3f03cae1111a209b7160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004a96200049b620006c260201b60201c565b6001620006ea60201b60201c565b620004bc306001620006ea60201b60201c565b620004f1600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006ea60201b60201c565b6200052560085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006ea60201b60201c565b6200053a61dead6001620006ea60201b60201c565b6200054c33826200082160201b60201c565b505050505050505062001018565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006fa6200055a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000720620006c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000779576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007709062000f27565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000815919062000f63565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008899062000fcc565b60405180910390fd5b620008a55f83836200099160201b60201c565b8060025f828254620008b8919062000e8f565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200090c919062000e8f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000972919062000ffd565b60405180910390a36200098d5f83836200099660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a1757607f821691505b60208210810362000a2d5762000a2c620009d2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a54565b62000a9d868362000a54565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ae762000ae162000adb8462000ab5565b62000abe565b62000ab5565b9050919050565b5f819050919050565b62000b028362000ac7565b62000b1a62000b118262000aee565b84845462000a60565b825550505050565b5f90565b62000b3062000b22565b62000b3d81848462000af7565b505050565b5b8181101562000b645762000b585f8262000b26565b60018101905062000b43565b5050565b601f82111562000bb35762000b7d8162000a33565b62000b888462000a45565b8101602085101562000b98578190505b62000bb062000ba78562000a45565b83018262000b42565b50505b505050565b5f82821c905092915050565b5f62000bd55f198460080262000bb8565b1980831691505092915050565b5f62000bef838362000bc4565b9150826002028217905092915050565b62000c0a826200099b565b67ffffffffffffffff81111562000c265762000c25620009a5565b5b62000c328254620009ff565b62000c3f82828562000b68565b5f60209050601f83116001811462000c75575f841562000c60578287015190505b62000c6c858262000be2565b86555062000cdb565b601f19841662000c858662000a33565b5f5b8281101562000cae5784890151825560018201915060208501945060208101905062000c87565b8683101562000cce578489015162000cca601f89168262000bc4565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d128262000ce7565b9050919050565b62000d248162000d06565b811462000d2f575f80fd5b50565b5f8151905062000d428162000d19565b92915050565b5f6020828403121562000d605762000d5f62000ce3565b5b5f62000d6f8482850162000d32565b91505092915050565b62000d838162000d06565b82525050565b5f60408201905062000d9e5f83018562000d78565b62000dad602083018462000d78565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ded8262000ab5565b915062000dfa8362000ab5565b925082820262000e0a8162000ab5565b9150828204841483151762000e245762000e2362000db4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e648262000ab5565b915062000e718362000ab5565b92508262000e845762000e8362000e2b565b5b828204905092915050565b5f62000e9b8262000ab5565b915062000ea88362000ab5565b925082820190508082111562000ec35762000ec262000db4565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f0f60208362000ec9565b915062000f1c8262000ed9565b602082019050919050565b5f6020820190508181035f83015262000f408162000f01565b9050919050565b5f8115159050919050565b62000f5d8162000f47565b82525050565b5f60208201905062000f785f83018462000f52565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000fb4601f8362000ec9565b915062000fc18262000f7e565b602082019050919050565b5f6020820190508181035f83015262000fe58162000fa6565b9050919050565b62000ff78162000ab5565b82525050565b5f602082019050620010125f83018462000fec565b92915050565b60805160a05161487b620010725f395f818161102801528181611656015261257301525f8181610d0e0152818161251b015281816132cd015281816133ac015281816133d3015281816134690152613490015261487b5ff3fe6080604052600436106102b1575f3560e01c80638ea5220f11610174578063b62496f5116100db578063d85ba06311610094578063e884f2601161006e578063e884f26014610aac578063f11a24d314610ad6578063f2fde38b14610b00578063f637434214610b28576102b8565b8063d85ba06314610a1c578063dd62ed3e14610a46578063e2f4560514610a82576102b8565b8063b62496f514610900578063bbc0c7421461093c578063c024666814610966578063c17b5b8c1461098e578063c876d0b9146109b6578063d257b34f146109e0576102b8565b80639c3b4fdc1161012d5780639c3b4fdc146107e25780639fccce321461080c578063a0d82dc514610836578063a457c2d714610860578063a9059cbb1461089c578063aacebbe3146108d8576102b8565b80638ea5220f146106ec57806390a0bb3514610716578063921369131461073e578063924de9b71461076857806395d89b41146107905780639a7a23d6146107ba576102b8565b806349bd5a5e11610218578063751039fc116101d1578063751039fc1461060657806375f0a874146106305780637bce5a041461065a5780638095d564146106845780638a8c523c146106ac5780638da5cb5b146106c2576102b8565b806349bd5a5e146104e65780634a62bb65146105105780634fbee1931461053a5780636a486a8e146105765780636ddd1713146105a057806370a08231146105ca576102b8565b80631a8145bb1161026a5780631a8145bb146103c65780631f3fed8f146103f057806323b872dd1461041a57806327c8f83514610456578063313ce5671461048057806339509351146104aa576102b8565b806306fdde03146102bc578063095ea7b3146102e65780630f822e80146103225780631694505e1461034a57806318160ddd146103745780631816467f1461039e576102b8565b366102b857005b5f80fd5b3480156102c7575f80fd5b506102d0610b52565b6040516102dd91906135c6565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190613684565b610be2565b60405161031991906136dc565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190613835565b610bff565b005b348015610355575f80fd5b5061035e610d0c565b60405161036b91906138d7565b60405180910390f35b34801561037f575f80fd5b50610388610d30565b60405161039591906138ff565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190613918565b610d39565b005b3480156103d1575f80fd5b506103da610e73565b6040516103e791906138ff565b60405180910390f35b3480156103fb575f80fd5b50610404610e79565b60405161041191906138ff565b60405180910390f35b348015610425575f80fd5b50610440600480360381019061043b9190613943565b610e7f565b60405161044d91906136dc565b60405180910390f35b348015610461575f80fd5b5061046a610f71565b60405161047791906139a2565b60405180910390f35b34801561048b575f80fd5b50610494610f77565b6040516104a191906139d6565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb9190613684565b610f7f565b6040516104dd91906136dc565b60405180910390f35b3480156104f1575f80fd5b506104fa611026565b60405161050791906139a2565b60405180910390f35b34801561051b575f80fd5b5061052461104a565b60405161053191906136dc565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613918565b61105c565b60405161056d91906136dc565b60405180910390f35b348015610581575f80fd5b5061058a6110ae565b60405161059791906138ff565b60405180910390f35b3480156105ab575f80fd5b506105b46110b4565b6040516105c191906136dc565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb9190613918565b6110c7565b6040516105fd91906138ff565b60405180910390f35b348015610611575f80fd5b5061061a61110c565b60405161062791906136dc565b60405180910390f35b34801561063b575f80fd5b506106446111a9565b60405161065191906139a2565b60405180910390f35b348015610665575f80fd5b5061066e6111cf565b60405161067b91906138ff565b60405180910390f35b34801561068f575f80fd5b506106aa60048036038101906106a591906139ef565b6111d5565b005b3480156106b7575f80fd5b506106c06112d4565b005b3480156106cd575f80fd5b506106d6611388565b6040516106e391906139a2565b60405180910390f35b3480156106f7575f80fd5b506107006113b0565b60405161070d91906139a2565b60405180910390f35b348015610721575f80fd5b5061073c60048036038101906107379190613a69565b6113d5565b005b348015610749575f80fd5b506107526114a9565b60405161075f91906138ff565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613aa7565b6114af565b005b34801561079b575f80fd5b506107a4611548565b6040516107b191906135c6565b60405180910390f35b3480156107c5575f80fd5b506107e060048036038101906107db9190613a69565b6115d8565b005b3480156107ed575f80fd5b506107f66116f0565b60405161080391906138ff565b60405180910390f35b348015610817575f80fd5b506108206116f6565b60405161082d91906138ff565b60405180910390f35b348015610841575f80fd5b5061084a6116fc565b60405161085791906138ff565b60405180910390f35b34801561086b575f80fd5b5061088660048036038101906108819190613684565b611702565b60405161089391906136dc565b60405180910390f35b3480156108a7575f80fd5b506108c260048036038101906108bd9190613684565b6117e8565b6040516108cf91906136dc565b60405180910390f35b3480156108e3575f80fd5b506108fe60048036038101906108f99190613918565b611805565b005b34801561090b575f80fd5b5061092660048036038101906109219190613918565b611941565b60405161093391906136dc565b60405180910390f35b348015610947575f80fd5b5061095061195e565b60405161095d91906136dc565b60405180910390f35b348015610971575f80fd5b5061098c60048036038101906109879190613a69565b611971565b005b348015610999575f80fd5b506109b460048036038101906109af91906139ef565b611a93565b005b3480156109c1575f80fd5b506109ca611b92565b6040516109d791906136dc565b60405180910390f35b3480156109eb575f80fd5b50610a066004803603810190610a019190613ad2565b611ba4565b604051610a1391906136dc565b60405180910390f35b348015610a27575f80fd5b50610a30611cf8565b604051610a3d91906138ff565b60405180910390f35b348015610a51575f80fd5b50610a6c6004803603810190610a679190613afd565b611cfe565b604051610a7991906138ff565b60405180910390f35b348015610a8d575f80fd5b50610a96611d80565b604051610aa391906138ff565b60405180910390f35b348015610ab7575f80fd5b50610ac0611d86565b604051610acd91906136dc565b60405180910390f35b348015610ae1575f80fd5b50610aea611e23565b604051610af791906138ff565b60405180910390f35b348015610b0b575f80fd5b50610b266004803603810190610b219190613918565b611e29565b005b348015610b33575f80fd5b50610b3c611f1f565b604051610b4991906138ff565b60405180910390f35b606060038054610b6190613b68565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90613b68565b8015610bd85780601f10610baf57610100808354040283529160200191610bd8565b820191905f5260205f20905b815481529060010190602001808311610bbb57829003601f168201915b5050505050905090565b5f610bf5610bee611f25565b8484611f2c565b6001905092915050565b610c07611f25565b73ffffffffffffffffffffffffffffffffffffffff16610c25611388565b73ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290613be2565b60405180910390fd5b5f5b8151811015610d0857600160065f848481518110610c9e57610c9d613c00565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610d0090613c5a565b915050610c7d565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610d41611f25565b73ffffffffffffffffffffffffffffffffffffffff16610d5f611388565b73ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90613be2565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60165481565b5f610e8b8484846120ef565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ed2611f25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4890613d11565b60405180910390fd5b610f6585610f5d611f25565b858403611f2c565b60019150509392505050565b61dead81565b5f6012905090565b5f61101c610f8b611f25565b848460015f610f98611f25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110179190613d2f565b611f2c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115481565b600a60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f611115611f25565b73ffffffffffffffffffffffffffffffffffffffff16611133611388565b73ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090613be2565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6111dd611f25565b73ffffffffffffffffffffffffffffffffffffffff166111fb611388565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890613be2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546112799190613d2f565b6112839190613d2f565b600d819055506014600d5411156112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690613dac565b60405180910390fd5b505050565b6112dc611f25565b73ffffffffffffffffffffffffffffffffffffffff166112fa611388565b73ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790613be2565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113dd611f25565b73ffffffffffffffffffffffffffffffffffffffff166113fb611388565b73ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613be2565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135481565b6114b7611f25565b73ffffffffffffffffffffffffffffffffffffffff166114d5611388565b73ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290613be2565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461155790613b68565b80601f016020809104026020016040519081016040528092919081815260200182805461158390613b68565b80156115ce5780601f106115a5576101008083540402835291602001916115ce565b820191905f5260205f20905b8154815290600101906020018083116115b157829003601f168201915b5050505050905090565b6115e0611f25565b73ffffffffffffffffffffffffffffffffffffffff166115fe611388565b73ffffffffffffffffffffffffffffffffffffffff1614611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b90613be2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613e3a565b60405180910390fd5b6116ec8282612b41565b5050565b60105481565b60175481565b60145481565b5f8060015f61170f611f25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090613ec8565b60405180910390fd5b6117dd6117d4611f25565b85858403611f2c565b600191505092915050565b5f6117fb6117f4611f25565b84846120ef565b6001905092915050565b61180d611f25565b73ffffffffffffffffffffffffffffffffffffffff1661182b611388565b73ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187890613be2565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6019602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611979611f25565b73ffffffffffffffffffffffffffffffffffffffff16611997611388565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613be2565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a8791906136dc565b60405180910390a25050565b611a9b611f25565b73ffffffffffffffffffffffffffffffffffffffff16611ab9611388565b73ffffffffffffffffffffffffffffffffffffffff1614611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690613be2565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611b379190613d2f565b611b419190613d2f565b60118190555060146011541115611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8490613dac565b60405180910390fd5b505050565b600c5f9054906101000a900460ff1681565b5f611bad611f25565b73ffffffffffffffffffffffffffffffffffffffff16611bcb611388565b73ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890613be2565b60405180910390fd5b620186a06001611c2f610d30565b611c399190613ee6565b611c439190613f54565b821015611c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7c90613ff4565b60405180910390fd5b6103e86005611c92610d30565b611c9c9190613ee6565b611ca69190613f54565b821115611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90614082565b60405180910390fd5b8160098190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f611d8f611f25565b73ffffffffffffffffffffffffffffffffffffffff16611dad611388565b73ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa90613be2565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b600e5481565b611e31611f25565b73ffffffffffffffffffffffffffffffffffffffff16611e4f611388565b73ffffffffffffffffffffffffffffffffffffffff1614611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c90613be2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90614110565b60405180910390fd5b611f1c81612bdf565b50565b60125481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f919061419e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff9061422c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120e291906138ff565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612154906142ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290614348565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612269575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229f906143b0565b60405180910390fd5b5f81036122bf576122ba83835f612ca2565b612b3c565b600a5f9054906101000a900460ff161561268c576122db611388565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123495750612319611388565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bb575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d3575060075f9054906101000a900460ff16155b1561268b57600a60019054906101000a900460ff166124c75760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612487575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bd90614418565b60405180910390fd5b5b600c5f9054906101000a900460ff161561268a576124e3611388565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561256a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125c257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126895743600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906144a6565b60405180910390fd5b43600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b5b5f612696306110c7565b90505f60095482101590508080156126ba5750600a60029054906101000a900460ff165b80156126d2575060075f9054906101000a900460ff16155b8015612725575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612778575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127cb575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561280c57600160075f6101000a81548160ff0219169083151502179055506127f2612f17565b5f60075f6101000a81548160ff0219169083151502179055505b5f60075f9054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128ba575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128c3575f90505b5f8115612b2c5760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292157505f601154115b156129eb5761294e6064612940601154886131e790919063ffffffff16565b6131fc90919063ffffffff16565b9050601154601254826129619190613ee6565b61296b9190613f54565b60155f82825461297b9190613d2f565b92505081905550601154601354826129939190613ee6565b61299d9190613f54565b60165f8282546129ad9190613d2f565b92505081905550601154601454826129c59190613ee6565b6129cf9190613f54565b60175f8282546129df9190613d2f565b92505081905550612b09565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a4257505f600d54115b15612b0857612a6f6064612a61600d54886131e790919063ffffffff16565b6131fc90919063ffffffff16565b9050600d54600e5482612a829190613ee6565b612a8c9190613f54565b60155f828254612a9c9190613d2f565b92505081905550600d54600f5482612ab49190613ee6565b612abe9190613f54565b60165f828254612ace9190613d2f565b92505081905550600d5460105482612ae69190613ee6565b612af09190613f54565b60175f828254612b009190613d2f565b925050819055505b5b5f811115612b1d57612b1c873083612ca2565b5b8085612b2991906144c4565b94505b612b37878787612ca2565b505050505b505050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d07906142ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7590614348565b60405180910390fd5b612d89838383613211565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0390614567565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e9a9190613d2f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612efe91906138ff565b60405180910390a3612f11848484613216565b50505050565b5f612f21306110c7565b90505f601754601654601554612f379190613d2f565b612f419190613d2f565b90505f80831480612f5157505f82145b15612f5e575050506131e5565b6014600954612f6d9190613ee6565b831115612f86576014600954612f839190613ee6565b92505b5f60028360155486612f989190613ee6565b612fa29190613f54565b612fac9190613f54565b90505f612fc2828661321b90919063ffffffff16565b90505f479050612fd182613230565b5f612fe5824761321b90919063ffffffff16565b90505f61300f87613001601654856131e790919063ffffffff16565b6131fc90919063ffffffff16565b90505f6130398861302b601754866131e790919063ffffffff16565b6131fc90919063ffffffff16565b90505f81838561304991906144c4565b61305391906144c4565b90505f6015819055505f6016819055505f60178190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130af906145b2565b5f6040518083038185875af1925050503d805f81146130e9576040519150601f19603f3d011682016040523d82523d5f602084013e6130ee565b606091505b5050809850505f8711801561310257505f81115b1561314f576131118782613463565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601554604051613146939291906145c6565b60405180910390a15b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613195906145b2565b5f6040518083038185875af1925050503d805f81146131cf576040519150601f19603f3d011682016040523d82523d5f602084013e6131d4565b606091505b505080985050505050505050505050505b565b5f81836131f49190613ee6565b905092915050565b5f81836132099190613f54565b905092915050565b505050565b505050565b5f818361322891906144c4565b905092915050565b5f600267ffffffffffffffff81111561324c5761324b6136f9565b5b60405190808252806020026020018201604052801561327a5781602001602082028036833780820191505090505b50905030815f8151811061329157613290613c00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613334573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613358919061460f565b8160018151811061336c5761336b613c00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133d1307f000000000000000000000000000000000000000000000000000000000000000084611f2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161343295949392919061472a565b5f604051808303815f87803b158015613449575f80fd5b505af115801561345b573d5f803e3d5ffd5b505050505050565b61348e307f000000000000000000000000000000000000000000000000000000000000000084611f2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b81526004016134f496959493929190614782565b60606040518083038185885af1158015613510573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061353591906147f5565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613573578082015181840152602081019050613558565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135988261353c565b6135a28185613546565b93506135b2818560208601613556565b6135bb8161357e565b840191505092915050565b5f6020820190508181035f8301526135de818461358e565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613620826135f7565b9050919050565b61363081613616565b811461363a575f80fd5b50565b5f8135905061364b81613627565b92915050565b5f819050919050565b61366381613651565b811461366d575f80fd5b50565b5f8135905061367e8161365a565b92915050565b5f806040838503121561369a576136996135ef565b5b5f6136a78582860161363d565b92505060206136b885828601613670565b9150509250929050565b5f8115159050919050565b6136d6816136c2565b82525050565b5f6020820190506136ef5f8301846136cd565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61372f8261357e565b810181811067ffffffffffffffff8211171561374e5761374d6136f9565b5b80604052505050565b5f6137606135e6565b905061376c8282613726565b919050565b5f67ffffffffffffffff82111561378b5761378a6136f9565b5b602082029050602081019050919050565b5f80fd5b5f6137b26137ad84613771565b613757565b905080838252602082019050602084028301858111156137d5576137d461379c565b5b835b818110156137fe57806137ea888261363d565b8452602084019350506020810190506137d7565b5050509392505050565b5f82601f83011261381c5761381b6136f5565b5b813561382c8482602086016137a0565b91505092915050565b5f6020828403121561384a576138496135ef565b5b5f82013567ffffffffffffffff811115613867576138666135f3565b5b61387384828501613808565b91505092915050565b5f819050919050565b5f61389f61389a613895846135f7565b61387c565b6135f7565b9050919050565b5f6138b082613885565b9050919050565b5f6138c1826138a6565b9050919050565b6138d1816138b7565b82525050565b5f6020820190506138ea5f8301846138c8565b92915050565b6138f981613651565b82525050565b5f6020820190506139125f8301846138f0565b92915050565b5f6020828403121561392d5761392c6135ef565b5b5f61393a8482850161363d565b91505092915050565b5f805f6060848603121561395a576139596135ef565b5b5f6139678682870161363d565b93505060206139788682870161363d565b925050604061398986828701613670565b9150509250925092565b61399c81613616565b82525050565b5f6020820190506139b55f830184613993565b92915050565b5f60ff82169050919050565b6139d0816139bb565b82525050565b5f6020820190506139e95f8301846139c7565b92915050565b5f805f60608486031215613a0657613a056135ef565b5b5f613a1386828701613670565b9350506020613a2486828701613670565b9250506040613a3586828701613670565b9150509250925092565b613a48816136c2565b8114613a52575f80fd5b50565b5f81359050613a6381613a3f565b92915050565b5f8060408385031215613a7f57613a7e6135ef565b5b5f613a8c8582860161363d565b9250506020613a9d85828601613a55565b9150509250929050565b5f60208284031215613abc57613abb6135ef565b5b5f613ac984828501613a55565b91505092915050565b5f60208284031215613ae757613ae66135ef565b5b5f613af484828501613670565b91505092915050565b5f8060408385031215613b1357613b126135ef565b5b5f613b208582860161363d565b9250506020613b318582860161363d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b7f57607f821691505b602082108103613b9257613b91613b3b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613bcc602083613546565b9150613bd782613b98565b602082019050919050565b5f6020820190508181035f830152613bf981613bc0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c6482613651565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c9657613c95613c2d565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613cfb602883613546565b9150613d0682613ca1565b604082019050919050565b5f6020820190508181035f830152613d2881613cef565b9050919050565b5f613d3982613651565b9150613d4483613651565b9250828201905080821115613d5c57613d5b613c2d565b5b92915050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f613d96601d83613546565b9150613da182613d62565b602082019050919050565b5f6020820190508181035f830152613dc381613d8a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e24603983613546565b9150613e2f82613dca565b604082019050919050565b5f6020820190508181035f830152613e5181613e18565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613eb2602583613546565b9150613ebd82613e58565b604082019050919050565b5f6020820190508181035f830152613edf81613ea6565b9050919050565b5f613ef082613651565b9150613efb83613651565b9250828202613f0981613651565b91508282048414831517613f2057613f1f613c2d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f5e82613651565b9150613f6983613651565b925082613f7957613f78613f27565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613fde603583613546565b9150613fe982613f84565b604082019050919050565b5f6020820190508181035f83015261400b81613fd2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61406c603483613546565b915061407782614012565b604082019050919050565b5f6020820190508181035f83015261409981614060565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140fa602683613546565b9150614105826140a0565b604082019050919050565b5f6020820190508181035f830152614127816140ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614188602483613546565b91506141938261412e565b604082019050919050565b5f6020820190508181035f8301526141b58161417c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614216602283613546565b9150614221826141bc565b604082019050919050565b5f6020820190508181035f8301526142438161420a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142a4602583613546565b91506142af8261424a565b604082019050919050565b5f6020820190508181035f8301526142d181614298565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614332602383613546565b915061433d826142d8565b604082019050919050565b5f6020820190508181035f83015261435f81614326565b9050919050565b7f596f7520617265206120626f74000000000000000000000000000000000000005f82015250565b5f61439a600d83613546565b91506143a582614366565b602082019050919050565b5f6020820190508181035f8301526143c78161438e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614402601683613546565b915061440d826143ce565b602082019050919050565b5f6020820190508181035f83015261442f816143f6565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f614490602483613546565b915061449b82614436565b604082019050919050565b5f6020820190508181035f8301526144bd81614484565b9050919050565b5f6144ce82613651565b91506144d983613651565b92508282039050818111156144f1576144f0613c2d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614551602683613546565b915061455c826144f7565b604082019050919050565b5f6020820190508181035f83015261457e81614545565b9050919050565b5f81905092915050565b50565b5f61459d5f83614585565b91506145a88261458f565b5f82019050919050565b5f6145bc82614592565b9150819050919050565b5f6060820190506145d95f8301866138f0565b6145e660208301856138f0565b6145f360408301846138f0565b949350505050565b5f8151905061460981613627565b92915050565b5f60208284031215614624576146236135ef565b5b5f614631848285016145fb565b91505092915050565b5f819050919050565b5f61465d6146586146538461463a565b61387c565b613651565b9050919050565b61466d81614643565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6146a581613616565b82525050565b5f6146b6838361469c565b60208301905092915050565b5f602082019050919050565b5f6146d882614673565b6146e2818561467d565b93506146ed8361468d565b805f5b8381101561471d57815161470488826146ab565b975061470f836146c2565b9250506001810190506146f0565b5085935050505092915050565b5f60a08201905061473d5f8301886138f0565b61474a6020830187614664565b818103604083015261475c81866146ce565b905061476b6060830185613993565b61477860808301846138f0565b9695505050505050565b5f60c0820190506147955f830189613993565b6147a260208301886138f0565b6147af6040830187614664565b6147bc6060830186614664565b6147c96080830185613993565b6147d660a08301846138f0565b979650505050505050565b5f815190506147ef8161365a565b92915050565b5f805f6060848603121561480c5761480b6135ef565b5b5f614819868287016147e1565b935050602061482a868287016147e1565b925050604061483b868287016147e1565b915050925092509256fea264697066735822122064d29fc62c0a1b93b01b938438e7052c0ab5ee94f552f4551d6f7c7c936dc3b964736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102b1575f3560e01c80638ea5220f11610174578063b62496f5116100db578063d85ba06311610094578063e884f2601161006e578063e884f26014610aac578063f11a24d314610ad6578063f2fde38b14610b00578063f637434214610b28576102b8565b8063d85ba06314610a1c578063dd62ed3e14610a46578063e2f4560514610a82576102b8565b8063b62496f514610900578063bbc0c7421461093c578063c024666814610966578063c17b5b8c1461098e578063c876d0b9146109b6578063d257b34f146109e0576102b8565b80639c3b4fdc1161012d5780639c3b4fdc146107e25780639fccce321461080c578063a0d82dc514610836578063a457c2d714610860578063a9059cbb1461089c578063aacebbe3146108d8576102b8565b80638ea5220f146106ec57806390a0bb3514610716578063921369131461073e578063924de9b71461076857806395d89b41146107905780639a7a23d6146107ba576102b8565b806349bd5a5e11610218578063751039fc116101d1578063751039fc1461060657806375f0a874146106305780637bce5a041461065a5780638095d564146106845780638a8c523c146106ac5780638da5cb5b146106c2576102b8565b806349bd5a5e146104e65780634a62bb65146105105780634fbee1931461053a5780636a486a8e146105765780636ddd1713146105a057806370a08231146105ca576102b8565b80631a8145bb1161026a5780631a8145bb146103c65780631f3fed8f146103f057806323b872dd1461041a57806327c8f83514610456578063313ce5671461048057806339509351146104aa576102b8565b806306fdde03146102bc578063095ea7b3146102e65780630f822e80146103225780631694505e1461034a57806318160ddd146103745780631816467f1461039e576102b8565b366102b857005b5f80fd5b3480156102c7575f80fd5b506102d0610b52565b6040516102dd91906135c6565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190613684565b610be2565b60405161031991906136dc565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190613835565b610bff565b005b348015610355575f80fd5b5061035e610d0c565b60405161036b91906138d7565b60405180910390f35b34801561037f575f80fd5b50610388610d30565b60405161039591906138ff565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190613918565b610d39565b005b3480156103d1575f80fd5b506103da610e73565b6040516103e791906138ff565b60405180910390f35b3480156103fb575f80fd5b50610404610e79565b60405161041191906138ff565b60405180910390f35b348015610425575f80fd5b50610440600480360381019061043b9190613943565b610e7f565b60405161044d91906136dc565b60405180910390f35b348015610461575f80fd5b5061046a610f71565b60405161047791906139a2565b60405180910390f35b34801561048b575f80fd5b50610494610f77565b6040516104a191906139d6565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb9190613684565b610f7f565b6040516104dd91906136dc565b60405180910390f35b3480156104f1575f80fd5b506104fa611026565b60405161050791906139a2565b60405180910390f35b34801561051b575f80fd5b5061052461104a565b60405161053191906136dc565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190613918565b61105c565b60405161056d91906136dc565b60405180910390f35b348015610581575f80fd5b5061058a6110ae565b60405161059791906138ff565b60405180910390f35b3480156105ab575f80fd5b506105b46110b4565b6040516105c191906136dc565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb9190613918565b6110c7565b6040516105fd91906138ff565b60405180910390f35b348015610611575f80fd5b5061061a61110c565b60405161062791906136dc565b60405180910390f35b34801561063b575f80fd5b506106446111a9565b60405161065191906139a2565b60405180910390f35b348015610665575f80fd5b5061066e6111cf565b60405161067b91906138ff565b60405180910390f35b34801561068f575f80fd5b506106aa60048036038101906106a591906139ef565b6111d5565b005b3480156106b7575f80fd5b506106c06112d4565b005b3480156106cd575f80fd5b506106d6611388565b6040516106e391906139a2565b60405180910390f35b3480156106f7575f80fd5b506107006113b0565b60405161070d91906139a2565b60405180910390f35b348015610721575f80fd5b5061073c60048036038101906107379190613a69565b6113d5565b005b348015610749575f80fd5b506107526114a9565b60405161075f91906138ff565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613aa7565b6114af565b005b34801561079b575f80fd5b506107a4611548565b6040516107b191906135c6565b60405180910390f35b3480156107c5575f80fd5b506107e060048036038101906107db9190613a69565b6115d8565b005b3480156107ed575f80fd5b506107f66116f0565b60405161080391906138ff565b60405180910390f35b348015610817575f80fd5b506108206116f6565b60405161082d91906138ff565b60405180910390f35b348015610841575f80fd5b5061084a6116fc565b60405161085791906138ff565b60405180910390f35b34801561086b575f80fd5b5061088660048036038101906108819190613684565b611702565b60405161089391906136dc565b60405180910390f35b3480156108a7575f80fd5b506108c260048036038101906108bd9190613684565b6117e8565b6040516108cf91906136dc565b60405180910390f35b3480156108e3575f80fd5b506108fe60048036038101906108f99190613918565b611805565b005b34801561090b575f80fd5b5061092660048036038101906109219190613918565b611941565b60405161093391906136dc565b60405180910390f35b348015610947575f80fd5b5061095061195e565b60405161095d91906136dc565b60405180910390f35b348015610971575f80fd5b5061098c60048036038101906109879190613a69565b611971565b005b348015610999575f80fd5b506109b460048036038101906109af91906139ef565b611a93565b005b3480156109c1575f80fd5b506109ca611b92565b6040516109d791906136dc565b60405180910390f35b3480156109eb575f80fd5b50610a066004803603810190610a019190613ad2565b611ba4565b604051610a1391906136dc565b60405180910390f35b348015610a27575f80fd5b50610a30611cf8565b604051610a3d91906138ff565b60405180910390f35b348015610a51575f80fd5b50610a6c6004803603810190610a679190613afd565b611cfe565b604051610a7991906138ff565b60405180910390f35b348015610a8d575f80fd5b50610a96611d80565b604051610aa391906138ff565b60405180910390f35b348015610ab7575f80fd5b50610ac0611d86565b604051610acd91906136dc565b60405180910390f35b348015610ae1575f80fd5b50610aea611e23565b604051610af791906138ff565b60405180910390f35b348015610b0b575f80fd5b50610b266004803603810190610b219190613918565b611e29565b005b348015610b33575f80fd5b50610b3c611f1f565b604051610b4991906138ff565b60405180910390f35b606060038054610b6190613b68565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d90613b68565b8015610bd85780601f10610baf57610100808354040283529160200191610bd8565b820191905f5260205f20905b815481529060010190602001808311610bbb57829003601f168201915b5050505050905090565b5f610bf5610bee611f25565b8484611f2c565b6001905092915050565b610c07611f25565b73ffffffffffffffffffffffffffffffffffffffff16610c25611388565b73ffffffffffffffffffffffffffffffffffffffff1614610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7290613be2565b60405180910390fd5b5f5b8151811015610d0857600160065f848481518110610c9e57610c9d613c00565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610d0090613c5a565b915050610c7d565b5050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610d41611f25565b73ffffffffffffffffffffffffffffffffffffffff16610d5f611388565b73ffffffffffffffffffffffffffffffffffffffff1614610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90613be2565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60165481565b5f610e8b8484846120ef565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ed2611f25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4890613d11565b60405180910390fd5b610f6585610f5d611f25565b858403611f2c565b60019150509392505050565b61dead81565b5f6012905090565b5f61101c610f8b611f25565b848460015f610f98611f25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110179190613d2f565b611f2c565b6001905092915050565b7f0000000000000000000000004a1efee741ae44c6ea34778a5f5a6a079bdd159a81565b600a5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60115481565b600a60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f611115611f25565b73ffffffffffffffffffffffffffffffffffffffff16611133611388565b73ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090613be2565b60405180910390fd5b5f600a5f6101000a81548160ff0219169083151502179055506001905090565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6111dd611f25565b73ffffffffffffffffffffffffffffffffffffffff166111fb611388565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890613be2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546112799190613d2f565b6112839190613d2f565b600d819055506014600d5411156112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690613dac565b60405180910390fd5b505050565b6112dc611f25565b73ffffffffffffffffffffffffffffffffffffffff166112fa611388565b73ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790613be2565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113dd611f25565b73ffffffffffffffffffffffffffffffffffffffff166113fb611388565b73ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613be2565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60135481565b6114b7611f25565b73ffffffffffffffffffffffffffffffffffffffff166114d5611388565b73ffffffffffffffffffffffffffffffffffffffff161461152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290613be2565b60405180910390fd5b80600a60026101000a81548160ff02191690831515021790555050565b60606004805461155790613b68565b80601f016020809104026020016040519081016040528092919081815260200182805461158390613b68565b80156115ce5780601f106115a5576101008083540402835291602001916115ce565b820191905f5260205f20905b8154815290600101906020018083116115b157829003601f168201915b5050505050905090565b6115e0611f25565b73ffffffffffffffffffffffffffffffffffffffff166115fe611388565b73ffffffffffffffffffffffffffffffffffffffff1614611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b90613be2565b60405180910390fd5b7f0000000000000000000000004a1efee741ae44c6ea34778a5f5a6a079bdd159a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613e3a565b60405180910390fd5b6116ec8282612b41565b5050565b60105481565b60175481565b60145481565b5f8060015f61170f611f25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c090613ec8565b60405180910390fd5b6117dd6117d4611f25565b85858403611f2c565b600191505092915050565b5f6117fb6117f4611f25565b84846120ef565b6001905092915050565b61180d611f25565b73ffffffffffffffffffffffffffffffffffffffff1661182b611388565b73ffffffffffffffffffffffffffffffffffffffff1614611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187890613be2565b60405180910390fd5b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6019602052805f5260405f205f915054906101000a900460ff1681565b600a60019054906101000a900460ff1681565b611979611f25565b73ffffffffffffffffffffffffffffffffffffffff16611997611388565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613be2565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a8791906136dc565b60405180910390a25050565b611a9b611f25565b73ffffffffffffffffffffffffffffffffffffffff16611ab9611388565b73ffffffffffffffffffffffffffffffffffffffff1614611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0690613be2565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254611b379190613d2f565b611b419190613d2f565b60118190555060146011541115611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8490613dac565b60405180910390fd5b505050565b600c5f9054906101000a900460ff1681565b5f611bad611f25565b73ffffffffffffffffffffffffffffffffffffffff16611bcb611388565b73ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890613be2565b60405180910390fd5b620186a06001611c2f610d30565b611c399190613ee6565b611c439190613f54565b821015611c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7c90613ff4565b60405180910390fd5b6103e86005611c92610d30565b611c9c9190613ee6565b611ca69190613f54565b821115611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90614082565b60405180910390fd5b8160098190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f611d8f611f25565b73ffffffffffffffffffffffffffffffffffffffff16611dad611388565b73ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa90613be2565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b600e5481565b611e31611f25565b73ffffffffffffffffffffffffffffffffffffffff16611e4f611388565b73ffffffffffffffffffffffffffffffffffffffff1614611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c90613be2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90614110565b60405180910390fd5b611f1c81612bdf565b50565b60125481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f919061419e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff9061422c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120e291906138ff565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612154906142ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290614348565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612269575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229f906143b0565b60405180910390fd5b5f81036122bf576122ba83835f612ca2565b612b3c565b600a5f9054906101000a900460ff161561268c576122db611388565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123495750612319611388565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bb575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d3575060075f9054906101000a900460ff16155b1561268b57600a60019054906101000a900460ff166124c75760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612487575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bd90614418565b60405180910390fd5b5b600c5f9054906101000a900460ff161561268a576124e3611388565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561256a57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125c257507f0000000000000000000000004a1efee741ae44c6ea34778a5f5a6a079bdd159a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126895743600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263d906144a6565b60405180910390fd5b43600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b5b5f612696306110c7565b90505f60095482101590508080156126ba5750600a60029054906101000a900460ff165b80156126d2575060075f9054906101000a900460ff16155b8015612725575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612778575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127cb575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561280c57600160075f6101000a81548160ff0219169083151502179055506127f2612f17565b5f60075f6101000a81548160ff0219169083151502179055505b5f60075f9054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128ba575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128c3575f90505b5f8115612b2c5760195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292157505f601154115b156129eb5761294e6064612940601154886131e790919063ffffffff16565b6131fc90919063ffffffff16565b9050601154601254826129619190613ee6565b61296b9190613f54565b60155f82825461297b9190613d2f565b92505081905550601154601354826129939190613ee6565b61299d9190613f54565b60165f8282546129ad9190613d2f565b92505081905550601154601454826129c59190613ee6565b6129cf9190613f54565b60175f8282546129df9190613d2f565b92505081905550612b09565b60195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a4257505f600d54115b15612b0857612a6f6064612a61600d54886131e790919063ffffffff16565b6131fc90919063ffffffff16565b9050600d54600e5482612a829190613ee6565b612a8c9190613f54565b60155f828254612a9c9190613d2f565b92505081905550600d54600f5482612ab49190613ee6565b612abe9190613f54565b60165f828254612ace9190613d2f565b92505081905550600d5460105482612ae69190613ee6565b612af09190613f54565b60175f828254612b009190613d2f565b925050819055505b5b5f811115612b1d57612b1c873083612ca2565b5b8085612b2991906144c4565b94505b612b37878787612ca2565b505050505b505050565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d07906142ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7590614348565b60405180910390fd5b612d89838383613211565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0390614567565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e9a9190613d2f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612efe91906138ff565b60405180910390a3612f11848484613216565b50505050565b5f612f21306110c7565b90505f601754601654601554612f379190613d2f565b612f419190613d2f565b90505f80831480612f5157505f82145b15612f5e575050506131e5565b6014600954612f6d9190613ee6565b831115612f86576014600954612f839190613ee6565b92505b5f60028360155486612f989190613ee6565b612fa29190613f54565b612fac9190613f54565b90505f612fc2828661321b90919063ffffffff16565b90505f479050612fd182613230565b5f612fe5824761321b90919063ffffffff16565b90505f61300f87613001601654856131e790919063ffffffff16565b6131fc90919063ffffffff16565b90505f6130398861302b601754866131e790919063ffffffff16565b6131fc90919063ffffffff16565b90505f81838561304991906144c4565b61305391906144c4565b90505f6015819055505f6016819055505f60178190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516130af906145b2565b5f6040518083038185875af1925050503d805f81146130e9576040519150601f19603f3d011682016040523d82523d5f602084013e6130ee565b606091505b5050809850505f8711801561310257505f81115b1561314f576131118782613463565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601554604051613146939291906145c6565b60405180910390a15b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613195906145b2565b5f6040518083038185875af1925050503d805f81146131cf576040519150601f19603f3d011682016040523d82523d5f602084013e6131d4565b606091505b505080985050505050505050505050505b565b5f81836131f49190613ee6565b905092915050565b5f81836132099190613f54565b905092915050565b505050565b505050565b5f818361322891906144c4565b905092915050565b5f600267ffffffffffffffff81111561324c5761324b6136f9565b5b60405190808252806020026020018201604052801561327a5781602001602082028036833780820191505090505b50905030815f8151811061329157613290613c00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613334573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613358919061460f565b8160018151811061336c5761336b613c00565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133d1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f2c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161343295949392919061472a565b5f604051808303815f87803b158015613449575f80fd5b505af115801561345b573d5f803e3d5ffd5b505050505050565b61348e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f2c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b81526004016134f496959493929190614782565b60606040518083038185885af1158015613510573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061353591906147f5565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613573578082015181840152602081019050613558565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135988261353c565b6135a28185613546565b93506135b2818560208601613556565b6135bb8161357e565b840191505092915050565b5f6020820190508181035f8301526135de818461358e565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613620826135f7565b9050919050565b61363081613616565b811461363a575f80fd5b50565b5f8135905061364b81613627565b92915050565b5f819050919050565b61366381613651565b811461366d575f80fd5b50565b5f8135905061367e8161365a565b92915050565b5f806040838503121561369a576136996135ef565b5b5f6136a78582860161363d565b92505060206136b885828601613670565b9150509250929050565b5f8115159050919050565b6136d6816136c2565b82525050565b5f6020820190506136ef5f8301846136cd565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61372f8261357e565b810181811067ffffffffffffffff8211171561374e5761374d6136f9565b5b80604052505050565b5f6137606135e6565b905061376c8282613726565b919050565b5f67ffffffffffffffff82111561378b5761378a6136f9565b5b602082029050602081019050919050565b5f80fd5b5f6137b26137ad84613771565b613757565b905080838252602082019050602084028301858111156137d5576137d461379c565b5b835b818110156137fe57806137ea888261363d565b8452602084019350506020810190506137d7565b5050509392505050565b5f82601f83011261381c5761381b6136f5565b5b813561382c8482602086016137a0565b91505092915050565b5f6020828403121561384a576138496135ef565b5b5f82013567ffffffffffffffff811115613867576138666135f3565b5b61387384828501613808565b91505092915050565b5f819050919050565b5f61389f61389a613895846135f7565b61387c565b6135f7565b9050919050565b5f6138b082613885565b9050919050565b5f6138c1826138a6565b9050919050565b6138d1816138b7565b82525050565b5f6020820190506138ea5f8301846138c8565b92915050565b6138f981613651565b82525050565b5f6020820190506139125f8301846138f0565b92915050565b5f6020828403121561392d5761392c6135ef565b5b5f61393a8482850161363d565b91505092915050565b5f805f6060848603121561395a576139596135ef565b5b5f6139678682870161363d565b93505060206139788682870161363d565b925050604061398986828701613670565b9150509250925092565b61399c81613616565b82525050565b5f6020820190506139b55f830184613993565b92915050565b5f60ff82169050919050565b6139d0816139bb565b82525050565b5f6020820190506139e95f8301846139c7565b92915050565b5f805f60608486031215613a0657613a056135ef565b5b5f613a1386828701613670565b9350506020613a2486828701613670565b9250506040613a3586828701613670565b9150509250925092565b613a48816136c2565b8114613a52575f80fd5b50565b5f81359050613a6381613a3f565b92915050565b5f8060408385031215613a7f57613a7e6135ef565b5b5f613a8c8582860161363d565b9250506020613a9d85828601613a55565b9150509250929050565b5f60208284031215613abc57613abb6135ef565b5b5f613ac984828501613a55565b91505092915050565b5f60208284031215613ae757613ae66135ef565b5b5f613af484828501613670565b91505092915050565b5f8060408385031215613b1357613b126135ef565b5b5f613b208582860161363d565b9250506020613b318582860161363d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b7f57607f821691505b602082108103613b9257613b91613b3b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613bcc602083613546565b9150613bd782613b98565b602082019050919050565b5f6020820190508181035f830152613bf981613bc0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c6482613651565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c9657613c95613c2d565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613cfb602883613546565b9150613d0682613ca1565b604082019050919050565b5f6020820190508181035f830152613d2881613cef565b9050919050565b5f613d3982613651565b9150613d4483613651565b9250828201905080821115613d5c57613d5b613c2d565b5b92915050565b7f4d757374206b656570206665657320617420323025206f72206c6573730000005f82015250565b5f613d96601d83613546565b9150613da182613d62565b602082019050919050565b5f6020820190508181035f830152613dc381613d8a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e24603983613546565b9150613e2f82613dca565b604082019050919050565b5f6020820190508181035f830152613e5181613e18565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613eb2602583613546565b9150613ebd82613e58565b604082019050919050565b5f6020820190508181035f830152613edf81613ea6565b9050919050565b5f613ef082613651565b9150613efb83613651565b9250828202613f0981613651565b91508282048414831517613f2057613f1f613c2d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f5e82613651565b9150613f6983613651565b925082613f7957613f78613f27565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613fde603583613546565b9150613fe982613f84565b604082019050919050565b5f6020820190508181035f83015261400b81613fd2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61406c603483613546565b915061407782614012565b604082019050919050565b5f6020820190508181035f83015261409981614060565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140fa602683613546565b9150614105826140a0565b604082019050919050565b5f6020820190508181035f830152614127816140ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614188602483613546565b91506141938261412e565b604082019050919050565b5f6020820190508181035f8301526141b58161417c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614216602283613546565b9150614221826141bc565b604082019050919050565b5f6020820190508181035f8301526142438161420a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142a4602583613546565b91506142af8261424a565b604082019050919050565b5f6020820190508181035f8301526142d181614298565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614332602383613546565b915061433d826142d8565b604082019050919050565b5f6020820190508181035f83015261435f81614326565b9050919050565b7f596f7520617265206120626f74000000000000000000000000000000000000005f82015250565b5f61439a600d83613546565b91506143a582614366565b602082019050919050565b5f6020820190508181035f8301526143c78161438e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614402601683613546565b915061440d826143ce565b602082019050919050565b5f6020820190508181035f83015261442f816143f6565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f614490602483613546565b915061449b82614436565b604082019050919050565b5f6020820190508181035f8301526144bd81614484565b9050919050565b5f6144ce82613651565b91506144d983613651565b92508282039050818111156144f1576144f0613c2d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614551602683613546565b915061455c826144f7565b604082019050919050565b5f6020820190508181035f83015261457e81614545565b9050919050565b5f81905092915050565b50565b5f61459d5f83614585565b91506145a88261458f565b5f82019050919050565b5f6145bc82614592565b9150819050919050565b5f6060820190506145d95f8301866138f0565b6145e660208301856138f0565b6145f360408301846138f0565b949350505050565b5f8151905061460981613627565b92915050565b5f60208284031215614624576146236135ef565b5b5f614631848285016145fb565b91505092915050565b5f819050919050565b5f61465d6146586146538461463a565b61387c565b613651565b9050919050565b61466d81614643565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6146a581613616565b82525050565b5f6146b6838361469c565b60208301905092915050565b5f602082019050919050565b5f6146d882614673565b6146e2818561467d565b93506146ed8361468d565b805f5b8381101561471d57815161470488826146ab565b975061470f836146c2565b9250506001810190506146f0565b5085935050505092915050565b5f60a08201905061473d5f8301886138f0565b61474a6020830187614664565b818103604083015261475c81866146ce565b905061476b6060830185613993565b61477860808301846138f0565b9695505050505050565b5f60c0820190506147955f830189613993565b6147a260208301886138f0565b6147af6040830187614664565b6147bc6060830186614664565b6147c96080830185613993565b6147d660a08301846138f0565b979650505050505050565b5f815190506147ef8161365a565b92915050565b5f805f6060848603121561480c5761480b6135ef565b5b5f614819868287016147e1565b935050602061482a868287016147e1565b925050604061483b868287016147e1565b915050925092509256fea264697066735822122064d29fc62c0a1b93b01b938438e7052c0ab5ee94f552f4551d6f7c7c936dc3b964736f6c63430008140033

Deployed Bytecode Sourcemap

12026:13232:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2314:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3092:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22256:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12107:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2581:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18694:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12974:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13014;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3241:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12210:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2498:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3621:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12165:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12457:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18859:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12831:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12537:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2679:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15913:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12349:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12763;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16976:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15749:112;;;;;;;;;;;;;:::i;:::-;;526:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12386:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22125:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12904:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16868:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2404:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17997:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12800:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13054:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12942:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3816:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2796:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18478:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13182:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12497:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17807:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17387:412;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12646:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16300:470;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12692:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2951:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12417:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16095:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12726:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12866:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2314:84;2368:13;2391:5;2384:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2314:84;:::o;3092:143::-;3175:4;3182:39;3191:12;:10;:12::i;:::-;3205:7;3214:6;3182:8;:39::i;:::-;3229:4;3222:11;;3092:143;;;;:::o;22256:203::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22340:9:::1;22335:117;22359:15;:22;22355:1;:26;22335:117;;;22436:4;22403:10;:30;22414:15;22430:1;22414:18;;;;;;;;:::i;:::-;;;;;;;;22403:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22383:3;;;;;:::i;:::-;;;;22335:117;;;;22256:203:::0;:::o;12107:51::-;;;:::o;2581:92::-;2642:7;2659:12;;2652:19;;2581:92;:::o;18694:157::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18801:9:::1;;;;;;;;;;;18773:38;;18790:9;18773:38;;;;;;;;;;;;18834:9;18822;;:21;;;;;;;;;;;;;;;;;;18694:157:::0;:::o;12974:33::-;;;;:::o;13014:::-;;;;:::o;3241:374::-;3347:4;3354:36;3364:6;3372:9;3383:6;3354:9;:36::i;:::-;3391:24;3418:11;:19;3430:6;3418:19;;;;;;;;;;;;;;;:33;3438:12;:10;:12::i;:::-;3418:33;;;;;;;;;;;;;;;;3391:60;;3480:6;3460:16;:26;;3452:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3543:57;3552:6;3560:12;:10;:12::i;:::-;3593:6;3574:16;:25;3543:8;:57::i;:::-;3609:4;3602:11;;;3241:374;;;;;:::o;12210:53::-;12256:6;12210:53;:::o;2498:77::-;2556:5;2571:2;2564:9;;2498:77;:::o;3621:189::-;3709:4;3716:80;3725:12;:10;:12::i;:::-;3739:7;3785:10;3748:11;:25;3760:12;:10;:12::i;:::-;3748:25;;;;;;;;;;;;;;;:34;3774:7;3748:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3716:8;:80::i;:::-;3804:4;3797:11;;3621:189;;;;:::o;12165:38::-;;;:::o;12457:33::-;;;;;;;;;;;;;:::o;18859:126::-;18925:4;18949:19;:28;18969:7;18949:28;;;;;;;;;;;;;;;;;;;;;;;;;18942:35;;18859:126;;;:::o;12831:28::-;;;;:::o;12537:31::-;;;;;;;;;;;;;:::o;2679:111::-;2753:7;2770:9;:18;2780:7;2770:18;;;;;;;;;;;;;;;;2763:25;;2679:111;;;:::o;15913:121::-;15965:4;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15999:5:::1;15982:14;;:22;;;;;;;;;;;;;;;;;;16022:4;16015:11;;15913:121:::0;:::o;12349:30::-;;;;;;;;;;;;;:::o;12763:::-;;;;:::o;16976:403::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17144:13:::1;17126:15;:31;;;;17186:13;17168:15;:31;;;;17222:7;17210:9;:19;;;;17291:9;;17273:15;;17255;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;17240:12;:60;;;;17335:2;17319:12;;:18;;17311:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16976:403:::0;;;:::o;15749:112::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15820:4:::1;15804:13;;:20;;;;;;;;;;;;;;;;;;15849:4;15835:11;;:18;;;;;;;;;;;;;;;;;;15749:112::o:0;526:71::-;572:7;589:6;;;;;;;;;;;582:13;;526:71;:::o;12386:24::-;;;;;;;;;;;;;:::o;22125:123::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22227:13:::1;22205:10;:19;22216:7;22205:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22125:123:::0;;:::o;12904:31::-;;;;:::o;16868:100::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16953:7:::1;16939:11;;:21;;;;;;;;;;;;;;;;;;16868:100:::0;:::o;2404:88::-;2460:13;2483:7;2476:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2404:88;:::o;17997:279::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18118:13:::1;18110:21;;:4;:21;;::::0;18088:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18227:41;18256:4;18262:5;18227:28;:41::i;:::-;17997:279:::0;;:::o;12800:24::-;;;;:::o;13054:27::-;;;;:::o;12942:25::-;;;;:::o;3816:341::-;3909:4;3916:24;3943:11;:25;3955:12;:10;:12::i;:::-;3943:25;;;;;;;;;;;;;;;:34;3969:7;3943:34;;;;;;;;;;;;;;;;3916:61;;4006:15;3986:16;:35;;3978:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4075:67;4084:12;:10;:12::i;:::-;4098:7;4126:15;4107:16;:34;4075:8;:67::i;:::-;4151:4;4144:11;;;3816:341;;;;:::o;2796:149::-;2882:4;2889:42;2899:12;:10;:12::i;:::-;2913:9;2924:6;2889:9;:42::i;:::-;2939:4;2932:11;;2796:149;;;;:::o;18478:208::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18615:15:::1;;;;;;;;;;;18572:59;;18595:18;18572:59;;;;;;;;;;;;18660:18;18642:15;;:36;;;;;;;;;;;;;;;;;;18478:208:::0;:::o;13182:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12497:33::-;;;;;;;;;;;;;:::o;17807:182::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17923:8:::1;17892:19;:28;17912:7;17892:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17963:7;17947:34;;;17972:8;17947:34;;;;;;:::i;:::-;;;;;;;;17807:182:::0;;:::o;17387:412::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17557:13:::1;17538:16;:32;;;;17600:13;17581:16;:32;;;;17637:7;17624:10;:20;;;;17709:10;;17690:16;;17671;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;17655:13;:64;;;;17755:2;17738:13;;:19;;17730:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17387:412:::0;;;:::o;12646:39::-;;;;;;;;;;;;;:::o;16300:470::-;16381:4;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16460:6:::1;16455:1;16439:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16438:28;;;;:::i;:::-;16425:9;:41;;16403:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;16615:4;16610:1;16594:13;:11;:13::i;:::-;:17;;;;:::i;:::-;16593:26;;;;:::i;:::-;16580:9;:39;;16558:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;16731:9;16710:18;:30;;;;16758:4;16751:11;;16300:470:::0;;;:::o;12692:27::-;;;;:::o;2951:135::-;3040:7;3057:11;:18;3069:5;3057:18;;;;;;;;;;;;;;;:27;3076:7;3057:27;;;;;;;;;;;;;;;;3050:34;;2951:135;;;;:::o;12417:33::-;;;;:::o;16095:135::-;16155:4;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16195:5:::1;16172:20;;:28;;;;;;;;;;;;;;;;;;16218:4;16211:11;;16095:135:::0;:::o;12726:30::-;;;;:::o;703:175::-;644:12;:10;:12::i;:::-;633:23;;:7;:5;:7::i;:::-;:23;;;625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;802:1:::1;782:22;;:8;:22;;::::0;774:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;848:28;867:8;848:18;:28::i;:::-;703:175:::0;:::o;12866:31::-;;;;:::o;128:82::-;181:7;198:10;191:17;;128:82;:::o;5552:298::-;5661:1;5644:19;;:5;:19;;;5636:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5732:1;5713:21;;:7;:21;;;5705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5804:6;5774:11;:18;5786:5;5774:18;;;;;;;;;;;;;;;:27;5793:7;5774:27;;;;;;;;;;;;;;;:36;;;;5832:7;5816:32;;5825:5;5816:32;;;5841:6;5816:32;;;;;;:::i;:::-;;;;;;;;5552:298;;;:::o;19043:3074::-;19191:1;19175:18;;:4;:18;;;19167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19268:1;19254:16;;:2;:16;;;19246:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19330:10;:16;19341:4;19330:16;;;;;;;;;;;;;;;;;;;;;;;;;19329:17;:36;;;;;19351:10;:14;19362:2;19351:14;;;;;;;;;;;;;;;;;;;;;;;;;19350:15;19329:36;19321:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19410:1;19400:6;:11;19396:93;;19428:28;19444:4;19450:2;19454:1;19428:15;:28::i;:::-;19471:7;;19396:93;19505:14;;;;;;;;;;;19501:866;;;19548:7;:5;:7::i;:::-;19540:15;;:4;:15;;;;:32;;;;;19565:7;:5;:7::i;:::-;19559:13;;:2;:13;;;;19540:32;:52;;;;;19590:1;19576:16;;:2;:16;;;;19540:52;:77;;;;;19610:6;19596:21;;:2;:21;;;;19540:77;:90;;;;;19622:8;;;;;;;;;;;19621:9;19540:90;19536:820;;;19656:13;;;;;;;;;;;19651:150;;19702:19;:25;19722:4;19702:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19731:19;:23;19751:2;19731:23;;;;;;;;;;;;;;;;;;;;;;;;;19702:52;19694:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19651:150;19957:20;;;;;;;;;;;19953:388;;;20012:7;:5;:7::i;:::-;20006:13;;:2;:13;;;;:47;;;;;20037:15;20023:30;;:2;:30;;;;20006:47;:79;;;;;20071:13;20057:28;;:2;:28;;;;20006:79;20002:320;;;20164:12;20122:28;:39;20151:9;20122:39;;;;;;;;;;;;;;;;:54;20114:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;20286:12;20244:28;:39;20273:9;20244:39;;;;;;;;;;;;;;;:54;;;;20002:320;19953:388;19536:820;19501:866;20379:28;20410:24;20428:4;20410:9;:24::i;:::-;20379:55;;20447:12;20486:18;;20462:20;:42;;20447:57;;20521:7;:22;;;;;20532:11;;;;;;;;;;;20521:22;:35;;;;;20548:8;;;;;;;;;;;20547:9;20521:35;:71;;;;;20561:25;:31;20587:4;20561:31;;;;;;;;;;;;;;;;;;;;;;;;;20560:32;20521:71;:101;;;;;20597:19;:25;20617:4;20597:25;;;;;;;;;;;;;;;;;;;;;;;;;20596:26;20521:101;:129;;;;;20627:19;:23;20647:2;20627:23;;;;;;;;;;;;;;;;;;;;;;;;;20626:24;20521:129;20517:233;;;20678:4;20667:8;;:15;;;;;;;;;;;;;;;;;;20697:10;:8;:10::i;:::-;20733:5;20722:8;;:16;;;;;;;;;;;;;;;;;;20517:233;20762:12;20778:8;;;;;;;;;;;20777:9;20762:24;;20888:19;:25;20908:4;20888:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20917:19;:23;20937:2;20917:23;;;;;;;;;;;;;;;;;;;;;;;;;20888:52;20884:100;;;20967:5;20957:15;;20884:100;20996:12;21101:7;21097:967;;;21153:25;:29;21179:2;21153:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;21202:1;21186:13;;:17;21153:50;21149:768;;;21231:34;21261:3;21231:25;21242:13;;21231:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;21224:41;;21334:13;;21314:16;;21307:4;:23;;;;:::i;:::-;21306:41;;;;:::i;:::-;21284:18;;:63;;;;;;;:::i;:::-;;;;;;;;21416:13;;21396:16;;21389:4;:23;;;;:::i;:::-;21388:41;;;;:::i;:::-;21366:18;;:63;;;;;;;:::i;:::-;;;;;;;;21486:13;;21472:10;;21465:4;:17;;;;:::i;:::-;21464:35;;;;:::i;:::-;21448:12;;:51;;;;;;;:::i;:::-;;;;;;;;21149:768;;;21561:25;:31;21587:4;21561:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21611:1;21596:12;;:16;21561:51;21557:360;;;21640:33;21669:3;21640:24;21651:12;;21640:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21633:40;;21741:12;;21722:15;;21715:4;:22;;;;:::i;:::-;21714:39;;;;:::i;:::-;21692:18;;:61;;;;;;;:::i;:::-;;;;;;;;21821:12;;21802:15;;21795:4;:22;;;;:::i;:::-;21794:39;;;;:::i;:::-;21772:18;;:61;;;;;;;:::i;:::-;;;;;;;;21889:12;;21876:9;;21869:4;:16;;;;:::i;:::-;21868:33;;;;:::i;:::-;21852:12;;:49;;;;;;;:::i;:::-;;;;;;;;21557:360;21149:768;21944:1;21937:4;:8;21933:91;;;21966:42;21982:4;21996;22003;21966:15;:42::i;:::-;21933:91;22048:4;22038:14;;;;;:::i;:::-;;;21097:967;22076:33;22092:4;22098:2;22102:6;22076:15;:33::i;:::-;19156:2961;;;;19043:3074;;;;:::o;18284:186::-;18401:5;18367:25;:31;18393:4;18367:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18456:5;18422:40;;18450:4;18422:40;;;;;;;;;;;;18284:186;;:::o;884:155::-;948:16;967:6;;;;;;;;;;;948:25;;983:8;974:6;;:17;;;;;;;;;;;;;;;;;;1028:8;997:40;;1018:8;997:40;;;;;;;;;;;;947:92;884:155;:::o;4163:571::-;4277:1;4259:20;;:6;:20;;;4251:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4351:1;4330:23;;:9;:23;;;4322:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4394:47;4415:6;4423:9;4434:6;4394:20;:47::i;:::-;4442:21;4466:9;:17;4476:6;4466:17;;;;;;;;;;;;;;;;4442:41;;4509:6;4492:13;:23;;4484:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4606:6;4590:13;:22;4570:9;:17;4580:6;4570:17;;;;;;;;;;;;;;;:42;;;;4638:6;4614:9;:20;4624:9;4614:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4667:9;4650:35;;4659:6;4650:35;;;4678:6;4650:35;;;;;;:::i;:::-;;;;;;;;4686:46;4706:6;4714:9;4725:6;4686:19;:46::i;:::-;4250:484;4163:571;;;:::o;23589:1666::-;23628:23;23654:24;23672:4;23654:9;:24::i;:::-;23628:50;;23689:25;23759:12;;23738:18;;23717;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;23689:82;;23782:12;23830:1;23811:15;:20;:46;;;;23856:1;23835:17;:22;23811:46;23807:85;;;23874:7;;;;;23807:85;23947:2;23926:18;;:23;;;;:::i;:::-;23908:15;:41;23904:115;;;24005:2;23984:18;;:23;;;;:::i;:::-;23966:41;;23904:115;24080:23;24167:1;24147:17;24125:18;;24107:15;:36;;;;:::i;:::-;24106:58;;;;:::i;:::-;:62;;;;:::i;:::-;24080:88;;24179:26;24208:36;24228:15;24208;:19;;:36;;;;:::i;:::-;24179:65;;24255:25;24283:21;24255:49;;24315:36;24332:18;24315:16;:36::i;:::-;24362:18;24383:44;24409:17;24383:21;:25;;:44;;;;:::i;:::-;24362:65;;24438:23;24464:57;24503:17;24464:34;24479:18;;24464:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;24438:83;;24532:17;24552:51;24585:17;24552:28;24567:12;;24552:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;24532:71;;24614:23;24671:9;24653:15;24640:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;24614:66;;24712:1;24691:18;:22;;;;24745:1;24724:18;:22;;;;24772:1;24757:12;:16;;;;24806:9;;;;;;;;;;;24798:23;;24829:9;24798:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24784:59;;;;;24878:1;24860:15;:19;:42;;;;;24901:1;24883:15;:19;24860:42;24856:278;;;24919:46;24932:15;24949;24919:12;:46::i;:::-;24985:137;25018:18;25055:15;25089:18;;24985:137;;;;;;;;:::i;:::-;;;;;;;;24856:278;25168:15;;;;;;;;;;;25160:29;;25211:21;25160:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25146:101;;;;;23617:1638;;;;;;;;;;23589:1666;:::o;7044:82::-;7102:7;7123:1;7119;:5;;;;:::i;:::-;7112:12;;7044:82;;;;:::o;7132:::-;7190:7;7211:1;7207;:5;;;;:::i;:::-;7200:12;;7132:82;;;;:::o;5856:91::-;;;;:::o;5953:90::-;;;;:::o;6956:82::-;7014:7;7035:1;7031;:5;;;;:::i;:::-;7024:12;;6956:82;;;;:::o;22467:589::-;22593:21;22631:1;22617:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22593:40;;22662:4;22644;22649:1;22644:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22688:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22678:4;22683:1;22678:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22723:62;22740:4;22755:15;22773:11;22723:8;:62::i;:::-;22824:15;:66;;;22905:11;22931:1;22975:4;23002;23022:15;22824:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22522:534;22467:589;:::o;23064:517::-;23212:62;23229:4;23244:15;23262:11;23212:8;:62::i;:::-;23317:15;:31;;;23356:9;23389:4;23409:11;23435:1;23478;12256:6;23547:15;23317:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23064:517;;:::o;7:99:1:-;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:117::-;3555:1;3552;3545:12;3569:180;3617:77;3614:1;3607:88;3714:4;3711:1;3704:15;3738:4;3735:1;3728:15;3755:281;3838:27;3860:4;3838:27;:::i;:::-;3830:6;3826:40;3968:6;3956:10;3953:22;3932:18;3920:10;3917:34;3914:62;3911:88;;;3979:18;;:::i;:::-;3911:88;4019:10;4015:2;4008:22;3798:238;3755:281;;:::o;4042:129::-;4076:6;4103:20;;:::i;:::-;4093:30;;4132:33;4160:4;4152:6;4132:33;:::i;:::-;4042:129;;;:::o;4177:311::-;4254:4;4344:18;4336:6;4333:30;4330:56;;;4366:18;;:::i;:::-;4330:56;4416:4;4408:6;4404:17;4396:25;;4476:4;4470;4466:15;4458:23;;4177:311;;;:::o;4494:117::-;4603:1;4600;4593:12;4634:710;4730:5;4755:81;4771:64;4828:6;4771:64;:::i;:::-;4755:81;:::i;:::-;4746:90;;4856:5;4885:6;4878:5;4871:21;4919:4;4912:5;4908:16;4901:23;;4972:4;4964:6;4960:17;4952:6;4948:30;5001:3;4993:6;4990:15;4987:122;;;5020:79;;:::i;:::-;4987:122;5135:6;5118:220;5152:6;5147:3;5144:15;5118:220;;;5227:3;5256:37;5289:3;5277:10;5256:37;:::i;:::-;5251:3;5244:50;5323:4;5318:3;5314:14;5307:21;;5194:144;5178:4;5173:3;5169:14;5162:21;;5118:220;;;5122:21;4736:608;;4634:710;;;;;:::o;5367:370::-;5438:5;5487:3;5480:4;5472:6;5468:17;5464:27;5454:122;;5495:79;;:::i;:::-;5454:122;5612:6;5599:20;5637:94;5727:3;5719:6;5712:4;5704:6;5700:17;5637:94;:::i;:::-;5628:103;;5444:293;5367:370;;;;:::o;5743:539::-;5827:6;5876:2;5864:9;5855:7;5851:23;5847:32;5844:119;;;5882:79;;:::i;:::-;5844:119;6030:1;6019:9;6015:17;6002:31;6060:18;6052:6;6049:30;6046:117;;;6082:79;;:::i;:::-;6046:117;6187:78;6257:7;6248:6;6237:9;6233:22;6187:78;:::i;:::-;6177:88;;5973:302;5743:539;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:153::-;6711:9;6744:37;6775:5;6744:37;:::i;:::-;6731:50;;6634:153;;;:::o;6793:185::-;6907:64;6965:5;6907:64;:::i;:::-;6902:3;6895:77;6793:185;;:::o;6984:276::-;7104:4;7142:2;7131:9;7127:18;7119:26;;7155:98;7250:1;7239:9;7235:17;7226:6;7155:98;:::i;:::-;6984:276;;;;:::o;7266:118::-;7353:24;7371:5;7353:24;:::i;:::-;7348:3;7341:37;7266:118;;:::o;7390:222::-;7483:4;7521:2;7510:9;7506:18;7498:26;;7534:71;7602:1;7591:9;7587:17;7578:6;7534:71;:::i;:::-;7390:222;;;;:::o;7618:329::-;7677:6;7726:2;7714:9;7705:7;7701:23;7697:32;7694:119;;;7732:79;;:::i;:::-;7694:119;7852:1;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7823:117;7618:329;;;;:::o;7953:619::-;8030:6;8038;8046;8095:2;8083:9;8074:7;8070:23;8066:32;8063:119;;;8101:79;;:::i;:::-;8063:119;8221:1;8246:53;8291:7;8282:6;8271:9;8267:22;8246:53;:::i;:::-;8236:63;;8192:117;8348:2;8374:53;8419:7;8410:6;8399:9;8395:22;8374:53;:::i;:::-;8364:63;;8319:118;8476:2;8502:53;8547:7;8538:6;8527:9;8523:22;8502:53;:::i;:::-;8492:63;;8447:118;7953:619;;;;;:::o;8578:118::-;8665:24;8683:5;8665:24;:::i;:::-;8660:3;8653:37;8578:118;;:::o;8702:222::-;8795:4;8833:2;8822:9;8818:18;8810:26;;8846:71;8914:1;8903:9;8899:17;8890:6;8846:71;:::i;:::-;8702:222;;;;:::o;8930:86::-;8965:7;9005:4;8998:5;8994:16;8983:27;;8930:86;;;:::o;9022:112::-;9105:22;9121:5;9105:22;:::i;:::-;9100:3;9093:35;9022:112;;:::o;9140:214::-;9229:4;9267:2;9256:9;9252:18;9244:26;;9280:67;9344:1;9333:9;9329:17;9320:6;9280:67;:::i;:::-;9140:214;;;;:::o;9360:619::-;9437:6;9445;9453;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:53;9698:7;9689:6;9678:9;9674:22;9653:53;:::i;:::-;9643:63;;9599:117;9755:2;9781:53;9826:7;9817:6;9806:9;9802:22;9781:53;:::i;:::-;9771:63;;9726:118;9883:2;9909:53;9954:7;9945:6;9934:9;9930:22;9909:53;:::i;:::-;9899:63;;9854:118;9360:619;;;;;:::o;9985:116::-;10055:21;10070:5;10055:21;:::i;:::-;10048:5;10045:32;10035:60;;10091:1;10088;10081:12;10035:60;9985:116;:::o;10107:133::-;10150:5;10188:6;10175:20;10166:29;;10204:30;10228:5;10204:30;:::i;:::-;10107:133;;;;:::o;10246:468::-;10311:6;10319;10368:2;10356:9;10347:7;10343:23;10339:32;10336:119;;;10374:79;;:::i;:::-;10336:119;10494:1;10519:53;10564:7;10555:6;10544:9;10540:22;10519:53;:::i;:::-;10509:63;;10465:117;10621:2;10647:50;10689:7;10680:6;10669:9;10665:22;10647:50;:::i;:::-;10637:60;;10592:115;10246:468;;;;;:::o;10720:323::-;10776:6;10825:2;10813:9;10804:7;10800:23;10796:32;10793:119;;;10831:79;;:::i;:::-;10793:119;10951:1;10976:50;11018:7;11009:6;10998:9;10994:22;10976:50;:::i;:::-;10966:60;;10922:114;10720:323;;;;:::o;11049:329::-;11108:6;11157:2;11145:9;11136:7;11132:23;11128:32;11125:119;;;11163:79;;:::i;:::-;11125:119;11283:1;11308:53;11353:7;11344:6;11333:9;11329:22;11308:53;:::i;:::-;11298:63;;11254:117;11049:329;;;;:::o;11384:474::-;11452:6;11460;11509:2;11497:9;11488:7;11484:23;11480:32;11477:119;;;11515:79;;:::i;:::-;11477:119;11635:1;11660:53;11705:7;11696:6;11685:9;11681:22;11660:53;:::i;:::-;11650:63;;11606:117;11762:2;11788:53;11833:7;11824:6;11813:9;11809:22;11788:53;:::i;:::-;11778:63;;11733:118;11384:474;;;;;:::o;11864:180::-;11912:77;11909:1;11902:88;12009:4;12006:1;11999:15;12033:4;12030:1;12023:15;12050:320;12094:6;12131:1;12125:4;12121:12;12111:22;;12178:1;12172:4;12168:12;12199:18;12189:81;;12255:4;12247:6;12243:17;12233:27;;12189:81;12317:2;12309:6;12306:14;12286:18;12283:38;12280:84;;12336:18;;:::i;:::-;12280:84;12101:269;12050:320;;;:::o;12376:182::-;12516:34;12512:1;12504:6;12500:14;12493:58;12376:182;:::o;12564:366::-;12706:3;12727:67;12791:2;12786:3;12727:67;:::i;:::-;12720:74;;12803:93;12892:3;12803:93;:::i;:::-;12921:2;12916:3;12912:12;12905:19;;12564:366;;;:::o;12936:419::-;13102:4;13140:2;13129:9;13125:18;13117:26;;13189:9;13183:4;13179:20;13175:1;13164:9;13160:17;13153:47;13217:131;13343:4;13217:131;:::i;:::-;13209:139;;12936:419;;;:::o;13361:180::-;13409:77;13406:1;13399:88;13506:4;13503:1;13496:15;13530:4;13527:1;13520:15;13547:180;13595:77;13592:1;13585:88;13692:4;13689:1;13682:15;13716:4;13713:1;13706:15;13733:233;13772:3;13795:24;13813:5;13795:24;:::i;:::-;13786:33;;13841:66;13834:5;13831:77;13828:103;;13911:18;;:::i;:::-;13828:103;13958:1;13951:5;13947:13;13940:20;;13733:233;;;:::o;13972:227::-;14112:34;14108:1;14100:6;14096:14;14089:58;14181:10;14176:2;14168:6;14164:15;14157:35;13972:227;:::o;14205:366::-;14347:3;14368:67;14432:2;14427:3;14368:67;:::i;:::-;14361:74;;14444:93;14533:3;14444:93;:::i;:::-;14562:2;14557:3;14553:12;14546:19;;14205:366;;;:::o;14577:419::-;14743:4;14781:2;14770:9;14766:18;14758:26;;14830:9;14824:4;14820:20;14816:1;14805:9;14801:17;14794:47;14858:131;14984:4;14858:131;:::i;:::-;14850:139;;14577:419;;;:::o;15002:191::-;15042:3;15061:20;15079:1;15061:20;:::i;:::-;15056:25;;15095:20;15113:1;15095:20;:::i;:::-;15090:25;;15138:1;15135;15131:9;15124:16;;15159:3;15156:1;15153:10;15150:36;;;15166:18;;:::i;:::-;15150:36;15002:191;;;;:::o;15199:179::-;15339:31;15335:1;15327:6;15323:14;15316:55;15199:179;:::o;15384:366::-;15526:3;15547:67;15611:2;15606:3;15547:67;:::i;:::-;15540:74;;15623:93;15712:3;15623:93;:::i;:::-;15741:2;15736:3;15732:12;15725:19;;15384:366;;;:::o;15756:419::-;15922:4;15960:2;15949:9;15945:18;15937:26;;16009:9;16003:4;15999:20;15995:1;15984:9;15980:17;15973:47;16037:131;16163:4;16037:131;:::i;:::-;16029:139;;15756:419;;;:::o;16181:244::-;16321:34;16317:1;16309:6;16305:14;16298:58;16390:27;16385:2;16377:6;16373:15;16366:52;16181:244;:::o;16431:366::-;16573:3;16594:67;16658:2;16653:3;16594:67;:::i;:::-;16587:74;;16670:93;16759:3;16670:93;:::i;:::-;16788:2;16783:3;16779:12;16772:19;;16431:366;;;:::o;16803:419::-;16969:4;17007:2;16996:9;16992:18;16984:26;;17056:9;17050:4;17046:20;17042:1;17031:9;17027:17;17020:47;17084:131;17210:4;17084:131;:::i;:::-;17076:139;;16803:419;;;:::o;17228:224::-;17368:34;17364:1;17356:6;17352:14;17345:58;17437:7;17432:2;17424:6;17420:15;17413:32;17228:224;:::o;17458:366::-;17600:3;17621:67;17685:2;17680:3;17621:67;:::i;:::-;17614:74;;17697:93;17786:3;17697:93;:::i;:::-;17815:2;17810:3;17806:12;17799:19;;17458:366;;;:::o;17830:419::-;17996:4;18034:2;18023:9;18019:18;18011:26;;18083:9;18077:4;18073:20;18069:1;18058:9;18054:17;18047:47;18111:131;18237:4;18111:131;:::i;:::-;18103:139;;17830:419;;;:::o;18255:410::-;18295:7;18318:20;18336:1;18318:20;:::i;:::-;18313:25;;18352:20;18370:1;18352:20;:::i;:::-;18347:25;;18407:1;18404;18400:9;18429:30;18447:11;18429:30;:::i;:::-;18418:41;;18608:1;18599:7;18595:15;18592:1;18589:22;18569:1;18562:9;18542:83;18519:139;;18638:18;;:::i;:::-;18519:139;18303:362;18255:410;;;;:::o;18671:180::-;18719:77;18716:1;18709:88;18816:4;18813:1;18806:15;18840:4;18837:1;18830:15;18857:185;18897:1;18914:20;18932:1;18914:20;:::i;:::-;18909:25;;18948:20;18966:1;18948:20;:::i;:::-;18943:25;;18987:1;18977:35;;18992:18;;:::i;:::-;18977:35;19034:1;19031;19027:9;19022:14;;18857:185;;;;:::o;19048:240::-;19188:34;19184:1;19176:6;19172:14;19165:58;19257:23;19252:2;19244:6;19240:15;19233:48;19048:240;:::o;19294:366::-;19436:3;19457:67;19521:2;19516:3;19457:67;:::i;:::-;19450:74;;19533:93;19622:3;19533:93;:::i;:::-;19651:2;19646:3;19642:12;19635:19;;19294:366;;;:::o;19666:419::-;19832:4;19870:2;19859:9;19855:18;19847:26;;19919:9;19913:4;19909:20;19905:1;19894:9;19890:17;19883:47;19947:131;20073:4;19947:131;:::i;:::-;19939:139;;19666:419;;;:::o;20091:239::-;20231:34;20227:1;20219:6;20215:14;20208:58;20300:22;20295:2;20287:6;20283:15;20276:47;20091:239;:::o;20336:366::-;20478:3;20499:67;20563:2;20558:3;20499:67;:::i;:::-;20492:74;;20575:93;20664:3;20575:93;:::i;:::-;20693:2;20688:3;20684:12;20677:19;;20336:366;;;:::o;20708:419::-;20874:4;20912:2;20901:9;20897:18;20889:26;;20961:9;20955:4;20951:20;20947:1;20936:9;20932:17;20925:47;20989:131;21115:4;20989:131;:::i;:::-;20981:139;;20708:419;;;:::o;21133:225::-;21273:34;21269:1;21261:6;21257:14;21250:58;21342:8;21337:2;21329:6;21325:15;21318:33;21133:225;:::o;21364:366::-;21506:3;21527:67;21591:2;21586:3;21527:67;:::i;:::-;21520:74;;21603:93;21692:3;21603:93;:::i;:::-;21721:2;21716:3;21712:12;21705:19;;21364:366;;;:::o;21736:419::-;21902:4;21940:2;21929:9;21925:18;21917:26;;21989:9;21983:4;21979:20;21975:1;21964:9;21960:17;21953:47;22017:131;22143:4;22017:131;:::i;:::-;22009:139;;21736:419;;;:::o;22161:223::-;22301:34;22297:1;22289:6;22285:14;22278:58;22370:6;22365:2;22357:6;22353:15;22346:31;22161:223;:::o;22390:366::-;22532:3;22553:67;22617:2;22612:3;22553:67;:::i;:::-;22546:74;;22629:93;22718:3;22629:93;:::i;:::-;22747:2;22742:3;22738:12;22731:19;;22390:366;;;:::o;22762:419::-;22928:4;22966:2;22955:9;22951:18;22943:26;;23015:9;23009:4;23005:20;23001:1;22990:9;22986:17;22979:47;23043:131;23169:4;23043:131;:::i;:::-;23035:139;;22762:419;;;:::o;23187:221::-;23327:34;23323:1;23315:6;23311:14;23304:58;23396:4;23391:2;23383:6;23379:15;23372:29;23187:221;:::o;23414:366::-;23556:3;23577:67;23641:2;23636:3;23577:67;:::i;:::-;23570:74;;23653:93;23742:3;23653:93;:::i;:::-;23771:2;23766:3;23762:12;23755:19;;23414:366;;;:::o;23786:419::-;23952:4;23990:2;23979:9;23975:18;23967:26;;24039:9;24033:4;24029:20;24025:1;24014:9;24010:17;24003:47;24067:131;24193:4;24067:131;:::i;:::-;24059:139;;23786:419;;;:::o;24211:224::-;24351:34;24347:1;24339:6;24335:14;24328:58;24420:7;24415:2;24407:6;24403:15;24396:32;24211:224;:::o;24441:366::-;24583:3;24604:67;24668:2;24663:3;24604:67;:::i;:::-;24597:74;;24680:93;24769:3;24680:93;:::i;:::-;24798:2;24793:3;24789:12;24782:19;;24441:366;;;:::o;24813:419::-;24979:4;25017:2;25006:9;25002:18;24994:26;;25066:9;25060:4;25056:20;25052:1;25041:9;25037:17;25030:47;25094:131;25220:4;25094:131;:::i;:::-;25086:139;;24813:419;;;:::o;25238:222::-;25378:34;25374:1;25366:6;25362:14;25355:58;25447:5;25442:2;25434:6;25430:15;25423:30;25238:222;:::o;25466:366::-;25608:3;25629:67;25693:2;25688:3;25629:67;:::i;:::-;25622:74;;25705:93;25794:3;25705:93;:::i;:::-;25823:2;25818:3;25814:12;25807:19;;25466:366;;;:::o;25838:419::-;26004:4;26042:2;26031:9;26027:18;26019:26;;26091:9;26085:4;26081:20;26077:1;26066:9;26062:17;26055:47;26119:131;26245:4;26119:131;:::i;:::-;26111:139;;25838:419;;;:::o;26263:163::-;26403:15;26399:1;26391:6;26387:14;26380:39;26263:163;:::o;26432:366::-;26574:3;26595:67;26659:2;26654:3;26595:67;:::i;:::-;26588:74;;26671:93;26760:3;26671:93;:::i;:::-;26789:2;26784:3;26780:12;26773:19;;26432:366;;;:::o;26804:419::-;26970:4;27008:2;26997:9;26993:18;26985:26;;27057:9;27051:4;27047:20;27043:1;27032:9;27028:17;27021:47;27085:131;27211:4;27085:131;:::i;:::-;27077:139;;26804:419;;;:::o;27229:172::-;27369:24;27365:1;27357:6;27353:14;27346:48;27229:172;:::o;27407:366::-;27549:3;27570:67;27634:2;27629:3;27570:67;:::i;:::-;27563:74;;27646:93;27735:3;27646:93;:::i;:::-;27764:2;27759:3;27755:12;27748:19;;27407:366;;;:::o;27779:419::-;27945:4;27983:2;27972:9;27968:18;27960:26;;28032:9;28026:4;28022:20;28018:1;28007:9;28003:17;27996:47;28060:131;28186:4;28060:131;:::i;:::-;28052:139;;27779:419;;;:::o;28204:223::-;28344:34;28340:1;28332:6;28328:14;28321:58;28413:6;28408:2;28400:6;28396:15;28389:31;28204:223;:::o;28433:366::-;28575:3;28596:67;28660:2;28655:3;28596:67;:::i;:::-;28589:74;;28672:93;28761:3;28672:93;:::i;:::-;28790:2;28785:3;28781:12;28774:19;;28433:366;;;:::o;28805:419::-;28971:4;29009:2;28998:9;28994:18;28986:26;;29058:9;29052:4;29048:20;29044:1;29033:9;29029:17;29022:47;29086:131;29212:4;29086:131;:::i;:::-;29078:139;;28805:419;;;:::o;29230:194::-;29270:4;29290:20;29308:1;29290:20;:::i;:::-;29285:25;;29324:20;29342:1;29324:20;:::i;:::-;29319:25;;29368:1;29365;29361:9;29353:17;;29392:1;29386:4;29383:11;29380:37;;;29397:18;;:::i;:::-;29380:37;29230:194;;;;:::o;29430:225::-;29570:34;29566:1;29558:6;29554:14;29547:58;29639:8;29634:2;29626:6;29622:15;29615:33;29430:225;:::o;29661:366::-;29803:3;29824:67;29888:2;29883:3;29824:67;:::i;:::-;29817:74;;29900:93;29989:3;29900:93;:::i;:::-;30018:2;30013:3;30009:12;30002:19;;29661:366;;;:::o;30033:419::-;30199:4;30237:2;30226:9;30222:18;30214:26;;30286:9;30280:4;30276:20;30272:1;30261:9;30257:17;30250:47;30314:131;30440:4;30314:131;:::i;:::-;30306:139;;30033:419;;;:::o;30458:147::-;30559:11;30596:3;30581:18;;30458:147;;;;:::o;30611:114::-;;:::o;30731:398::-;30890:3;30911:83;30992:1;30987:3;30911:83;:::i;:::-;30904:90;;31003:93;31092:3;31003:93;:::i;:::-;31121:1;31116:3;31112:11;31105:18;;30731:398;;;:::o;31135:379::-;31319:3;31341:147;31484:3;31341:147;:::i;:::-;31334:154;;31505:3;31498:10;;31135:379;;;:::o;31520:442::-;31669:4;31707:2;31696:9;31692:18;31684:26;;31720:71;31788:1;31777:9;31773:17;31764:6;31720:71;:::i;:::-;31801:72;31869:2;31858:9;31854:18;31845:6;31801:72;:::i;:::-;31883;31951:2;31940:9;31936:18;31927:6;31883:72;:::i;:::-;31520:442;;;;;;:::o;31968:143::-;32025:5;32056:6;32050:13;32041:22;;32072:33;32099:5;32072:33;:::i;:::-;31968:143;;;;:::o;32117:351::-;32187:6;32236:2;32224:9;32215:7;32211:23;32207:32;32204:119;;;32242:79;;:::i;:::-;32204:119;32362:1;32387:64;32443:7;32434:6;32423:9;32419:22;32387:64;:::i;:::-;32377:74;;32333:128;32117:351;;;;:::o;32474:85::-;32519:7;32548:5;32537:16;;32474:85;;;:::o;32565:158::-;32623:9;32656:61;32674:42;32683:32;32709:5;32683:32;:::i;:::-;32674:42;:::i;:::-;32656:61;:::i;:::-;32643:74;;32565:158;;;:::o;32729:147::-;32824:45;32863:5;32824:45;:::i;:::-;32819:3;32812:58;32729:147;;:::o;32882:114::-;32949:6;32983:5;32977:12;32967:22;;32882:114;;;:::o;33002:184::-;33101:11;33135:6;33130:3;33123:19;33175:4;33170:3;33166:14;33151:29;;33002:184;;;;:::o;33192:132::-;33259:4;33282:3;33274:11;;33312:4;33307:3;33303:14;33295:22;;33192:132;;;:::o;33330:108::-;33407:24;33425:5;33407:24;:::i;:::-;33402:3;33395:37;33330:108;;:::o;33444:179::-;33513:10;33534:46;33576:3;33568:6;33534:46;:::i;:::-;33612:4;33607:3;33603:14;33589:28;;33444:179;;;;:::o;33629:113::-;33699:4;33731;33726:3;33722:14;33714:22;;33629:113;;;:::o;33778:732::-;33897:3;33926:54;33974:5;33926:54;:::i;:::-;33996:86;34075:6;34070:3;33996:86;:::i;:::-;33989:93;;34106:56;34156:5;34106:56;:::i;:::-;34185:7;34216:1;34201:284;34226:6;34223:1;34220:13;34201:284;;;34302:6;34296:13;34329:63;34388:3;34373:13;34329:63;:::i;:::-;34322:70;;34415:60;34468:6;34415:60;:::i;:::-;34405:70;;34261:224;34248:1;34245;34241:9;34236:14;;34201:284;;;34205:14;34501:3;34494:10;;33902:608;;;33778:732;;;;:::o;34516:831::-;34779:4;34817:3;34806:9;34802:19;34794:27;;34831:71;34899:1;34888:9;34884:17;34875:6;34831:71;:::i;:::-;34912:80;34988:2;34977:9;34973:18;34964:6;34912:80;:::i;:::-;35039:9;35033:4;35029:20;35024:2;35013:9;35009:18;35002:48;35067:108;35170:4;35161:6;35067:108;:::i;:::-;35059:116;;35185:72;35253:2;35242:9;35238:18;35229:6;35185:72;:::i;:::-;35267:73;35335:3;35324:9;35320:19;35311:6;35267:73;:::i;:::-;34516:831;;;;;;;;:::o;35353:807::-;35602:4;35640:3;35629:9;35625:19;35617:27;;35654:71;35722:1;35711:9;35707:17;35698:6;35654:71;:::i;:::-;35735:72;35803:2;35792:9;35788:18;35779:6;35735:72;:::i;:::-;35817:80;35893:2;35882:9;35878:18;35869:6;35817:80;:::i;:::-;35907;35983:2;35972:9;35968:18;35959:6;35907:80;:::i;:::-;35997:73;36065:3;36054:9;36050:19;36041:6;35997:73;:::i;:::-;36080;36148:3;36137:9;36133:19;36124:6;36080:73;:::i;:::-;35353:807;;;;;;;;;:::o;36166:143::-;36223:5;36254:6;36248:13;36239:22;;36270:33;36297:5;36270:33;:::i;:::-;36166:143;;;;:::o;36315:663::-;36403:6;36411;36419;36468:2;36456:9;36447:7;36443:23;36439:32;36436:119;;;36474:79;;:::i;:::-;36436:119;36594:1;36619:64;36675:7;36666:6;36655:9;36651:22;36619:64;:::i;:::-;36609:74;;36565:128;36732:2;36758:64;36814:7;36805:6;36794:9;36790:22;36758:64;:::i;:::-;36748:74;;36703:129;36871:2;36897:64;36953:7;36944:6;36933:9;36929:22;36897:64;:::i;:::-;36887:74;;36842:129;36315:663;;;;;:::o

Swarm Source

ipfs://64d29fc62c0a1b93b01b938438e7052c0ab5ee94f552f4551d6f7c7c936dc3b9

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  ]
[ 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.