ETH Price: $3,344.59 (-1.05%)

Contract

0x41d321E0365a42058a465Dc5BF98242a92C2E9F3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

XToolsAI (XTAI) (@$0.0005)
Transaction Hash
Method
Block
From
To
Approve212413142024-11-22 5:54:3535 days ago1732254875IN
XToolsAI: XTAI Token
0 ETH0.000466459.88352202
Transfer212381742024-11-21 19:23:5936 days ago1732217039IN
XToolsAI: XTAI Token
0 ETH0.0041675740.58241594
Transfer211695502024-11-12 5:35:1145 days ago1731389711IN
XToolsAI: XTAI Token
0 ETH0.0023107128.72669446
Transfer211611962024-11-11 1:36:5947 days ago1731289019IN
XToolsAI: XTAI Token
0 ETH0.0012380315.3210745
Transfer211611712024-11-11 1:31:4747 days ago1731288707IN
XToolsAI: XTAI Token
0 ETH0.0012352715.2869048
Transfer211491002024-11-09 9:08:1148 days ago1731143291IN
XToolsAI: XTAI Token
0 ETH0.0008939411.06444923
Transfer211062232024-11-03 9:29:2354 days ago1730626163IN
XToolsAI: XTAI Token
0 ETH0.000372644.61164231
Transfer210808362024-10-30 20:27:3558 days ago1730320055IN
XToolsAI: XTAI Token
0 ETH0.0010634710.86350674
Transfer210631282024-10-28 9:06:4760 days ago1730106407IN
XToolsAI: XTAI Token
0 ETH0.000565087.02610785
Transfer210512582024-10-26 17:22:2362 days ago1729963343IN
XToolsAI: XTAI Token
0 ETH0.000771327.87819093
Transfer210296092024-10-23 16:53:3565 days ago1729702415IN
XToolsAI: XTAI Token
0 ETH0.0021149526.28905844
Transfer210225102024-10-22 17:07:4766 days ago1729616867IN
XToolsAI: XTAI Token
0 ETH0.002119621.73105019
Transfer210224672024-10-22 16:59:1166 days ago1729616351IN
XToolsAI: XTAI Token
0 ETH0.0013098216.74300015
Transfer210153382024-10-21 17:05:4767 days ago1729530347IN
XToolsAI: XTAI Token
0 ETH0.0008165410.14969881
Transfer210126082024-10-21 7:58:2367 days ago1729497503IN
XToolsAI: XTAI Token
0 ETH0.000836310.39689131
Transfer209998382024-10-19 13:13:1169 days ago1729343591IN
XToolsAI: XTAI Token
0 ETH0.0013596516.90063539
Transfer209953842024-10-18 22:17:5970 days ago1729289879IN
XToolsAI: XTAI Token
0 ETH0.0009878312.27883614
Transfer209903732024-10-18 5:31:3570 days ago1729229495IN
XToolsAI: XTAI Token
0 ETH0.0019146523.79936871
Transfer209767662024-10-16 7:55:3572 days ago1729065335IN
XToolsAI: XTAI Token
0 ETH0.000858310.67037077
Transfer209766822024-10-16 7:38:4772 days ago1729064327IN
XToolsAI: XTAI Token
0 ETH0.0008140510.11875818
Transfer209743762024-10-15 23:54:5973 days ago1729036499IN
XToolsAI: XTAI Token
0 ETH0.00080159.962739
Transfer209738322024-10-15 22:05:3573 days ago1729029935IN
XToolsAI: XTAI Token
0 ETH0.0009962112.382988
Transfer209734302024-10-15 20:44:2373 days ago1729025063IN
XToolsAI: XTAI Token
0 ETH0.0014119717.55098991
Transfer209731022024-10-15 19:38:2373 days ago1729021103IN
XToolsAI: XTAI Token
0 ETH0.0014586818.13423049
Transfer209729952024-10-15 19:16:5973 days ago1729019819IN
XToolsAI: XTAI Token
0 ETH0.0015694219.51099697
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
206889322024-09-06 3:41:35113 days ago1725594095
XToolsAI: XTAI Token
0.00000417 ETH
206889322024-09-06 3:41:35113 days ago1725594095
XToolsAI: XTAI Token
0.00000417 ETH
206845622024-09-05 13:03:47113 days ago1725541427
XToolsAI: XTAI Token
0 ETH
206845622024-09-05 13:03:47113 days ago1725541427
XToolsAI: XTAI Token
0 ETH
205930142024-08-23 18:12:59126 days ago1724436779
XToolsAI: XTAI Token
0.00099581 ETH
205930142024-08-23 18:12:59126 days ago1724436779
XToolsAI: XTAI Token
0.00099581 ETH
205906302024-08-23 10:13:35126 days ago1724408015
XToolsAI: XTAI Token
0.00597012 ETH
205906302024-08-23 10:13:35126 days ago1724408015
XToolsAI: XTAI Token
0.00597012 ETH
205895712024-08-23 6:39:47126 days ago1724395187
XToolsAI: XTAI Token
0.01398245 ETH
205895712024-08-23 6:39:47126 days ago1724395187
XToolsAI: XTAI Token
0.01398245 ETH
205884422024-08-23 2:51:47127 days ago1724381507
XToolsAI: XTAI Token
0.00788338 ETH
205884422024-08-23 2:51:47127 days ago1724381507
XToolsAI: XTAI Token
0.00788338 ETH
205768852024-08-21 12:05:23128 days ago1724241923
XToolsAI: XTAI Token
0.01183675 ETH
205768852024-08-21 12:05:23128 days ago1724241923
XToolsAI: XTAI Token
0.01183675 ETH
205767992024-08-21 11:48:11128 days ago1724240891
XToolsAI: XTAI Token
0.01244477 ETH
205767992024-08-21 11:48:11128 days ago1724240891
XToolsAI: XTAI Token
0.01244477 ETH
205713492024-08-20 17:32:59129 days ago1724175179
XToolsAI: XTAI Token
0.00076134 ETH
205713492024-08-20 17:32:59129 days ago1724175179
XToolsAI: XTAI Token
0.00076134 ETH
205694392024-08-20 11:09:23129 days ago1724152163
XToolsAI: XTAI Token
0.02211341 ETH
205694392024-08-20 11:09:23129 days ago1724152163
XToolsAI: XTAI Token
0.02211341 ETH
205539322024-08-18 7:11:11131 days ago1723965071
XToolsAI: XTAI Token
0.00675035 ETH
205539322024-08-18 7:11:11131 days ago1723965071
XToolsAI: XTAI Token
0.00675035 ETH
205511782024-08-17 21:58:11132 days ago1723931891
XToolsAI: XTAI Token
0.01834567 ETH
205511782024-08-17 21:58:11132 days ago1723931891
XToolsAI: XTAI Token
0.01834567 ETH
205343262024-08-15 13:27:47134 days ago1723728467
XToolsAI: XTAI Token
0.02769724 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
XToolsAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-13
*/

// SPDX-License-Identifier: Unlicensed

/**
Telegram: https://t.me/XTOOLSPORTAL
Website: https://xtools.ist
Twitter: https://twitter.com/XToolsAI
WhitePaper: https://xtools.gitbook.io/guide/
**/
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);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
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 XToolsAI is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "XToolsAI";
    string private constant _symbol = "XTAI";
    uint8 private constant _decimals = 9;
 
    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 = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;   
    uint256 private _taxFeeOnBuy = 5;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 5;

    event PairAddressSet(address indexed newPair);
 
    //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(0xB476a5FC4Af61d37c4465999bE7a654680C03923); //Dev Wallet
    address payable private _marketingAddress = payable(0x1d00e1c1aa01854eBf07F6fe145fa89e56096173);   //Marketing Wallet
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 1500001 * 10**9;      //%1.5
    uint256 public _maxWalletSize = 1500001 * 10**9;    //%1.5
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    bool private _maxTxn = false;
    bool private _maxWallet = false;
    bool private _maxTxnCan = false;
    bool private _maxWalletCan = false;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function setPair(address newPair) public onlyOwner {
        require(uniswapV2Pair == address(0), "Pair already initialized");
        uniswapV2Pair = newPair;
        emit PairAddressSet(newPair);
    }

    function getPairAddress() public view returns (address) {
        return uniswapV2Pair;
    }
 
    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,
                "the transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount has to be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    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), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "Only owner can trade before trading activation");
            }
 
            require(amount <= _maxTxAmount, "Exceeded max transaction limit");
            require(!bots[from] && !bots[to], "This account is on the blacklist");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "Exceeds max wallet balance");
            }
 
            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 setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    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 onlyOwner {
        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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 95, "Buy tax must be between 0% and 95%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 95, "Sell tax must be between 0% and 95%");

        _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, bool maxTxn, bool maxTxnCan) public onlyOwner {
           _maxTxAmount = maxTxAmount;
           _maxTxn = maxTxn;
           _maxTxnCan = maxTxnCan;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize, bool maxWallet, bool maxWalletCan) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        _maxWallet = maxWallet;
        _maxWalletCan = maxWalletCan;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

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":"newPair","type":"address"}],"name":"PairAddressSet","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":"","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":[{"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":[],"name":"getPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"bool","name":"maxTxn","type":"bool"},{"internalType":"bool","name":"maxTxnCan","type":"bool"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"},{"internalType":"bool","name":"maxWallet","type":"bool"},{"internalType":"bool","name":"maxWalletCan","type":"bool"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c9190620005d4565b6000196200002b91906200063b565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573b476a5fc4af61d37c4465999be7a654680c03923601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731d00e1c1aa01854ebf07f6fe145fa89e56096173601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506605543e32c48a006016556605543e32c48a0060175564e8d4a510006018556000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000601960026101000a81548160ff0219169083151502179055506000601960036101000a81548160ff021916908315150217905550348015620001d157600080fd5b506000620001e46200056a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002996200056a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620003476200057260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004f46200056a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200055b919062000687565b60405180910390a350620006a4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005e1826200059b565b9150620005ee836200059b565b925082620006015762000600620005a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000648826200059b565b915062000655836200059b565b925082820390508181111562000670576200066f6200060c565b5b92915050565b62000681816200059b565b82525050565b60006020820190506200069e600083018462000676565b92915050565b61436c80620006b46000396000f3fe6080604052600436106101e65760003560e01c80638187f51611610102578063a9059cbb11610095578063c492f04611610064578063c492f046146106c6578063dd62ed3e146106ef578063f2fde38b1461072c578063fc7d946914610755576101ed565b8063a9059cbb1461060c578063bd6bba9114610649578063bfd7928414610672578063c3c8cd80146106af576101ed565b80638f9a55c0116100d15780638f9a55c01461056457806395d89b411461058f57806398a5c315146105ba578063a2a957bb146105e3576101ed565b80638187f516146104bc5780638d5f81e2146104e55780638da5cb5b146105105780638f70ccf71461053b576101ed565b806349bd5a5e1161017a57806370a082311161014957806370a0823114610400578063715018a61461043d5780637d1db4a5146104545780637f2feddc1461047f576101ed565b806349bd5a5e1461036c5780636b999053146103975780636d8aa8f8146103c05780636fc3eaec146103e9576101ed565b806318160ddd116101b657806318160ddd146102ae57806323b872dd146102d95780632fd689e314610316578063313ce56714610341576101ed565b8062b8cf2a146101f257806306fdde031461021b578063095ea7b3146102465780631694505e14610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190613142565b61077e565b005b34801561022757600080fd5b506102306108a8565b60405161023d919061320a565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190613262565b6108e5565b60405161027a91906132bd565b60405180910390f35b34801561028f57600080fd5b50610298610903565b6040516102a59190613337565b60405180910390f35b3480156102ba57600080fd5b506102c3610929565b6040516102d09190613361565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb919061337c565b610939565b60405161030d91906132bd565b60405180910390f35b34801561032257600080fd5b5061032b610a12565b6040516103389190613361565b60405180910390f35b34801561034d57600080fd5b50610356610a18565b60405161036391906133eb565b60405180910390f35b34801561037857600080fd5b50610381610a21565b60405161038e9190613415565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190613430565b610a47565b005b3480156103cc57600080fd5b506103e760048036038101906103e29190613489565b610b37565b005b3480156103f557600080fd5b506103fe610be9565b005b34801561040c57600080fd5b5061042760048036038101906104229190613430565b610cba565b6040516104349190613361565b60405180910390f35b34801561044957600080fd5b50610452610d0b565b005b34801561046057600080fd5b50610469610e5e565b6040516104769190613361565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613430565b610e64565b6040516104b39190613361565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de9190613430565b610e7c565b005b3480156104f157600080fd5b506104fa611029565b6040516105079190613415565b60405180910390f35b34801561051c57600080fd5b50610525611053565b6040516105329190613415565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190613489565b61107c565b005b34801561057057600080fd5b5061057961112e565b6040516105869190613361565b60405180910390f35b34801561059b57600080fd5b506105a4611134565b6040516105b1919061320a565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc91906134b6565b611171565b005b3480156105ef57600080fd5b5061060a600480360381019061060591906134e3565b611210565b005b34801561061857600080fd5b50610633600480360381019061062e9190613262565b61140b565b60405161064091906132bd565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b919061354a565b611429565b005b34801561067e57600080fd5b5061069960048036038101906106949190613430565b6114fe565b6040516106a691906132bd565b60405180910390f35b3480156106bb57600080fd5b506106c461151e565b005b3480156106d257600080fd5b506106ed60048036038101906106e891906135f8565b6115f7565b005b3480156106fb57600080fd5b5061071660048036038101906107119190613658565b611731565b6040516107239190613361565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190613430565b6117b8565b005b34801561076157600080fd5b5061077c6004803603810190610777919061354a565b611979565b005b610786611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a906136e4565b60405180910390fd5b60005b81518110156108a45760016010600084848151811061083857610837613704565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061089c90613762565b915050610816565b5050565b60606040518060400160405280600881526020017f58546f6f6c734149000000000000000000000000000000000000000000000000815250905090565b60006108f96108f2611a4e565b8484611a56565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b6000610946848484611c1f565b610a0784610952611a4e565b610a028560405180606001604052806025815260200161431260259139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109b8611a4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a29092919063ffffffff16565b611a56565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a4f611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad3906136e4565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b3f611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc3906136e4565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2a611a4e565b73ffffffffffffffffffffffffffffffffffffffff161480610ca05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c88611a4e565b73ffffffffffffffffffffffffffffffffffffffff16145b610ca957600080fd5b6000479050610cb781612506565b50565b6000610d04600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612572565b9050919050565b610d13611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d97906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610e84611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f08906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f99906137f6565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f5d338516e06e286e70c606dc31a9818bc3ecf6eb9995eaa5c4c7cae87e86adda60405160405180910390a250565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611084611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611111576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611108906136e4565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f5854414900000000000000000000000000000000000000000000000000000000815250905090565b611179611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd906136e4565b60405180910390fd5b8060188190555050565b611218611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906136e4565b60405180910390fd5b600084101580156112b7575060048411155b6112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613888565b60405180910390fd5b600082101580156113085750605f8211155b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e9061391a565b60405180910390fd5b60008310158015611359575060048311155b611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f906139ac565b60405180910390fd5b600081101580156113aa5750605f8111155b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090613a3e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061141f611418611a4e565b8484611c1f565b6001905092915050565b611431611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b5906136e4565b60405180910390fd5b8260168190555081601960006101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155f611a4e565b73ffffffffffffffffffffffffffffffffffffffff1614806115d55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115bd611a4e565b73ffffffffffffffffffffffffffffffffffffffff16145b6115de57600080fd5b60006115e930610cba565b90506115f4816125e0565b50565b6115ff611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611683906136e4565b60405180910390fd5b60005b8383905081101561172b5781600560008686858181106116b2576116b1613704565b5b90506020020160208101906116c79190613430565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061172390613762565b91505061168f565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117c0611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613ad0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611981611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906136e4565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90613b3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2b90613ba8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c129190613361565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613c14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf490613c80565b60405180910390fd5b60008111611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3790613cec565b60405180910390fd5b611d48611053565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611db65750611d86611053565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121a157601560149054906101000a900460ff16611e4557611dd7611053565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b90613d7e565b60405180910390fd5b5b601654811115611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613dea565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f2e5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6490613e56565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461201a5760175481611fcf84610cba565b611fd99190613e76565b10612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090613ef6565b60405180910390fd5b5b600061202530610cba565b90506000601854821015905060165482106120405760165491505b808015612058575060158054906101000a900460ff16155b80156120b25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156120ca5750601560169054906101000a900460ff165b80156121205750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121765750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561219e57612184826125e0565b6000479050600081111561219c5761219b47612506565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122485750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122fb5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122fa5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156123095760009050612490565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123b45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123cc57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124775750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561248f57600a54600c81905550600b54600d819055505b5b61249c84848484612857565b50505050565b60008383111582906124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1919061320a565b60405180910390fd5b50600083856124f99190613f16565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561256e573d6000803e3d6000fd5b5050565b60006006548211156125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b090613fbc565b60405180910390fd5b60006125c3612884565b90506125d881846128af90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561261757612616612fa1565b5b6040519080825280602002602001820160405280156126455781602001602082028036833780820191505090505b509050308160008151811061265d5761265c613704565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127289190613ff1565b8160018151811061273c5761273b613704565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127a330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a56565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612807959493929190614117565b600060405180830381600087803b15801561282157600080fd5b505af1158015612835573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612865576128646128f9565b5b612870848484612936565b8061287e5761287d612b01565b5b50505050565b6000806000612891612b15565b915091506128a881836128af90919063ffffffff16565b9250505090565b60006128f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b74565b905092915050565b6000600c5414801561290d57506000600d54145b61293457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061294887612bd7565b9550955095509550955095506129a686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a3b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8781612ce7565b612a918483612da4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612aee9190613361565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a00009050612b4967016345785d8a00006006546128af90919063ffffffff16565b821015612b675760065467016345785d8a0000935093505050612b70565b81819350935050505b9091565b60008083118290612bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb2919061320a565b60405180910390fd5b5060008385612bca91906141a0565b9050809150509392505050565b6000806000806000806000806000612bf48a600c54600d54612dde565b9250925092506000612c04612884565b90506000806000612c178e878787612e74565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c8183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a2565b905092915050565b6000808284612c989190613e76565b905083811015612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd49061421d565b60405180910390fd5b8091505092915050565b6000612cf1612884565b90506000612d088284612efd90919063ffffffff16565b9050612d5c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612db982600654612c3f90919063ffffffff16565b600681905550612dd481600754612c8990919063ffffffff16565b6007819055505050565b600080600080612e0a6064612dfc888a612efd90919063ffffffff16565b6128af90919063ffffffff16565b90506000612e346064612e26888b612efd90919063ffffffff16565b6128af90919063ffffffff16565b90506000612e5d82612e4f858c612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e8d8589612efd90919063ffffffff16565b90506000612ea48689612efd90919063ffffffff16565b90506000612ebb8789612efd90919063ffffffff16565b90506000612ee482612ed68587612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f0f5760009050612f71565b60008284612f1d919061423d565b9050828482612f2c91906141a0565b14612f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f63906142f1565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fd982612f90565b810181811067ffffffffffffffff82111715612ff857612ff7612fa1565b5b80604052505050565b600061300b612f77565b90506130178282612fd0565b919050565b600067ffffffffffffffff82111561303757613036612fa1565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130788261304d565b9050919050565b6130888161306d565b811461309357600080fd5b50565b6000813590506130a58161307f565b92915050565b60006130be6130b98461301c565b613001565b905080838252602082019050602084028301858111156130e1576130e0613048565b5b835b8181101561310a57806130f68882613096565b8452602084019350506020810190506130e3565b5050509392505050565b600082601f83011261312957613128612f8b565b5b81356131398482602086016130ab565b91505092915050565b60006020828403121561315857613157612f81565b5b600082013567ffffffffffffffff81111561317657613175612f86565b5b61318284828501613114565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131c55780820151818401526020810190506131aa565b60008484015250505050565b60006131dc8261318b565b6131e68185613196565b93506131f68185602086016131a7565b6131ff81612f90565b840191505092915050565b6000602082019050818103600083015261322481846131d1565b905092915050565b6000819050919050565b61323f8161322c565b811461324a57600080fd5b50565b60008135905061325c81613236565b92915050565b6000806040838503121561327957613278612f81565b5b600061328785828601613096565b92505060206132988582860161324d565b9150509250929050565b60008115159050919050565b6132b7816132a2565b82525050565b60006020820190506132d260008301846132ae565b92915050565b6000819050919050565b60006132fd6132f86132f38461304d565b6132d8565b61304d565b9050919050565b600061330f826132e2565b9050919050565b600061332182613304565b9050919050565b61333181613316565b82525050565b600060208201905061334c6000830184613328565b92915050565b61335b8161322c565b82525050565b60006020820190506133766000830184613352565b92915050565b60008060006060848603121561339557613394612f81565b5b60006133a386828701613096565b93505060206133b486828701613096565b92505060406133c58682870161324d565b9150509250925092565b600060ff82169050919050565b6133e5816133cf565b82525050565b600060208201905061340060008301846133dc565b92915050565b61340f8161306d565b82525050565b600060208201905061342a6000830184613406565b92915050565b60006020828403121561344657613445612f81565b5b600061345484828501613096565b91505092915050565b613466816132a2565b811461347157600080fd5b50565b6000813590506134838161345d565b92915050565b60006020828403121561349f5761349e612f81565b5b60006134ad84828501613474565b91505092915050565b6000602082840312156134cc576134cb612f81565b5b60006134da8482850161324d565b91505092915050565b600080600080608085870312156134fd576134fc612f81565b5b600061350b8782880161324d565b945050602061351c8782880161324d565b935050604061352d8782880161324d565b925050606061353e8782880161324d565b91505092959194509250565b60008060006060848603121561356357613562612f81565b5b60006135718682870161324d565b935050602061358286828701613474565b925050604061359386828701613474565b9150509250925092565b600080fd5b60008083601f8401126135b8576135b7612f8b565b5b8235905067ffffffffffffffff8111156135d5576135d461359d565b5b6020830191508360208202830111156135f1576135f0613048565b5b9250929050565b60008060006040848603121561361157613610612f81565b5b600084013567ffffffffffffffff81111561362f5761362e612f86565b5b61363b868287016135a2565b9350935050602061364e86828701613474565b9150509250925092565b6000806040838503121561366f5761366e612f81565b5b600061367d85828601613096565b925050602061368e85828601613096565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136ce602083613196565b91506136d982613698565b602082019050919050565b600060208201905081810360008301526136fd816136c1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376d8261322c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361379f5761379e613733565b5b600182019050919050565b7f5061697220616c726561647920696e697469616c697a65640000000000000000600082015250565b60006137e0601883613196565b91506137eb826137aa565b602082019050919050565b6000602082019050818103600083015261380f816137d3565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613872602583613196565b915061387d82613816565b604082019050919050565b600060208201905081810360008301526138a181613865565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000613904602283613196565b915061390f826138a8565b604082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000613996602683613196565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b6000613a28602383613196565b9150613a33826139cc565b604082019050919050565b60006020820190508181036000830152613a5781613a1b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613aba602683613196565b9150613ac582613a5e565b604082019050919050565b60006020820190508181036000830152613ae981613aad565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000613b26601f83613196565b9150613b3182613af0565b602082019050919050565b60006020820190508181036000830152613b5581613b19565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b6000613b92601d83613196565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000613bfe601f83613196565b9150613c0982613bc8565b602082019050919050565b60006020820190508181036000830152613c2d81613bf1565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b6000613c6a601d83613196565b9150613c7582613c34565b602082019050919050565b60006020820190508181036000830152613c9981613c5d565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b6000613cd6601b83613196565b9150613ce182613ca0565b602082019050919050565b60006020820190508181036000830152613d0581613cc9565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613d68602e83613196565b9150613d7382613d0c565b604082019050919050565b60006020820190508181036000830152613d9781613d5b565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b6000613dd4601e83613196565b9150613ddf82613d9e565b602082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c697374600082015250565b6000613e40602083613196565b9150613e4b82613e0a565b602082019050919050565b60006020820190508181036000830152613e6f81613e33565b9050919050565b6000613e818261322c565b9150613e8c8361322c565b9250828201905080821115613ea457613ea3613733565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b6000613ee0601a83613196565b9150613eeb82613eaa565b602082019050919050565b60006020820190508181036000830152613f0f81613ed3565b9050919050565b6000613f218261322c565b9150613f2c8361322c565b9250828203905081811115613f4457613f43613733565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b6000613fa6602c83613196565b9150613fb182613f4a565b604082019050919050565b60006020820190508181036000830152613fd581613f99565b9050919050565b600081519050613feb8161307f565b92915050565b60006020828403121561400757614006612f81565b5b600061401584828501613fdc565b91505092915050565b6000819050919050565b600061404361403e6140398461401e565b6132d8565b61322c565b9050919050565b61405381614028565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61408e8161306d565b82525050565b60006140a08383614085565b60208301905092915050565b6000602082019050919050565b60006140c482614059565b6140ce8185614064565b93506140d983614075565b8060005b8381101561410a5781516140f18882614094565b97506140fc836140ac565b9250506001810190506140dd565b5085935050505092915050565b600060a08201905061412c6000830188613352565b614139602083018761404a565b818103604083015261414b81866140b9565b905061415a6060830185613406565b6141676080830184613352565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141ab8261322c565b91506141b68361322c565b9250826141c6576141c5614171565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614207601b83613196565b9150614212826141d1565b602082019050919050565b60006020820190508181036000830152614236816141fa565b9050919050565b60006142488261322c565b91506142538361322c565b92508282026142618161322c565b9150828204841483151761427857614277613733565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006142db602183613196565b91506142e68261427f565b604082019050919050565b6000602082019050818103600083015261430a816142ce565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e180c93c5d12d4b0273c8e9bcfcf02dd8eeaee683088f30de0abae1aa62b84d964736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101e65760003560e01c80638187f51611610102578063a9059cbb11610095578063c492f04611610064578063c492f046146106c6578063dd62ed3e146106ef578063f2fde38b1461072c578063fc7d946914610755576101ed565b8063a9059cbb1461060c578063bd6bba9114610649578063bfd7928414610672578063c3c8cd80146106af576101ed565b80638f9a55c0116100d15780638f9a55c01461056457806395d89b411461058f57806398a5c315146105ba578063a2a957bb146105e3576101ed565b80638187f516146104bc5780638d5f81e2146104e55780638da5cb5b146105105780638f70ccf71461053b576101ed565b806349bd5a5e1161017a57806370a082311161014957806370a0823114610400578063715018a61461043d5780637d1db4a5146104545780637f2feddc1461047f576101ed565b806349bd5a5e1461036c5780636b999053146103975780636d8aa8f8146103c05780636fc3eaec146103e9576101ed565b806318160ddd116101b657806318160ddd146102ae57806323b872dd146102d95780632fd689e314610316578063313ce56714610341576101ed565b8062b8cf2a146101f257806306fdde031461021b578063095ea7b3146102465780631694505e14610283576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021960048036038101906102149190613142565b61077e565b005b34801561022757600080fd5b506102306108a8565b60405161023d919061320a565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190613262565b6108e5565b60405161027a91906132bd565b60405180910390f35b34801561028f57600080fd5b50610298610903565b6040516102a59190613337565b60405180910390f35b3480156102ba57600080fd5b506102c3610929565b6040516102d09190613361565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb919061337c565b610939565b60405161030d91906132bd565b60405180910390f35b34801561032257600080fd5b5061032b610a12565b6040516103389190613361565b60405180910390f35b34801561034d57600080fd5b50610356610a18565b60405161036391906133eb565b60405180910390f35b34801561037857600080fd5b50610381610a21565b60405161038e9190613415565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190613430565b610a47565b005b3480156103cc57600080fd5b506103e760048036038101906103e29190613489565b610b37565b005b3480156103f557600080fd5b506103fe610be9565b005b34801561040c57600080fd5b5061042760048036038101906104229190613430565b610cba565b6040516104349190613361565b60405180910390f35b34801561044957600080fd5b50610452610d0b565b005b34801561046057600080fd5b50610469610e5e565b6040516104769190613361565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a19190613430565b610e64565b6040516104b39190613361565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de9190613430565b610e7c565b005b3480156104f157600080fd5b506104fa611029565b6040516105079190613415565b60405180910390f35b34801561051c57600080fd5b50610525611053565b6040516105329190613415565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190613489565b61107c565b005b34801561057057600080fd5b5061057961112e565b6040516105869190613361565b60405180910390f35b34801561059b57600080fd5b506105a4611134565b6040516105b1919061320a565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc91906134b6565b611171565b005b3480156105ef57600080fd5b5061060a600480360381019061060591906134e3565b611210565b005b34801561061857600080fd5b50610633600480360381019061062e9190613262565b61140b565b60405161064091906132bd565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b919061354a565b611429565b005b34801561067e57600080fd5b5061069960048036038101906106949190613430565b6114fe565b6040516106a691906132bd565b60405180910390f35b3480156106bb57600080fd5b506106c461151e565b005b3480156106d257600080fd5b506106ed60048036038101906106e891906135f8565b6115f7565b005b3480156106fb57600080fd5b5061071660048036038101906107119190613658565b611731565b6040516107239190613361565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190613430565b6117b8565b005b34801561076157600080fd5b5061077c6004803603810190610777919061354a565b611979565b005b610786611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080a906136e4565b60405180910390fd5b60005b81518110156108a45760016010600084848151811061083857610837613704565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061089c90613762565b915050610816565b5050565b60606040518060400160405280600881526020017f58546f6f6c734149000000000000000000000000000000000000000000000000815250905090565b60006108f96108f2611a4e565b8484611a56565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b6000610946848484611c1f565b610a0784610952611a4e565b610a028560405180606001604052806025815260200161431260259139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109b8611a4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a29092919063ffffffff16565b611a56565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a4f611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad3906136e4565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b3f611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc3906136e4565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2a611a4e565b73ffffffffffffffffffffffffffffffffffffffff161480610ca05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c88611a4e565b73ffffffffffffffffffffffffffffffffffffffff16145b610ca957600080fd5b6000479050610cb781612506565b50565b6000610d04600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612572565b9050919050565b610d13611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d97906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610e84611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f08906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f99906137f6565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f5d338516e06e286e70c606dc31a9818bc3ecf6eb9995eaa5c4c7cae87e86adda60405160405180910390a250565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611084611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611111576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611108906136e4565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f5854414900000000000000000000000000000000000000000000000000000000815250905090565b611179611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd906136e4565b60405180910390fd5b8060188190555050565b611218611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906136e4565b60405180910390fd5b600084101580156112b7575060048411155b6112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613888565b60405180910390fd5b600082101580156113085750605f8211155b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e9061391a565b60405180910390fd5b60008310158015611359575060048311155b611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f906139ac565b60405180910390fd5b600081101580156113aa5750605f8111155b6113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090613a3e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061141f611418611a4e565b8484611c1f565b6001905092915050565b611431611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b5906136e4565b60405180910390fd5b8260168190555081601960006101000a81548160ff02191690831515021790555080601960026101000a81548160ff021916908315150217905550505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661155f611a4e565b73ffffffffffffffffffffffffffffffffffffffff1614806115d55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115bd611a4e565b73ffffffffffffffffffffffffffffffffffffffff16145b6115de57600080fd5b60006115e930610cba565b90506115f4816125e0565b50565b6115ff611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611683906136e4565b60405180910390fd5b60005b8383905081101561172b5781600560008686858181106116b2576116b1613704565b5b90506020020160208101906116c79190613430565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061172390613762565b91505061168f565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117c0611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611844906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613ad0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611981611a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906136e4565b60405180910390fd5b8260178190555081601960016101000a81548160ff02191690831515021790555080601960036101000a81548160ff021916908315150217905550505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90613b3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2b90613ba8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c129190613361565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613c14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf490613c80565b60405180910390fd5b60008111611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3790613cec565b60405180910390fd5b611d48611053565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611db65750611d86611053565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121a157601560149054906101000a900460ff16611e4557611dd7611053565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b90613d7e565b60405180910390fd5b5b601654811115611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613dea565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f2e5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6490613e56565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461201a5760175481611fcf84610cba565b611fd99190613e76565b10612019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201090613ef6565b60405180910390fd5b5b600061202530610cba565b90506000601854821015905060165482106120405760165491505b808015612058575060158054906101000a900460ff16155b80156120b25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156120ca5750601560169054906101000a900460ff165b80156121205750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121765750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561219e57612184826125e0565b6000479050600081111561219c5761219b47612506565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122485750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122fb5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122fa5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156123095760009050612490565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123b45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156123cc57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124775750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561248f57600a54600c81905550600b54600d819055505b5b61249c84848484612857565b50505050565b60008383111582906124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1919061320a565b60405180910390fd5b50600083856124f99190613f16565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561256e573d6000803e3d6000fd5b5050565b60006006548211156125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b090613fbc565b60405180910390fd5b60006125c3612884565b90506125d881846128af90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561261757612616612fa1565b5b6040519080825280602002602001820160405280156126455781602001602082028036833780820191505090505b509050308160008151811061265d5761265c613704565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127289190613ff1565b8160018151811061273c5761273b613704565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127a330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a56565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612807959493929190614117565b600060405180830381600087803b15801561282157600080fd5b505af1158015612835573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612865576128646128f9565b5b612870848484612936565b8061287e5761287d612b01565b5b50505050565b6000806000612891612b15565b915091506128a881836128af90919063ffffffff16565b9250505090565b60006128f183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b74565b905092915050565b6000600c5414801561290d57506000600d54145b61293457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061294887612bd7565b9550955095509550955095506129a686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a3b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8781612ce7565b612a918483612da4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612aee9190613361565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a00009050612b4967016345785d8a00006006546128af90919063ffffffff16565b821015612b675760065467016345785d8a0000935093505050612b70565b81819350935050505b9091565b60008083118290612bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb2919061320a565b60405180910390fd5b5060008385612bca91906141a0565b9050809150509392505050565b6000806000806000806000806000612bf48a600c54600d54612dde565b9250925092506000612c04612884565b90506000806000612c178e878787612e74565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c8183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a2565b905092915050565b6000808284612c989190613e76565b905083811015612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd49061421d565b60405180910390fd5b8091505092915050565b6000612cf1612884565b90506000612d088284612efd90919063ffffffff16565b9050612d5c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612db982600654612c3f90919063ffffffff16565b600681905550612dd481600754612c8990919063ffffffff16565b6007819055505050565b600080600080612e0a6064612dfc888a612efd90919063ffffffff16565b6128af90919063ffffffff16565b90506000612e346064612e26888b612efd90919063ffffffff16565b6128af90919063ffffffff16565b90506000612e5d82612e4f858c612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612e8d8589612efd90919063ffffffff16565b90506000612ea48689612efd90919063ffffffff16565b90506000612ebb8789612efd90919063ffffffff16565b90506000612ee482612ed68587612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f0f5760009050612f71565b60008284612f1d919061423d565b9050828482612f2c91906141a0565b14612f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f63906142f1565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fd982612f90565b810181811067ffffffffffffffff82111715612ff857612ff7612fa1565b5b80604052505050565b600061300b612f77565b90506130178282612fd0565b919050565b600067ffffffffffffffff82111561303757613036612fa1565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130788261304d565b9050919050565b6130888161306d565b811461309357600080fd5b50565b6000813590506130a58161307f565b92915050565b60006130be6130b98461301c565b613001565b905080838252602082019050602084028301858111156130e1576130e0613048565b5b835b8181101561310a57806130f68882613096565b8452602084019350506020810190506130e3565b5050509392505050565b600082601f83011261312957613128612f8b565b5b81356131398482602086016130ab565b91505092915050565b60006020828403121561315857613157612f81565b5b600082013567ffffffffffffffff81111561317657613175612f86565b5b61318284828501613114565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131c55780820151818401526020810190506131aa565b60008484015250505050565b60006131dc8261318b565b6131e68185613196565b93506131f68185602086016131a7565b6131ff81612f90565b840191505092915050565b6000602082019050818103600083015261322481846131d1565b905092915050565b6000819050919050565b61323f8161322c565b811461324a57600080fd5b50565b60008135905061325c81613236565b92915050565b6000806040838503121561327957613278612f81565b5b600061328785828601613096565b92505060206132988582860161324d565b9150509250929050565b60008115159050919050565b6132b7816132a2565b82525050565b60006020820190506132d260008301846132ae565b92915050565b6000819050919050565b60006132fd6132f86132f38461304d565b6132d8565b61304d565b9050919050565b600061330f826132e2565b9050919050565b600061332182613304565b9050919050565b61333181613316565b82525050565b600060208201905061334c6000830184613328565b92915050565b61335b8161322c565b82525050565b60006020820190506133766000830184613352565b92915050565b60008060006060848603121561339557613394612f81565b5b60006133a386828701613096565b93505060206133b486828701613096565b92505060406133c58682870161324d565b9150509250925092565b600060ff82169050919050565b6133e5816133cf565b82525050565b600060208201905061340060008301846133dc565b92915050565b61340f8161306d565b82525050565b600060208201905061342a6000830184613406565b92915050565b60006020828403121561344657613445612f81565b5b600061345484828501613096565b91505092915050565b613466816132a2565b811461347157600080fd5b50565b6000813590506134838161345d565b92915050565b60006020828403121561349f5761349e612f81565b5b60006134ad84828501613474565b91505092915050565b6000602082840312156134cc576134cb612f81565b5b60006134da8482850161324d565b91505092915050565b600080600080608085870312156134fd576134fc612f81565b5b600061350b8782880161324d565b945050602061351c8782880161324d565b935050604061352d8782880161324d565b925050606061353e8782880161324d565b91505092959194509250565b60008060006060848603121561356357613562612f81565b5b60006135718682870161324d565b935050602061358286828701613474565b925050604061359386828701613474565b9150509250925092565b600080fd5b60008083601f8401126135b8576135b7612f8b565b5b8235905067ffffffffffffffff8111156135d5576135d461359d565b5b6020830191508360208202830111156135f1576135f0613048565b5b9250929050565b60008060006040848603121561361157613610612f81565b5b600084013567ffffffffffffffff81111561362f5761362e612f86565b5b61363b868287016135a2565b9350935050602061364e86828701613474565b9150509250925092565b6000806040838503121561366f5761366e612f81565b5b600061367d85828601613096565b925050602061368e85828601613096565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136ce602083613196565b91506136d982613698565b602082019050919050565b600060208201905081810360008301526136fd816136c1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376d8261322c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361379f5761379e613733565b5b600182019050919050565b7f5061697220616c726561647920696e697469616c697a65640000000000000000600082015250565b60006137e0601883613196565b91506137eb826137aa565b602082019050919050565b6000602082019050818103600083015261380f816137d3565b9050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613872602583613196565b915061387d82613816565b604082019050919050565b600060208201905081810360008301526138a181613865565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000613904602283613196565b915061390f826138a8565b604082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000613996602683613196565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b6000613a28602383613196565b9150613a33826139cc565b604082019050919050565b60006020820190508181036000830152613a5781613a1b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613aba602683613196565b9150613ac582613a5e565b604082019050919050565b60006020820190508181036000830152613ae981613aad565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000613b26601f83613196565b9150613b3182613af0565b602082019050919050565b60006020820190508181036000830152613b5581613b19565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b6000613b92601d83613196565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000613bfe601f83613196565b9150613c0982613bc8565b602082019050919050565b60006020820190508181036000830152613c2d81613bf1565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b6000613c6a601d83613196565b9150613c7582613c34565b602082019050919050565b60006020820190508181036000830152613c9981613c5d565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b6000613cd6601b83613196565b9150613ce182613ca0565b602082019050919050565b60006020820190508181036000830152613d0581613cc9565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613d68602e83613196565b9150613d7382613d0c565b604082019050919050565b60006020820190508181036000830152613d9781613d5b565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b6000613dd4601e83613196565b9150613ddf82613d9e565b602082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b7f54686973206163636f756e74206973206f6e2074686520626c61636b6c697374600082015250565b6000613e40602083613196565b9150613e4b82613e0a565b602082019050919050565b60006020820190508181036000830152613e6f81613e33565b9050919050565b6000613e818261322c565b9150613e8c8361322c565b9250828201905080821115613ea457613ea3613733565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b6000613ee0601a83613196565b9150613eeb82613eaa565b602082019050919050565b60006020820190508181036000830152613f0f81613ed3565b9050919050565b6000613f218261322c565b9150613f2c8361322c565b9250828203905081811115613f4457613f43613733565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b6000613fa6602c83613196565b9150613fb182613f4a565b604082019050919050565b60006020820190508181036000830152613fd581613f99565b9050919050565b600081519050613feb8161307f565b92915050565b60006020828403121561400757614006612f81565b5b600061401584828501613fdc565b91505092915050565b6000819050919050565b600061404361403e6140398461401e565b6132d8565b61322c565b9050919050565b61405381614028565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61408e8161306d565b82525050565b60006140a08383614085565b60208301905092915050565b6000602082019050919050565b60006140c482614059565b6140ce8185614064565b93506140d983614075565b8060005b8381101561410a5781516140f18882614094565b97506140fc836140ac565b9250506001810190506140dd565b5085935050505092915050565b600060a08201905061412c6000830188613352565b614139602083018761404a565b818103604083015261414b81866140b9565b905061415a6060830185613406565b6141676080830184613352565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141ab8261322c565b91506141b68361322c565b9250826141c6576141c5614171565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614207601b83613196565b9150614212826141d1565b602082019050919050565b60006020820190508181036000830152614236816141fa565b9050919050565b60006142488261322c565b91506142538361322c565b92508282026142618161322c565b9150828204841483151761427857614277613733565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006142db602183613196565b91506142e68261427f565b604082019050919050565b6000602082019050818103600083015261430a816142ce565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e180c93c5d12d4b0273c8e9bcfcf02dd8eeaee683088f30de0abae1aa62b84d964736f6c63430008120033

Deployed Bytecode Sourcemap

4259:14568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13366:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7222:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8154:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5702:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7502:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6022:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7410:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5750:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13544:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17991:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13122:235;;;;;;;;;;;;;:::i;:::-;;7606:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1732:148;;;;;;;;;;;;;:::i;:::-;;5894:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5408:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6903:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7118:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1516:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12767:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5958:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7314:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17799:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17053:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7753:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18132:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5370:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12877:236;;;;;;;;;;;;;:::i;:::-;;18588:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7961:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1889:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18357:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13366:169;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13442:9:::1;13437:91;13461:5;:12;13457:1;:16;13437:91;;;13512:4;13495;:14;13500:5;13506:1;13500:8;;;;;;;;:::i;:::-;;;;;;;;13495:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13475:3;;;;;:::i;:::-;;;;13437:91;;;;13366:169:::0;:::o;7222:83::-;7259:13;7292:5;;;;;;;;;;;;;;;;;7285:12;;7222:83;:::o;8154:193::-;8256:4;8278:39;8287:12;:10;:12::i;:::-;8301:7;8310:6;8278:8;:39::i;:::-;8335:4;8328:11;;8154:193;;;;:::o;5702:41::-;;;;;;;;;;;;;:::o;7502:95::-;7555:7;4809:17;7575:14;;7502:95;:::o;8356:443::-;8488:4;8505:36;8515:6;8523:9;8534:6;8505:9;:36::i;:::-;8552:217;8575:6;8596:12;:10;:12::i;:::-;8623:135;8679:6;8623:135;;;;;;;;;;;;;;;;;:11;:19;8635:6;8623:19;;;;;;;;;;;;;;;:33;8643:12;:10;:12::i;:::-;8623:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8552:8;:217::i;:::-;8787:4;8780:11;;8356:443;;;;;:::o;6022:49::-;;;;:::o;7410:83::-;7451:5;4482:1;7469:16;;7410:83;:::o;5750:28::-;;;;;;;;;;;;;:::o;13544:92::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13623:5:::1;13608:4;:12;13613:6;13608:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13544:92:::0;:::o;17991:101::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18072:12:::1;18058:11;;:26;;;;;;;;;;;;;;;;;;17991:101:::0;:::o;13122:235::-;13188:19;;;;;;;;;;;13172:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13227:17;;;;;;;;;;;13211:33;;:12;:10;:12::i;:::-;:33;;;13172:72;13164:81;;;;;;13256:26;13285:21;13256:50;;13317:32;13330:18;13317:12;:32::i;:::-;13153:204;13122:235::o;7606:138::-;7672:7;7699:37;7719:7;:16;7727:7;7719:16;;;;;;;;;;;;;;;;7699:19;:37::i;:::-;7692:44;;7606:138;;;:::o;1732:148::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1839:1:::1;1802:40;;1823:6;::::0;::::1;;;;;;;;1802:40;;;;;;;;;;;;1870:1;1853:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1732:148::o:0;5894:45::-;;;;:::o;5408:43::-;;;;;;;;;;;;;;;;;:::o;6903:207::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6998:1:::1;6973:27;;:13;;;;;;;;;;;:27;;;6965:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7056:7;7040:13;;:23;;;;;;;;;;;;;;;;;;7094:7;7079:23;;;;;;;;;;;;6903:207:::0;:::o;7118:95::-;7165:7;7192:13;;;;;;;;;;;7185:20;;7118:95;:::o;1516:79::-;1554:7;1581:6;;;;;;;;;;;1574:13;;1516:79;:::o;12767:101::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12848:12:::1;12834:11;;:26;;;;;;;;;;;;;;;;;;12767:101:::0;:::o;5958:47::-;;;;:::o;7314:87::-;7353:13;7386:7;;;;;;;;;;;;;;;;;7379:14;;7314:87;:::o;17799:139::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17912:18:::1;17890:19;:40;;;;17799:139:::0;:::o;17053:693::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17212:1:::1;17195:13;:18;;:40;;;;;17234:1;17217:13;:18;;17195:40;17187:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17311:1;17296:11;:16;;:37;;;;;17331:2;17316:11;:17;;17296:37;17288:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17409:1;17391:14;:19;;:42;;;;;17432:1;17414:14;:19;;17391:42;17383:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17511:1;17495:12;:17;;:39;;;;;17532:2;17516:12;:18;;17495:39;17487:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17604:13;17587:14;:30;;;;17646:14;17628:15;:32;;;;17686:11;17671:12;:26;;;;17724:12;17708:13;:28;;;;17053:693:::0;;;;:::o;7753:199::-;7858:4;7880:42;7890:12;:10;:12::i;:::-;7904:9;7915:6;7880:9;:42::i;:::-;7940:4;7933:11;;7753:199;;;;:::o;18132:216::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18253:11:::1;18238:12;:26;;;;18288:6;18278:7;;:16;;;;;;;;;;;;;;;;;;18321:9;18308:10;;:22;;;;;;;;;;;;;;;;;;18132:216:::0;;;:::o;5370:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12877:236::-;12943:19;;;;;;;;;;;12927:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12982:17;;;;;;;;;;;12966:33;;:12;:10;:12::i;:::-;:33;;;12927:72;12919:81;;;;;;13011:23;13037:24;13055:4;13037:9;:24::i;:::-;13011:50;;13072:33;13089:15;13072:16;:33::i;:::-;12908:205;12877:236::o;18588:234::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18705:9:::1;18701:114;18724:8;;:15;;18720:1;:19;18701:114;;;18795:8;18761:18;:31;18780:8;;18789:1;18780:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18761:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18741:3;;;;;:::i;:::-;;;;18701:114;;;;18588:234:::0;;;:::o;7961:184::-;8078:7;8110:11;:18;8122:5;8110:18;;;;;;;;;;;;;;;:27;8129:7;8110:27;;;;;;;;;;;;;;;;8103:34;;7961:184;;;;:::o;1889:244::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1998:1:::1;1978:22;;:8;:22;;::::0;1970:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2088:8;2059:38;;2080:6;::::0;::::1;;;;;;;;2059:38;;;;;;;;;;;;2117:8;2108:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1889:244:::0;:::o;18357:222::-;1654:12;:10;:12::i;:::-;1644:22;;:6;;;;;;;;;;:22;;;1636:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18486:13:::1;18469:14;:30;;;;18523:9;18510:10;;:22;;;;;;;;;;;;;;;;;;18559:12;18543:13;;:28;;;;;;;;;;;;;;;;;;18357:222:::0;;;:::o;265:98::-;318:7;345:10;338:17;;265:98;:::o;9498:361::-;9642:1;9625:19;;:5;:19;;;9617:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9718:1;9699:21;;:7;:21;;;9691:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9797:6;9767:11;:18;9779:5;9767:18;;;;;;;;;;;;;;;:27;9786:7;9767:27;;;;;;;;;;;;;;;:36;;;;9835:7;9819:32;;9828:5;9819:32;;;9844:6;9819:32;;;;;;:::i;:::-;;;;;;;;9498:361;;;:::o;9868:2290::-;10006:1;9990:18;;:4;:18;;;9982:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10077:1;10063:16;;:2;:16;;;10055:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10141:1;10132:6;:10;10124:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10200:7;:5;:7::i;:::-;10192:15;;:4;:15;;;;:32;;;;;10217:7;:5;:7::i;:::-;10211:13;;:2;:13;;;;10192:32;10188:1238;;;10282:11;;;;;;;;;;;10277:127;;10330:7;:5;:7::i;:::-;10322:15;;:4;:15;;;10314:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10277:127;10439:12;;10429:6;:22;;10421:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10510:4;:10;10515:4;10510:10;;;;;;;;;;;;;;;;;;;;;;;;;10509:11;:24;;;;;10525:4;:8;10530:2;10525:8;;;;;;;;;;;;;;;;;;;;;;;;;10524:9;10509:24;10501:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10597:13;;;;;;;;;;;10591:19;;:2;:19;;;10588:137;;10664:14;;10655:6;10639:13;10649:2;10639:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10631:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10588:137;10742:28;10773:24;10791:4;10773:9;:24::i;:::-;10742:55;;10812:12;10851:19;;10827:20;:43;;10812:58;;10915:12;;10891:20;:36;10888:124;;10984:12;;10961:35;;10888:124;11033:7;:18;;;;;11045:6;;;;;;;;;;11044:7;11033:18;:43;;;;;11063:13;;;;;;;;;;;11055:21;;:4;:21;;;;11033:43;:58;;;;;11080:11;;;;;;;;;;;11033:58;:87;;;;;11096:18;:24;11115:4;11096:24;;;;;;;;;;;;;;;;;;;;;;;;;11095:25;11033:87;:114;;;;;11125:18;:22;11144:2;11125:22;;;;;;;;;;;;;;;;;;;;;;;;;11124:23;11033:114;11029:386;;;11168:38;11185:20;11168:16;:38::i;:::-;11225:26;11254:21;11225:50;;11319:1;11298:18;:22;11294:106;;;11345:35;11358:21;11345:12;:35::i;:::-;11294:106;11149:266;11029:386;10226:1200;;10188:1238;11439:12;11454:4;11439:19;;11504:18;:24;11523:4;11504:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11532:18;:22;11551:2;11532:22;;;;;;;;;;;;;;;;;;;;;;;;;11504:50;11503:102;;;;11568:13;;;;;;;;;;;11560:21;;:4;:21;;;;:44;;;;;11591:13;;;;;;;;;;;11585:19;;:2;:19;;;;11560:44;11503:102;11499:597;;;11632:5;11622:15;;11499:597;;;11716:13;;;;;;;;;;;11708:21;;:4;:21;;;:55;;;;;11747:15;;;;;;;;;;;11733:30;;:2;:30;;;;11708:55;11705:162;;;11796:14;;11784:9;:26;;;;11839:12;;11829:7;:22;;;;11705:162;11927:13;;;;;;;;;;;11921:19;;:2;:19;;;:55;;;;;11960:15;;;;;;;;;;;11944:32;;:4;:32;;;;11921:55;11917:165;;;12009:15;;11997:9;:27;;;;12053:13;;12043:7;:23;;;;11917:165;11499:597;12109:41;12124:4;12130:2;12134:6;12142:7;12109:14;:41::i;:::-;9971:2187;9868:2290;;;:::o;2501:224::-;2621:7;2654:1;2649;:6;;2657:12;2641:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2681:9;2697:1;2693;:5;;;;:::i;:::-;2681:17;;2716:1;2709:8;;;2501:224;;;;;:::o;12659:99::-;12716:17;;;;;;;;;;;:26;;:34;12743:6;12716:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12659:99;:::o;8808:325::-;8903:7;8961;;8950;:18;;8928:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;9051:19;9073:10;:8;:10::i;:::-;9051:32;;9101:24;9113:11;9101:7;:11;;:24;;;;:::i;:::-;9094:31;;;8808:325;;;:::o;12167:483::-;6328:4;6319:6;;:13;;;;;;;;;;;;;;;;;;12245:21:::1;12283:1;12269:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12245:40;;12314:4;12296;12301:1;12296:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12340:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12330:4;12335:1;12330:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12373:62;12390:4;12405:15;;;;;;;;;;;12423:11;12373:8;:62::i;:::-;12446:15;;;;;;;;;;;:66;;;12527:11;12553:1;12569:4;12596;12616:15;12446:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12234:416;6364:5:::0;6355:6;;:14;;;;;;;;;;;;;;;;;;12167:483;:::o;13645:282::-;13801:7;13796:28;;13810:14;:12;:14::i;:::-;13796:28;13835:44;13853:6;13861:9;13872:6;13835:17;:44::i;:::-;13895:7;13890:29;;13904:15;:13;:15::i;:::-;13890:29;13645:282;;;;:::o;16614:164::-;16656:7;16677:15;16694;16713:19;:17;:19::i;:::-;16676:56;;;;16750:20;16762:7;16750;:11;;:20;;;;:::i;:::-;16743:27;;;;16614:164;:::o;2989:132::-;3047:7;3074:39;3078:1;3081;3074:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3067:46;;2989:132;;;;:::o;9142:221::-;9202:1;9189:9;;:14;:30;;;;;9218:1;9207:7;;:12;9189:30;9221:7;9185:43;9261:9;;9241:17;:29;;;;9299:7;;9281:15;:25;;;;9332:1;9320:9;:13;;;;9354:1;9344:7;:11;;;;9142:221;:::o;13936:610::-;14083:15;14113:23;14151:12;14178:23;14216:12;14243:13;14270:19;14281:7;14270:10;:19::i;:::-;14068:221;;;;;;;;;;;;14318:28;14338:7;14318;:15;14326:6;14318:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14300:7;:15;14308:6;14300:15;;;;;;;;;;;;;;;:46;;;;14378:39;14401:15;14378:7;:18;14386:9;14378:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14357:7;:18;14365:9;14357:18;;;;;;;;;;;;;;;:60;;;;14428:16;14438:5;14428:9;:16::i;:::-;14455:23;14467:4;14473;14455:11;:23::i;:::-;14511:9;14494:44;;14503:6;14494:44;;;14522:15;14494:44;;;;;;:::i;:::-;;;;;;;;14057:489;;;;;;13936:610;;;:::o;9372:117::-;9428:17;;9416:9;:29;;;;9466:15;;9456:7;:25;;;;9372:117::o;16787:257::-;16838:7;16847;16867:15;16885:7;;16867:25;;16903:15;4809:17;16903:25;;16953:20;4809:17;16953:7;;:11;;:20;;;;:::i;:::-;16943:7;:30;16939:61;;;16983:7;;4809:17;16975:25;;;;;;;;16939:61;17019:7;17028;17011:25;;;;;;16787:257;;;:::o;3130:223::-;3250:7;3282:1;3278;:5;3285:12;3270:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3309:9;3325:1;3321;:5;;;;:::i;:::-;3309:17;;3344:1;3337:8;;;3130:223;;;;;:::o;14969:615::-;15069:7;15091;15113;15135;15157;15179;15215:23;15240:12;15254:13;15284:40;15296:7;15305:9;;15316:7;;15284:11;:40::i;:::-;15214:110;;;;;;15335:19;15357:10;:8;:10::i;:::-;15335:32;;15379:15;15396:23;15421:12;15450:46;15462:7;15471:4;15477:5;15484:11;15450;:46::i;:::-;15378:118;;;;;;15515:7;15524:15;15541:4;15547:15;15564:4;15570:5;15507:69;;;;;;;;;;;;;;;;;;;14969:615;;;;;;;:::o;2356:136::-;2414:7;2441:43;2445:1;2448;2441:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2434:50;;2356:136;;;;:::o;2168:179::-;2226:7;2246:9;2262:1;2258;:5;;;;:::i;:::-;2246:17;;2287:1;2282;:6;;2274:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2338:1;2331:8;;;2168:179;;;;:::o;14555:211::-;14608:19;14630:10;:8;:10::i;:::-;14608:32;;14651:13;14667:22;14677:11;14667:5;:9;;:22;;;;:::i;:::-;14651:38;;14725:33;14752:5;14725:7;:22;14741:4;14725:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14700:7;:22;14716:4;14700:22;;;;;;;;;;;;;;;:58;;;;14597:169;;14555:211;:::o;14775:147::-;14853:17;14865:4;14853:7;;:11;;:17;;;;:::i;:::-;14843:7;:27;;;;14894:20;14909:4;14894:10;;:14;;:20;;;;:::i;:::-;14881:10;:33;;;;14775:147;;:::o;15593:469::-;15762:7;15784;15806;15841:12;15856:30;15882:3;15856:21;15868:8;15856:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15841:45;;15897:13;15913:28;15937:3;15913:19;15925:6;15913:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15897:44;;15952:23;15978:28;16000:5;15978:17;15990:4;15978:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15952:54;;16025:15;16042:4;16048:5;16017:37;;;;;;;;;15593:469;;;;;;;:::o;16071:534::-;16265:7;16287;16309;16344:15;16362:24;16374:11;16362:7;:11;;:24;;;;:::i;:::-;16344:42;;16397:12;16412:21;16421:11;16412:4;:8;;:21;;;;:::i;:::-;16397:36;;16444:13;16460:22;16470:11;16460:5;:9;;:22;;;;:::i;:::-;16444:38;;16493:23;16519:28;16541:5;16519:17;16531:4;16519:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16493:54;;16566:7;16575:15;16592:4;16558:39;;;;;;;;;;16071:534;;;;;;;;:::o;2734:246::-;2792:7;2821:1;2816;:6;2812:47;;2846:1;2839:8;;;;2812:47;2869:9;2885:1;2881;:5;;;;:::i;:::-;2869:17;;2914:1;2909;2905;:5;;;;:::i;:::-;:10;2897:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2971:1;2964:8;;;2734: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:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:607::-;11122:6;11130;11138;11187:2;11175:9;11166:7;11162:23;11158:32;11155:119;;;11193:79;;:::i;:::-;11155:119;11313:1;11338:53;11383:7;11374:6;11363:9;11359:22;11338:53;:::i;:::-;11328:63;;11284:117;11440:2;11466:50;11508:7;11499:6;11488:9;11484:22;11466:50;:::i;:::-;11456:60;;11411:115;11565:2;11591:50;11633:7;11624:6;11613:9;11609:22;11591:50;:::i;:::-;11581:60;;11536:115;11051:607;;;;;:::o;11664:117::-;11773:1;11770;11763:12;11804:568;11877:8;11887:6;11937:3;11930:4;11922:6;11918:17;11914:27;11904:122;;11945:79;;:::i;:::-;11904:122;12058:6;12045:20;12035:30;;12088:18;12080:6;12077:30;12074:117;;;12110:79;;:::i;:::-;12074:117;12224:4;12216:6;12212:17;12200:29;;12278:3;12270:4;12262:6;12258:17;12248:8;12244:32;12241:41;12238:128;;;12285:79;;:::i;:::-;12238:128;11804:568;;;;;:::o;12378:698::-;12470:6;12478;12486;12535:2;12523:9;12514:7;12510:23;12506:32;12503:119;;;12541:79;;:::i;:::-;12503:119;12689:1;12678:9;12674:17;12661:31;12719:18;12711:6;12708:30;12705:117;;;12741:79;;:::i;:::-;12705:117;12854:80;12926:7;12917:6;12906:9;12902:22;12854:80;:::i;:::-;12836:98;;;;12632:312;12983:2;13009:50;13051:7;13042:6;13031:9;13027:22;13009:50;:::i;:::-;12999:60;;12954:115;12378:698;;;;;:::o;13082:474::-;13150:6;13158;13207:2;13195:9;13186:7;13182:23;13178:32;13175:119;;;13213:79;;:::i;:::-;13175:119;13333:1;13358:53;13403:7;13394:6;13383:9;13379:22;13358:53;:::i;:::-;13348:63;;13304:117;13460:2;13486:53;13531:7;13522:6;13511:9;13507:22;13486:53;:::i;:::-;13476:63;;13431:118;13082:474;;;;;:::o;13562:182::-;13702:34;13698:1;13690:6;13686:14;13679:58;13562:182;:::o;13750:366::-;13892:3;13913:67;13977:2;13972:3;13913:67;:::i;:::-;13906:74;;13989:93;14078:3;13989:93;:::i;:::-;14107:2;14102:3;14098:12;14091:19;;13750:366;;;:::o;14122:419::-;14288:4;14326:2;14315:9;14311:18;14303:26;;14375:9;14369:4;14365:20;14361:1;14350:9;14346:17;14339:47;14403:131;14529:4;14403:131;:::i;:::-;14395:139;;14122:419;;;:::o;14547:180::-;14595:77;14592:1;14585:88;14692:4;14689:1;14682:15;14716:4;14713:1;14706:15;14733:180;14781:77;14778:1;14771:88;14878:4;14875:1;14868:15;14902:4;14899:1;14892:15;14919:233;14958:3;14981:24;14999:5;14981:24;:::i;:::-;14972:33;;15027:66;15020:5;15017:77;15014:103;;15097:18;;:::i;:::-;15014:103;15144:1;15137:5;15133:13;15126:20;;14919:233;;;:::o;15158:174::-;15298:26;15294:1;15286:6;15282:14;15275:50;15158:174;:::o;15338:366::-;15480:3;15501:67;15565:2;15560:3;15501:67;:::i;:::-;15494:74;;15577:93;15666:3;15577:93;:::i;:::-;15695:2;15690:3;15686:12;15679:19;;15338:366;;;:::o;15710:419::-;15876:4;15914:2;15903:9;15899:18;15891:26;;15963:9;15957:4;15953:20;15949:1;15938:9;15934:17;15927:47;15991:131;16117:4;15991:131;:::i;:::-;15983:139;;15710:419;;;:::o;16135:224::-;16275:34;16271:1;16263:6;16259:14;16252:58;16344:7;16339:2;16331:6;16327:15;16320:32;16135:224;:::o;16365:366::-;16507:3;16528:67;16592:2;16587:3;16528:67;:::i;:::-;16521:74;;16604:93;16693:3;16604:93;:::i;:::-;16722:2;16717:3;16713:12;16706:19;;16365:366;;;:::o;16737:419::-;16903:4;16941:2;16930:9;16926:18;16918:26;;16990:9;16984:4;16980:20;16976:1;16965:9;16961:17;16954:47;17018:131;17144:4;17018:131;:::i;:::-;17010:139;;16737:419;;;:::o;17162:221::-;17302:34;17298:1;17290:6;17286:14;17279:58;17371:4;17366:2;17358:6;17354:15;17347:29;17162:221;:::o;17389:366::-;17531:3;17552:67;17616:2;17611:3;17552:67;:::i;:::-;17545:74;;17628:93;17717:3;17628:93;:::i;:::-;17746:2;17741:3;17737:12;17730:19;;17389:366;;;:::o;17761:419::-;17927:4;17965:2;17954:9;17950:18;17942:26;;18014:9;18008:4;18004:20;18000:1;17989:9;17985:17;17978:47;18042:131;18168:4;18042:131;:::i;:::-;18034:139;;17761:419;;;:::o;18186:225::-;18326:34;18322:1;18314:6;18310:14;18303:58;18395:8;18390:2;18382:6;18378:15;18371:33;18186:225;:::o;18417:366::-;18559:3;18580:67;18644:2;18639:3;18580:67;:::i;:::-;18573:74;;18656:93;18745:3;18656:93;:::i;:::-;18774:2;18769:3;18765:12;18758:19;;18417:366;;;:::o;18789:419::-;18955:4;18993:2;18982:9;18978:18;18970:26;;19042:9;19036:4;19032:20;19028:1;19017:9;19013:17;19006:47;19070:131;19196:4;19070:131;:::i;:::-;19062:139;;18789:419;;;:::o;19214:222::-;19354:34;19350:1;19342:6;19338:14;19331:58;19423:5;19418:2;19410:6;19406:15;19399:30;19214:222;:::o;19442:366::-;19584:3;19605:67;19669:2;19664:3;19605:67;:::i;:::-;19598:74;;19681:93;19770:3;19681:93;:::i;:::-;19799:2;19794:3;19790:12;19783:19;;19442:366;;;:::o;19814:419::-;19980:4;20018:2;20007:9;20003:18;19995:26;;20067:9;20061:4;20057:20;20053:1;20042:9;20038:17;20031:47;20095:131;20221:4;20095:131;:::i;:::-;20087:139;;19814:419;;;:::o;20239:225::-;20379:34;20375:1;20367:6;20363:14;20356:58;20448:8;20443:2;20435:6;20431:15;20424:33;20239:225;:::o;20470:366::-;20612:3;20633:67;20697:2;20692:3;20633:67;:::i;:::-;20626:74;;20709:93;20798:3;20709:93;:::i;:::-;20827:2;20822:3;20818:12;20811:19;;20470:366;;;:::o;20842:419::-;21008:4;21046:2;21035:9;21031:18;21023:26;;21095:9;21089:4;21085:20;21081:1;21070:9;21066:17;21059:47;21123:131;21249:4;21123:131;:::i;:::-;21115:139;;20842:419;;;:::o;21267:181::-;21407:33;21403:1;21395:6;21391:14;21384:57;21267:181;:::o;21454:366::-;21596:3;21617:67;21681:2;21676:3;21617:67;:::i;:::-;21610:74;;21693:93;21782:3;21693:93;:::i;:::-;21811:2;21806:3;21802:12;21795:19;;21454:366;;;:::o;21826:419::-;21992:4;22030:2;22019:9;22015:18;22007:26;;22079:9;22073:4;22069:20;22065:1;22054:9;22050:17;22043:47;22107:131;22233:4;22107:131;:::i;:::-;22099:139;;21826:419;;;:::o;22251:179::-;22391:31;22387:1;22379:6;22375:14;22368:55;22251:179;:::o;22436:366::-;22578:3;22599:67;22663:2;22658:3;22599:67;:::i;:::-;22592:74;;22675:93;22764:3;22675:93;:::i;:::-;22793:2;22788:3;22784:12;22777:19;;22436:366;;;:::o;22808:419::-;22974:4;23012:2;23001:9;22997:18;22989:26;;23061:9;23055:4;23051:20;23047:1;23036:9;23032:17;23025:47;23089:131;23215:4;23089:131;:::i;:::-;23081:139;;22808:419;;;:::o;23233:181::-;23373:33;23369:1;23361:6;23357:14;23350:57;23233:181;:::o;23420:366::-;23562:3;23583:67;23647:2;23642:3;23583:67;:::i;:::-;23576:74;;23659:93;23748:3;23659:93;:::i;:::-;23777:2;23772:3;23768:12;23761:19;;23420:366;;;:::o;23792:419::-;23958:4;23996:2;23985:9;23981:18;23973:26;;24045:9;24039:4;24035:20;24031:1;24020:9;24016:17;24009:47;24073:131;24199:4;24073:131;:::i;:::-;24065:139;;23792:419;;;:::o;24217:179::-;24357:31;24353:1;24345:6;24341:14;24334:55;24217:179;:::o;24402:366::-;24544:3;24565:67;24629:2;24624:3;24565:67;:::i;:::-;24558:74;;24641:93;24730:3;24641:93;:::i;:::-;24759:2;24754:3;24750:12;24743:19;;24402:366;;;:::o;24774:419::-;24940:4;24978:2;24967:9;24963:18;24955:26;;25027:9;25021:4;25017:20;25013:1;25002:9;24998:17;24991:47;25055:131;25181:4;25055:131;:::i;:::-;25047:139;;24774:419;;;:::o;25199:177::-;25339:29;25335:1;25327:6;25323:14;25316:53;25199:177;:::o;25382:366::-;25524:3;25545:67;25609:2;25604:3;25545:67;:::i;:::-;25538:74;;25621:93;25710:3;25621:93;:::i;:::-;25739:2;25734:3;25730:12;25723:19;;25382:366;;;:::o;25754:419::-;25920:4;25958:2;25947:9;25943:18;25935:26;;26007:9;26001:4;25997:20;25993:1;25982:9;25978:17;25971:47;26035:131;26161:4;26035:131;:::i;:::-;26027:139;;25754:419;;;:::o;26179:233::-;26319:34;26315:1;26307:6;26303:14;26296:58;26388:16;26383:2;26375:6;26371:15;26364:41;26179:233;:::o;26418:366::-;26560:3;26581:67;26645:2;26640:3;26581:67;:::i;:::-;26574:74;;26657:93;26746:3;26657:93;:::i;:::-;26775:2;26770:3;26766:12;26759:19;;26418:366;;;:::o;26790:419::-;26956:4;26994:2;26983:9;26979:18;26971:26;;27043:9;27037:4;27033:20;27029:1;27018:9;27014:17;27007:47;27071:131;27197:4;27071:131;:::i;:::-;27063:139;;26790:419;;;:::o;27215:180::-;27355:32;27351:1;27343:6;27339:14;27332:56;27215:180;:::o;27401:366::-;27543:3;27564:67;27628:2;27623:3;27564:67;:::i;:::-;27557:74;;27640:93;27729:3;27640:93;:::i;:::-;27758:2;27753:3;27749:12;27742:19;;27401:366;;;:::o;27773:419::-;27939:4;27977:2;27966:9;27962:18;27954:26;;28026:9;28020:4;28016:20;28012:1;28001:9;27997:17;27990:47;28054:131;28180:4;28054:131;:::i;:::-;28046:139;;27773:419;;;:::o;28198:182::-;28338:34;28334:1;28326:6;28322:14;28315:58;28198:182;:::o;28386:366::-;28528:3;28549:67;28613:2;28608:3;28549:67;:::i;:::-;28542:74;;28625:93;28714:3;28625:93;:::i;:::-;28743:2;28738:3;28734:12;28727:19;;28386:366;;;:::o;28758:419::-;28924:4;28962:2;28951:9;28947:18;28939:26;;29011:9;29005:4;29001:20;28997:1;28986:9;28982:17;28975:47;29039:131;29165:4;29039:131;:::i;:::-;29031:139;;28758:419;;;:::o;29183:191::-;29223:3;29242:20;29260:1;29242:20;:::i;:::-;29237:25;;29276:20;29294:1;29276:20;:::i;:::-;29271:25;;29319:1;29316;29312:9;29305:16;;29340:3;29337:1;29334:10;29331:36;;;29347:18;;:::i;:::-;29331:36;29183:191;;;;:::o;29380:176::-;29520:28;29516:1;29508:6;29504:14;29497:52;29380:176;:::o;29562:366::-;29704:3;29725:67;29789:2;29784:3;29725:67;:::i;:::-;29718:74;;29801:93;29890:3;29801:93;:::i;:::-;29919:2;29914:3;29910:12;29903:19;;29562:366;;;:::o;29934:419::-;30100:4;30138:2;30127:9;30123:18;30115:26;;30187:9;30181:4;30177:20;30173:1;30162:9;30158:17;30151:47;30215:131;30341:4;30215:131;:::i;:::-;30207:139;;29934:419;;;:::o;30359:194::-;30399:4;30419:20;30437:1;30419:20;:::i;:::-;30414:25;;30453:20;30471:1;30453:20;:::i;:::-;30448:25;;30497:1;30494;30490:9;30482:17;;30521:1;30515:4;30512:11;30509:37;;;30526:18;;:::i;:::-;30509:37;30359:194;;;;:::o;30559:231::-;30699:34;30695:1;30687:6;30683:14;30676:58;30768:14;30763:2;30755:6;30751:15;30744:39;30559:231;:::o;30796:366::-;30938:3;30959:67;31023:2;31018:3;30959:67;:::i;:::-;30952:74;;31035:93;31124:3;31035:93;:::i;:::-;31153:2;31148:3;31144:12;31137:19;;30796:366;;;:::o;31168:419::-;31334:4;31372:2;31361:9;31357:18;31349:26;;31421:9;31415:4;31411:20;31407:1;31396:9;31392:17;31385:47;31449:131;31575:4;31449:131;:::i;:::-;31441:139;;31168:419;;;:::o;31593:143::-;31650:5;31681:6;31675:13;31666:22;;31697:33;31724:5;31697:33;:::i;:::-;31593:143;;;;:::o;31742:351::-;31812:6;31861:2;31849:9;31840:7;31836:23;31832:32;31829:119;;;31867:79;;:::i;:::-;31829:119;31987:1;32012:64;32068:7;32059:6;32048:9;32044:22;32012:64;:::i;:::-;32002:74;;31958:128;31742:351;;;;:::o;32099:85::-;32144:7;32173:5;32162:16;;32099:85;;;:::o;32190:158::-;32248:9;32281:61;32299:42;32308:32;32334:5;32308:32;:::i;:::-;32299:42;:::i;:::-;32281:61;:::i;:::-;32268:74;;32190:158;;;:::o;32354:147::-;32449:45;32488:5;32449:45;:::i;:::-;32444:3;32437:58;32354:147;;:::o;32507:114::-;32574:6;32608:5;32602:12;32592:22;;32507:114;;;:::o;32627:184::-;32726:11;32760:6;32755:3;32748:19;32800:4;32795:3;32791:14;32776:29;;32627:184;;;;:::o;32817:132::-;32884:4;32907:3;32899:11;;32937:4;32932:3;32928:14;32920:22;;32817:132;;;:::o;32955:108::-;33032:24;33050:5;33032:24;:::i;:::-;33027:3;33020:37;32955:108;;:::o;33069:179::-;33138:10;33159:46;33201:3;33193:6;33159:46;:::i;:::-;33237:4;33232:3;33228:14;33214:28;;33069:179;;;;:::o;33254:113::-;33324:4;33356;33351:3;33347:14;33339:22;;33254:113;;;:::o;33403:732::-;33522:3;33551:54;33599:5;33551:54;:::i;:::-;33621:86;33700:6;33695:3;33621:86;:::i;:::-;33614:93;;33731:56;33781:5;33731:56;:::i;:::-;33810:7;33841:1;33826:284;33851:6;33848:1;33845:13;33826:284;;;33927:6;33921:13;33954:63;34013:3;33998:13;33954:63;:::i;:::-;33947:70;;34040:60;34093:6;34040:60;:::i;:::-;34030:70;;33886:224;33873:1;33870;33866:9;33861:14;;33826:284;;;33830:14;34126:3;34119:10;;33527:608;;;33403:732;;;;:::o;34141:831::-;34404:4;34442:3;34431:9;34427:19;34419:27;;34456:71;34524:1;34513:9;34509:17;34500:6;34456:71;:::i;:::-;34537:80;34613:2;34602:9;34598:18;34589:6;34537:80;:::i;:::-;34664:9;34658:4;34654:20;34649:2;34638:9;34634:18;34627:48;34692:108;34795:4;34786:6;34692:108;:::i;:::-;34684:116;;34810:72;34878:2;34867:9;34863:18;34854:6;34810:72;:::i;:::-;34892:73;34960:3;34949:9;34945:19;34936:6;34892:73;:::i;:::-;34141:831;;;;;;;;:::o;34978:180::-;35026:77;35023:1;35016:88;35123:4;35120:1;35113:15;35147:4;35144:1;35137:15;35164:185;35204:1;35221:20;35239:1;35221:20;:::i;:::-;35216:25;;35255:20;35273:1;35255:20;:::i;:::-;35250:25;;35294:1;35284:35;;35299:18;;:::i;:::-;35284:35;35341:1;35338;35334:9;35329:14;;35164:185;;;;:::o;35355:177::-;35495:29;35491:1;35483:6;35479:14;35472:53;35355:177;:::o;35538:366::-;35680:3;35701:67;35765:2;35760:3;35701:67;:::i;:::-;35694:74;;35777:93;35866:3;35777:93;:::i;:::-;35895:2;35890:3;35886:12;35879:19;;35538:366;;;:::o;35910:419::-;36076:4;36114:2;36103:9;36099:18;36091:26;;36163:9;36157:4;36153:20;36149:1;36138:9;36134:17;36127:47;36191:131;36317:4;36191:131;:::i;:::-;36183:139;;35910:419;;;:::o;36335:410::-;36375:7;36398:20;36416:1;36398:20;:::i;:::-;36393:25;;36432:20;36450:1;36432:20;:::i;:::-;36427:25;;36487:1;36484;36480:9;36509:30;36527:11;36509:30;:::i;:::-;36498:41;;36688:1;36679:7;36675:15;36672:1;36669:22;36649:1;36642:9;36622:83;36599:139;;36718:18;;:::i;:::-;36599:139;36383:362;36335:410;;;;:::o;36751:220::-;36891:34;36887:1;36879:6;36875:14;36868:58;36960:3;36955:2;36947:6;36943:15;36936:28;36751:220;:::o;36977:366::-;37119:3;37140:67;37204:2;37199:3;37140:67;:::i;:::-;37133:74;;37216:93;37305:3;37216:93;:::i;:::-;37334:2;37329:3;37325:12;37318:19;;36977:366;;;:::o;37349:419::-;37515:4;37553:2;37542:9;37538:18;37530:26;;37602:9;37596:4;37592:20;37588:1;37577:9;37573:17;37566:47;37630:131;37756:4;37630:131;:::i;:::-;37622:139;;37349:419;;;:::o

Swarm Source

ipfs://e180c93c5d12d4b0273c8e9bcfcf02dd8eeaee683088f30de0abae1aa62b84d9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

XToolsAI analyzes thousands of ETH transactions daily, identifying top traders using advanced algorithms. We categorize and display profitable wallets on our user-friendly website, helping you find the best performing wallet addresses.

Validator Index Block Amount
View All Withdrawals

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

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