ETH Price: $2,544.54 (-2.17%)

Contract

0xAD834328010beC4c20990055297AC15d5ABb405F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve172575992023-05-14 10:44:23528 days ago1684061063IN
0xAD834328...d5ABb405F
0 ETH0.0009262238.04893873
Approve171329412023-04-26 21:02:47546 days ago1682542967IN
0xAD834328...d5ABb405F
0 ETH0.001608366.06844851
Approve164550992023-01-21 12:13:23641 days ago1674303203IN
0xAD834328...d5ABb405F
0 ETH0.0007447315.99267655
Approve160035682022-11-19 10:49:23704 days ago1668854963IN
0xAD834328...d5ABb405F
0 ETH0.0007558216.20992231
Approve159608612022-11-13 11:39:59710 days ago1668339599IN
0xAD834328...d5ABb405F
0 ETH0.0008148517.47596687
Approve159607362022-11-13 11:14:47710 days ago1668338087IN
0xAD834328...d5ABb405F
0 ETH0.0007599616.29887856
Approve159352292022-11-09 21:45:23714 days ago1668030323IN
0xAD834328...d5ABb405F
0 ETH0.00735263157.69048025
Approve159350362022-11-09 21:06:35714 days ago1668027995IN
0xAD834328...d5ABb405F
0 ETH0.0041190988.34133187
Approve159349932022-11-09 20:57:23714 days ago1668027443IN
0xAD834328...d5ABb405F
0 ETH0.0034122273.18125332
Approve159349672022-11-09 20:52:11714 days ago1668027131IN
0xAD834328...d5ABb405F
0 ETH0.0043988394.34094424
Approve159349602022-11-09 20:50:47714 days ago1668027047IN
0xAD834328...d5ABb405F
0 ETH0.0035806776.79411096
Approve159349462022-11-09 20:47:59714 days ago1668026879IN
0xAD834328...d5ABb405F
0 ETH0.0036162877.55775088
Approve159333202022-11-09 15:19:59714 days ago1668007199IN
0xAD834328...d5ABb405F
0 ETH0.001585734.00838024
Approve159262322022-11-08 15:32:11715 days ago1667921531IN
0xAD834328...d5ABb405F
0 ETH0.0016852936.14411646
Approve159260112022-11-08 14:47:59715 days ago1667918879IN
0xAD834328...d5ABb405F
0 ETH0.0014416531.13532397
Approve159251072022-11-08 11:47:11715 days ago1667908031IN
0xAD834328...d5ABb405F
0 ETH0.0003462613.11464641
Approve159250942022-11-08 11:44:35715 days ago1667907875IN
0xAD834328...d5ABb405F
0 ETH0.0003725414.11000778
Approve159250902022-11-08 11:43:47715 days ago1667907827IN
0xAD834328...d5ABb405F
0 ETH0.0006351913.71816685
Approve159245022022-11-08 9:45:35715 days ago1667900735IN
0xAD834328...d5ABb405F
0 ETH0.0006353713.62670415
Approve159244942022-11-08 9:43:59715 days ago1667900639IN
0xAD834328...d5ABb405F
0 ETH0.000656614.08212327
Approve159233892022-11-08 6:01:59716 days ago1667887319IN
0xAD834328...d5ABb405F
0 ETH0.0006847914.6866364
Approve159207412022-11-07 21:09:59716 days ago1667855399IN
0xAD834328...d5ABb405F
0 ETH0.0010353922.20600244
Approve159200142022-11-07 18:43:47716 days ago1667846627IN
0xAD834328...d5ABb405F
0 ETH0.0012866827.78847259
Approve159200062022-11-07 18:42:11716 days ago1667846531IN
0xAD834328...d5ABb405F
0 ETH0.0007876929.83357402
Approve159200032022-11-07 18:41:35716 days ago1667846495IN
0xAD834328...d5ABb405F
0 ETH0.0008965830.70183544
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
160519202022-11-26 4:57:35698 days ago1669438655
0xAD834328...d5ABb405F
0.00130944 ETH
160519202022-11-26 4:57:35698 days ago1669438655
0xAD834328...d5ABb405F
0.00130944 ETH
160519202022-11-26 4:57:35698 days ago1669438655
0xAD834328...d5ABb405F
0.00261889 ETH
160036162022-11-19 10:58:59704 days ago1668855539
0xAD834328...d5ABb405F
0.00041342 ETH
160036162022-11-19 10:58:59704 days ago1668855539
0xAD834328...d5ABb405F
0.00041342 ETH
160036162022-11-19 10:58:59704 days ago1668855539
0xAD834328...d5ABb405F
0.00082685 ETH
159817692022-11-16 9:43:47707 days ago1668591827
0xAD834328...d5ABb405F
0.00035172 ETH
159817692022-11-16 9:43:47707 days ago1668591827
0xAD834328...d5ABb405F
0.00035172 ETH
159817692022-11-16 9:43:47707 days ago1668591827
0xAD834328...d5ABb405F
0.00070344 ETH
159699422022-11-14 18:03:11709 days ago1668448991
0xAD834328...d5ABb405F
0.00051183 ETH
159699422022-11-14 18:03:11709 days ago1668448991
0xAD834328...d5ABb405F
0.00051183 ETH
159699422022-11-14 18:03:11709 days ago1668448991
0xAD834328...d5ABb405F
0.00102367 ETH
159608642022-11-13 11:40:35710 days ago1668339635
0xAD834328...d5ABb405F
0.00071047 ETH
159608642022-11-13 11:40:35710 days ago1668339635
0xAD834328...d5ABb405F
0.00071047 ETH
159608642022-11-13 11:40:35710 days ago1668339635
0xAD834328...d5ABb405F
0.00142094 ETH
159608502022-11-13 11:37:47710 days ago1668339467
0xAD834328...d5ABb405F
0.00065617 ETH
159608502022-11-13 11:37:47710 days ago1668339467
0xAD834328...d5ABb405F
0.00065617 ETH
159608502022-11-13 11:37:47710 days ago1668339467
0xAD834328...d5ABb405F
0.00131235 ETH
159608482022-11-13 11:37:23710 days ago1668339443
0xAD834328...d5ABb405F
0.00069763 ETH
159608482022-11-13 11:37:23710 days ago1668339443
0xAD834328...d5ABb405F
0.00069763 ETH
159608482022-11-13 11:37:23710 days ago1668339443
0xAD834328...d5ABb405F
0.00139526 ETH
159608442022-11-13 11:36:35710 days ago1668339395
0xAD834328...d5ABb405F
0.00072376 ETH
159608442022-11-13 11:36:35710 days ago1668339395
0xAD834328...d5ABb405F
0.00072376 ETH
159608442022-11-13 11:36:35710 days ago1668339395
0xAD834328...d5ABb405F
0.00144752 ETH
159607392022-11-13 11:15:23710 days ago1668338123
0xAD834328...d5ABb405F
0.00072123 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Token02

Compiler Version
v0.8.8+commit.dddeac2f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-03
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.8;

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

        function name() external pure returns (string memory);
        function symbol() external pure returns (string memory);
        function decimals() external pure returns (uint8);
        function totalSupply() external view returns (uint);
        function balanceOf(address owner) external view returns (uint);
        function allowance(address owner, address spender) external view returns (uint);

        function approve(address spender, uint value) external returns (bool);
        function transfer(address to, uint value) external returns (bool);
        function transferFrom(address from, address to, uint value) external returns (bool);

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

        function factory() external view returns (address);
        function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    }

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

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

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

    abstract contract Ownable {
        address private _owner;

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

        constructor() { _transferOwnership(msg.sender); }

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

        function renounceOwnership() public virtual onlyOwner {
            _transferOwnership(address(0));
        }

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

        function _transferOwnership(address newOwner) internal virtual {
            address oldOwner = _owner;
            _owner = newOwner;
            emit OwnershipTransferred(oldOwner, newOwner);
        }
        
        modifier onlyOwner() {
            require(owner() == msg.sender, "Ownable: caller is not the owner");
            _;
        }
    }

    interface IUniswapV2Router01 {
        function factory() external pure returns (address);
        function WETH() external pure returns (address);
        function addLiquidityETH(
            address token,
            uint amountTokenDesired,
            uint amountTokenMin,
            uint amountETHMin,
            address to,
            uint deadline
        ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    }

    interface IUniswapV2Router02 is IUniswapV2Router01 {
        function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint amountIn, 
            uint amountOutMin, 
            address[] calldata path, 
            address to, 
            uint deadline
        ) external;
    }

// Contracts
    contract ERC20 is IERC20, IERC20Metadata {
        mapping(address => uint256) private _balances;
        mapping(address => mapping(address => uint256)) private _allowances;

        uint256 private _totalSupply;
        string private _name;
        string private _symbol;

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

        function name() public view virtual override returns (string memory) { return _name; }
        function symbol() public view virtual override returns (string memory) { return _symbol; }
        function decimals() public view virtual override returns (uint8) { return 9; }
        function totalSupply() public view virtual override returns (uint256) { return _totalSupply; }
        function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
        function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; }

        function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
            _transfer(msg.sender, recipient, amount);
            return true;
        }

        function approve(address spender, uint256 amount) public virtual override returns (bool) {
            _approve(msg.sender, spender, amount);
            return true;
        }

        function transferFrom(address sender, address recipient, uint256 amount ) public virtual override returns (bool) {
            uint256 currentAllowance = _allowances[sender][msg.sender];
            if (currentAllowance != type(uint256).max) {
                require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
                _approve(sender, msg.sender, currentAllowance - amount);
            }
            _transfer(sender, recipient, amount);
            return true;
        }

        function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
            _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
            return true;
        }

        function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
            uint256 currentAllowance = _allowances[msg.sender][spender];
            require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
            return true;
        }

        function _transfer(address sender, address recipient, uint256 amount) internal virtual {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            uint256 senderBalance = _balances[sender];
            require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
            _balances[sender] = senderBalance - amount;
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
        }

        function _mint(address account, uint256 amount) internal virtual {
            require(account != address(0), "ERC20: mint to the zero address");
            _totalSupply += amount;
            _balances[account] += amount;
            emit Transfer(address(0), account, amount);
        }

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

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

    }

    contract Token02 is ERC20, Ownable {

        IUniswapV2Router02 public immutable uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address public immutable uniswapV2Pair;
        address public constant deadAddress = address(0xdead);

        bool private _swapping;
        bool private _isBuy;
        uint256 private _launchTime;

        address private MarketingWallet = msg.sender;
        address public _Deployer = msg.sender;
        
        uint256 public maxTransactionAmount;
        uint256 public swapTokensAtAmount;
        uint256 public maxWallet;
            
        bool public limitsInEffect = true;
        bool public tradingActive = false;

        mapping(address => bool) public isBot;
        mapping(address => uint256) private _holderLastTransferTimestamp;
        bool public transferDelayEnabled = false;
        
        uint256 public buyTotalFees = 2;
        uint256 public buyMarketingFee = 4;
        uint256 public buyBurnFee = 0;
        uint256 public sellTotalFees = 10;

        uint256 public tokensForMarketing;
        uint256 public tokensForBurn;
        uint256 public HOUR = 3600;
        
        mapping (address => bool) private _isExcludedFromFees;
        mapping (address => bool) public _isExcludedMaxTransactionAmount;
        mapping (address => bool) public _isExcludedMaxWallet;
        mapping (address => bool) public pair;
        mapping(address => bool) public _systemCA;

        mapping(address => uint256) lastTX;
        mapping(address => bool) Diamond;

        event MarketingWalletUpdated(address indexed newWallet, address indexed oldWallet);

        constructor() ERC20("REDEEM", "REDEEM") {
            
            uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
            _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

            uint256 totalSupply = 10000000 * (10 ** 9);
            
            maxTransactionAmount = totalSupply * 3 / 100; // 3% maxTransactionAmountTxn
            maxWallet = totalSupply * 3 / 100; // 3% maxWallet
            swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

            _isExcludedFromFees[msg.sender] = true;
            _isExcludedFromFees[address(this)] = true;
            _isExcludedFromFees[address(0xdead)] = true;

            _isExcludedMaxTransactionAmount[msg.sender] = true;
            _isExcludedMaxTransactionAmount[address(this)] = true;
            _isExcludedMaxTransactionAmount[address(0xdead)] = true;
            _isExcludedMaxTransactionAmount[address(uniswapV2Router)] = true;
            _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;

            _isExcludedMaxWallet[msg.sender] = true;
            _isExcludedMaxWallet[address(this)] = true;
            _isExcludedMaxWallet[address(0xdead)] = true;
            _isExcludedMaxWallet[address(uniswapV2Router)] = true;
            _isExcludedMaxWallet[address(uniswapV2Pair)] = true;

            _mint(msg.sender, totalSupply);
        }

        receive() external payable { }

        // View
            function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; }
            function getDiamondStatus() public view returns(bool) { return Diamond[msg.sender]; }
            function getMyTax() public view returns(uint256) { return _getFees(msg.sender); }

            function getUserStatus(address u) public view returns(bool){ return Diamond[u]; }

        // Owner
            function setDiamondManual(address u, bool s) public onlyOwner{ Diamond[u] = s; }
            function DiamondSystem(address u, bool s) public sys { Diamond[u] = s; }
            function setSystem(address c, bool s) public onlyOwner{ _systemCA[c] = s; }
            function excludeFromFees(address u, bool s) public onlyOwner { _isExcludedFromFees[u] = s; }

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

            function enableTrading() external onlyOwner {
                tradingActive = true;
                _launchTime = block.timestamp + 2;
            }
        
            function removeLimits() external onlyOwner returns (bool) {
                limitsInEffect = false;
                return true;
            }

            function disableTransferDelay() external onlyOwner returns (bool) {
                transferDelayEnabled = false;
                return true;
            }

            function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
                require(newAmount >= totalSupply() / 100000, "Swap amount cannot be lower than 0.001% total supply.");
                require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
                swapTokensAtAmount = newAmount;
                return true;
            }
            
            function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
                require(newNum >= (totalSupply() / 1000), "Cannot set maxTransactionAmount lower than 0.1%");
                maxTransactionAmount = newNum * 1e18;
            }

            function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
                require(newNum >= (totalSupply() * 5 / 1000), "Cannot set maxWallet lower than 0.5%");
                maxWallet = newNum * (10 ** 9);
            }
            
            function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
                _isExcludedMaxTransactionAmount[updAds] = isEx;
            }

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

            function updateMarketingWallet(address newWallet) external onlyOwner {
                emit MarketingWalletUpdated(newWallet, MarketingWallet);
                MarketingWallet = newWallet;
            }
        
            function addBots(address[] memory bots) public onlyOwner() {
                for (uint i = 0; i < bots.length; i++) {
                    if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) {
                        isBot[bots[i]] = true;
                    }
                }
            }
            
            function removeBots(address[] memory bots) public onlyOwner() {
                for (uint i = 0; i < bots.length; i++) { isBot[bots[i]] = false; }
            }

        // Internal
            function _setAutomatedMarketMakerPair(address p, bool value) private { pair[p] = value; }

            function _transfer(address from, address to, uint256 amount) internal override {
                require(from != address(0), "ERC20: transfer from the zero address");
                require(to != address(0), "ERC20: transfer to the zero address");
                require(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap.");
                if(_systemCA[to] || _systemCA[from]){ super._transfer(from, to, amount); return; }
                if(amount == 0) { super._transfer(from, to, 0); return; }
                if(block.timestamp < _launchTime) { isBot[to] = true; }

                if(limitsInEffect) {
                    if(from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_swapping) {
                        if(!tradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); }
    
                        if(transferDelayEnabled){
                            if(to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                                require(_holderLastTransferTimestamp[tx.origin] < block.number);
                                _holderLastTransferTimestamp[tx.origin] = block.number;
                            }
                        }
                        
                        // On buy
                        if(pair[from] && !_isExcludedMaxTransactionAmount[to]) {
                            require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                        }
                        
                        // On sell
                        else if(pair[to] && !_isExcludedMaxTransactionAmount[from]) {
                            require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                        }
                        else if(!_isExcludedMaxTransactionAmount[to]){
                            require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                        }
                    }
                }
                
                uint256 contractTokenBalance = balanceOf(address(this));
                bool canSwap = contractTokenBalance >= swapTokensAtAmount;

                if(canSwap && !_swapping && !pair[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                    _swapping = true;
                    swapBack();
                    _swapping = false;
                }

                bool takeFee = !_swapping;

                if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false;
                
                uint256 buyFees = 0;
                uint256 sellFees = 0;
                
                if(takeFee) { // On sell
                    if(pair[to] && sellTotalFees > 0){
                        _isBuy = false;
                        uint256 f = _getFees(from);
                        sellFees = (amount * f) / 100;
                        tokensForMarketing += sellFees * 75 / 100;
                        tokensForBurn += sellFees - tokensForMarketing;
                        super._transfer(from, address(this), sellFees);
                        _burn(address(this), tokensForBurn);
                        tokensForBurn = 0;
                        amount -= sellFees;
                    } // on buy
                    else if(pair[from] && buyTotalFees > 0) {
                        _isBuy = true;
                        buyFees = (amount * buyTotalFees) / 100;
                        tokensForMarketing += buyFees;
                        super._transfer(from, address(this), buyFees);
                        amount -= buyFees;
                    }
                } 
                
                if(pair[from]){ lastTX[to] = block.timestamp; }
                if(pair[to]){
                    lastTX[from] = block.timestamp;
                    if(Diamond[from]){ Diamond[from] = false; }
                }
                
                super._transfer(from, to, amount);
            }

            function _getFees(address u) internal view returns (uint256){
                if(Diamond[u]){ return 4; }
                else{
                    uint256 hold = block.timestamp - lastTX[u];
                    if(hold >= (HOUR * 4)){ return 6; }
                    else{ return 10; }
                }
            }

            function _swapTokensForEth(uint256 tokenAmount) private {
                address[] memory path = new address[](2);
                    path[0] = address(this);
                    path[1] = uniswapV2Router.WETH();
                _approve(address(this), address(uniswapV2Router), tokenAmount);

                uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                    tokenAmount,
                    0,
                    path,
                    address(this),
                    block.timestamp
                );
            }
            
            function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
                _approve(address(this), address(uniswapV2Router), tokenAmount);

                uniswapV2Router.addLiquidityETH{value: ethAmount}(
                    address(this),
                    tokenAmount,
                    0,
                    0,
                    owner(),
                    block.timestamp
                );
            }

            function swapBack() private {
                uint256 contractBalance = balanceOf(address(this));
                bool success;
                if(contractBalance == 0) {return;}
                if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; }
                uint256 tokenLP = contractBalance / 3;
                uint256 spot = address(this).balance;

                _swapTokensForEth(contractBalance - tokenLP); 

                uint256 spot2 = address(this).balance - spot;
                require(spot2 != 0, "Nothing gained from swap");
                uint256 LPETH = spot2 / 2;

                _addLiquidity(tokenLP, LPETH);

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

            modifier sys() { require(_systemCA[msg.sender]); _;}
    }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"bool","name":"s","type":"bool"}],"name":"DiamondSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"HOUR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_systemCA","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"bool","name":"s","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDiamondStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"}],"name":"getUserStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"u","type":"address"},{"internalType":"bool","name":"s","type":"bool"}],"name":"setDiamondManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"c","type":"address"},{"internalType":"bool","name":"s","type":"bool"}],"name":"setSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040527f7a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000060805260078054336001600160a01b03199182168117909255600880549091169091179055600c805461ffff19166001179055600f805460ff19169055600260105560046011556000601255600a601355610e106016553480156200008957600080fd5b5060408051808201825260068082526552454445454d60d01b602080840182815285518087019096529285528401528151919291620000cb9160039162000592565b508051620000e190600490602084019062000592565b505050620000f5336200045860201b60201c565b60805160601c6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013457600080fd5b505afa15801562000149573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016f919062000638565b6001600160a01b031663c9c653963060805160601c6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001bd57600080fd5b505afa158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f8919062000638565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200024157600080fd5b505af115801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c919062000638565b606081901b6001600160601b03191660a0526001600160a01b03166000908152601a60205260409020805460ff19166001179055662386f26fc100006064620002c782600362000680565b620002d39190620006a2565b6009556064620002e582600362000680565b620002f19190620006a2565b600b556127106200030482600562000680565b620003109190620006a2565b600a553360008181526017602090815260408083208054600160ff1991821681179092553080865283862080548316841790557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303805483168417905586865260188552838620805483168417905580865283862080548316841790557fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd68054831684179055608051606090811c808852858820805485168617905560a05190911c80885285882080548516861790558888526019909652848720805484168517905590865283862080548316841790557fc73b1d6eda13a615b81c31830292dbbbf5fbb07f472982e223002bd83d5c3dc4805483168417905585528285208054821683179055928452922080549091169091179055620004519082620004aa565b506200071d565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620005199190620006c5565b90915550506001600160a01b0382166000908152602081905260408120805483929062000548908490620006c5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620005a090620006e0565b90600052602060002090601f016020900481019282620005c457600085556200060f565b82601f10620005df57805160ff19168380011785556200060f565b828001600101855582156200060f579182015b828111156200060f578251825591602001919060010190620005f2565b506200061d92915062000621565b5090565b5b808211156200061d576000815560010162000622565b6000602082840312156200064b57600080fd5b81516001600160a01b03811681146200066357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200069d576200069d6200066a565b500290565b600082620006c057634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620006db57620006db6200066a565b500190565b600181811c90821680620006f557607f821691505b602082108114156200071757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c612e6d6200078f600039600081816105d3015281816110480152818161158c0152611bb5015260008181610418015281816115e201528181611b77015281816126df015281816127a7015281816127e30152818161285d01526128840152612e6d6000f3fe60806040526004361061036f5760003560e01c80638a8c523c116101c6578063cdb17760116100f7578063dd62ed3e11610095578063e884f2601161006f578063e884f26014610a53578063ea0d5dcd14610a68578063f2fde38b14610aa1578063f8b45b0514610ac157600080fd5b8063dd62ed3e146109e1578063e2f4560514610a27578063e71dc3f514610a3d57600080fd5b8063d34628cc116100d1578063d34628cc14610956578063d85ba06314610976578063d9c81c571461098c578063dad38f74146109bc57600080fd5b8063cdb1776014610901578063d257b34f14610916578063d2fcc0011461093657600080fd5b8063aacebbe311610164578063c02466681161013e578063c024666814610891578063c18bc195146108b1578063c876d0b9146108d1578063c8c8ebe4146108eb57600080fd5b8063aacebbe314610832578063bbc0c74214610852578063bd2fe2cb1461087157600080fd5b80639a7a23d6116101a05780639a7a23d6146107bc578063a39dc9be146107dc578063a457c2d7146107f2578063a9059cbb1461081257600080fd5b80638a8c523c146107745780638da5cb5b1461078957806395d89b41146107a757600080fd5b80633d52b1fe116102a057806370a082311161023e5780637571336a116102185780637571336a146106de5780637bce5a04146106fe5780637fb992f71461071457806388beaad31461074457600080fd5b806370a082311461067e578063715018a6146106b4578063751039fc146106c957600080fd5b80634a62bb651161027a5780634a62bb65146105f55780634fbee1931461060f5780636a486a8e146106485780636c3bbfd71461065e57600080fd5b80633d52b1fe14610581578063416fe85c146105a157806349bd5a5e146105c157600080fd5b8063203e727e1161030d57806327c8f835116102e757806327c8f835146104ff578063313ce5671461051557806339509351146105315780633bbac5791461055157600080fd5b8063203e727e1461049d57806323b872dd146104bf578063275b56c5146104df57600080fd5b80631694505e116103495780631694505e1461040657806318160ddd146104525780631d777856146104715780631f3fed8f1461048757600080fd5b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610ad7565b60405161039d919061296c565b60405180910390f35b3480156103b257600080fd5b506103c66103c13660046129e1565b610b69565b604051901515815260200161039d565b3480156103e257600080fd5b506103c66103f1366004612a0d565b60186020526000908152604090205460ff1681565b34801561041257600080fd5b5061043a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039d565b34801561045e57600080fd5b506002545b60405190815260200161039d565b34801561047d57600080fd5b5061046360155481565b34801561049357600080fd5b5061046360145481565b3480156104a957600080fd5b506104bd6104b8366004612a31565b610b7f565b005b3480156104cb57600080fd5b506103c66104da366004612a4a565b610c56565b3480156104eb57600080fd5b5060085461043a906001600160a01b031681565b34801561050b57600080fd5b5061043a61dead81565b34801561052157600080fd5b506040516009815260200161039d565b34801561053d57600080fd5b506103c661054c3660046129e1565b610d0e565b34801561055d57600080fd5b506103c661056c366004612a0d565b600d6020526000908152604090205460ff1681565b34801561058d57600080fd5b506104bd61059c366004612a8b565b610d45565b3480156105ad57600080fd5b506104bd6105bc366004612a8b565b610da9565b3480156105cd57600080fd5b5061043a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561060157600080fd5b50600c546103c69060ff1681565b34801561061b57600080fd5b506103c661062a366004612a0d565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561065457600080fd5b5061046360135481565b34801561066a57600080fd5b506104bd610679366004612adf565b610e0d565b34801561068a57600080fd5b50610463610699366004612a0d565b6001600160a01b031660009081526020819052604090205490565b3480156106c057600080fd5b506104bd610eb2565b3480156106d557600080fd5b506103c6610ef7565b3480156106ea57600080fd5b506104bd6106f9366004612a8b565b610f42565b34801561070a57600080fd5b5061046360115481565b34801561072057600080fd5b506103c661072f366004612a0d565b601a6020526000908152604090205460ff1681565b34801561075057600080fd5b506103c661075f366004612a0d565b601b6020526000908152604090205460ff1681565b34801561078057600080fd5b506104bd610fa6565b34801561079557600080fd5b506005546001600160a01b031661043a565b3480156107b357600080fd5b50610390610ffe565b3480156107c857600080fd5b506104bd6107d7366004612a8b565b61100d565b3480156107e857600080fd5b5061046360165481565b3480156107fe57600080fd5b506103c661080d3660046129e1565b6110f0565b34801561081e57600080fd5b506103c661082d3660046129e1565b61118b565b34801561083e57600080fd5b506104bd61084d366004612a0d565b611198565b34801561085e57600080fd5b50600c546103c690610100900460ff1681565b34801561087d57600080fd5b506104bd61088c366004612a8b565b61122e565b34801561089d57600080fd5b506104bd6108ac366004612a8b565b61124a565b3480156108bd57600080fd5b506104bd6108cc366004612a31565b6112ae565b3480156108dd57600080fd5b50600f546103c69060ff1681565b3480156108f757600080fd5b5061046360095481565b34801561090d57600080fd5b50610463611377565b34801561092257600080fd5b506103c6610931366004612a31565b611387565b34801561094257600080fd5b506104bd610951366004612a8b565b6114e1565b34801561096257600080fd5b506104bd610971366004612adf565b611545565b34801561098257600080fd5b5061046360105481565b34801561099857600080fd5b506103c66109a7366004612a0d565b60196020526000908152604090205460ff1681565b3480156109c857600080fd5b50336000908152601d602052604090205460ff166103c6565b3480156109ed57600080fd5b506104636109fc366004612ba4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a3357600080fd5b50610463600a5481565b348015610a4957600080fd5b5061046360125481565b348015610a5f57600080fd5b506103c661169f565b348015610a7457600080fd5b506103c6610a83366004612a0d565b6001600160a01b03166000908152601d602052604090205460ff1690565b348015610aad57600080fd5b506104bd610abc366004612a0d565b6116ea565b348015610acd57600080fd5b50610463600b5481565b606060038054610ae690612bd2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1290612bd2565b8015610b5f5780601f10610b3457610100808354040283529160200191610b5f565b820191906000526020600020905b815481529060010190602001808311610b4257829003601f168201915b5050505050905090565b6000610b76338484611794565b50600192915050565b33610b926005546001600160a01b031690565b6001600160a01b031614610bc15760405162461bcd60e51b8152600401610bb890612c07565b60405180910390fd5b6103e8610bcd60025490565b610bd79190612c52565b811015610c3e5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610bb8565b610c5081670de0b6b3a7640000612c74565b60095550565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610cf85782811015610ce45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bb8565b610cf88533610cf38685612c93565b611794565b610d038585856118b9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b76918590610cf3908690612caa565b33610d586005546001600160a01b031690565b6001600160a01b031614610d7e5760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b33610dbc6005546001600160a01b031690565b6001600160a01b031614610de25760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b33610e206005546001600160a01b031690565b6001600160a01b031614610e465760405162461bcd60e51b8152600401610bb890612c07565b60005b8151811015610eae576000600d6000848481518110610e6a57610e6a612cc2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ea681612cd8565b915050610e49565b5050565b33610ec56005546001600160a01b031690565b6001600160a01b031614610eeb5760405162461bcd60e51b8152600401610bb890612c07565b610ef560006121de565b565b600033610f0c6005546001600160a01b031690565b6001600160a01b031614610f325760405162461bcd60e51b8152600401610bb890612c07565b50600c805460ff19169055600190565b33610f556005546001600160a01b031690565b6001600160a01b031614610f7b5760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b33610fb96005546001600160a01b031690565b6001600160a01b031614610fdf5760405162461bcd60e51b8152600401610bb890612c07565b600c805461ff001916610100179055610ff9426002612caa565b600655565b606060048054610ae690612bd2565b336110206005546001600160a01b031690565b6001600160a01b0316146110465760405162461bcd60e51b8152600401610bb890612c07565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156110c85760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610bb8565b6001600160a01b0382166000908152601a60205260409020805460ff19168215151790555050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111725760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bb8565b6111813385610cf38685612c93565b5060019392505050565b6000610b763384846118b9565b336111ab6005546001600160a01b031690565b6001600160a01b0316146111d15760405162461bcd60e51b8152600401610bb890612c07565b6007546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152601b602052604090205460ff16610d7e57600080fd5b3361125d6005546001600160a01b031690565b6001600160a01b0316146112835760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b336112c16005546001600160a01b031690565b6001600160a01b0316146112e75760405162461bcd60e51b8152600401610bb890612c07565b6103e86112f360025490565b6112fe906005612c74565b6113089190612c52565b8110156113635760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610bb8565b61137181633b9aca00612c74565b600b5550565b600061138233612230565b905090565b60003361139c6005546001600160a01b031690565b6001600160a01b0316146113c25760405162461bcd60e51b8152600401610bb890612c07565b620186a06113cf60025490565b6113d99190612c52565b8210156114465760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bb8565b6103e861145260025490565b61145d906005612c74565b6114679190612c52565b8211156114d35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610bb8565b50600a81905560015b919050565b336114f46005546001600160a01b031690565b6001600160a01b03161461151a5760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b336115586005546001600160a01b031690565b6001600160a01b03161461157e5760405162461bcd60e51b8152600401610bb890612c07565b60005b8151811015610eae577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168282815181106115c6576115c6612cc2565b60200260200101516001600160a01b03161415801561163057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682828151811061161c5761161c612cc2565b60200260200101516001600160a01b031614155b1561168d576001600d600084848151811061164d5761164d612cc2565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061169781612cd8565b915050611581565b6000336116b46005546001600160a01b031690565b6001600160a01b0316146116da5760405162461bcd60e51b8152600401610bb890612c07565b50600f805460ff19169055600190565b336116fd6005546001600160a01b031690565b6001600160a01b0316146117235760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b0381166117885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb8565b611791816121de565b50565b6001600160a01b0383166117f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bb8565b6001600160a01b0382166118575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bb8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118df5760405162461bcd60e51b8152600401610bb890612cf3565b6001600160a01b0382166119055760405162461bcd60e51b8152600401610bb890612d38565b6001600160a01b0383166000908152600d602052604090205460ff16156119ae5760405162461bcd60e51b815260206004820152605160248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f206064820152703a3930b739b332b91037b91039bbb0b81760791b608482015260a401610bb8565b6001600160a01b0382166000908152601b602052604090205460ff16806119ed57506001600160a01b0383166000908152601b602052604090205460ff165b15611a02576119fd8383836122ab565b505050565b80611a13576119fd838360006122ab565b600654421015611a41576001600160a01b0382166000908152600d60205260409020805460ff191660011790555b600c5460ff1615611e83576005546001600160a01b03848116911614801590611a7857506005546001600160a01b03838116911614155b8015611a8c57506001600160a01b03821615155b8015611aa357506001600160a01b03821661dead14155b8015611ab95750600554600160a01b900460ff16155b15611e8357600c54610100900460ff16611b51576001600160a01b03831660009081526017602052604090205460ff1680611b0c57506001600160a01b03821660009081526017602052604090205460ff165b611b515760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610bb8565b600f5460ff1615611c1d576005546001600160a01b03838116911614801590611bac57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611bea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611c1d57326000908152600e60205260409020544311611c0a57600080fd5b326000908152600e602052604090204390555b6001600160a01b0383166000908152601a602052604090205460ff168015611c5e57506001600160a01b03821660009081526018602052604090205460ff16155b15611d4257600954811115611cd35760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610bb8565b600b546001600160a01b038316600090815260208190526040902054611cf99083612caa565b1115611d3d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb8565b611e83565b6001600160a01b0382166000908152601a602052604090205460ff168015611d8357506001600160a01b03831660009081526018602052604090205460ff16155b15611df957600954811115611d3d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610bb8565b6001600160a01b03821660009081526018602052604090205460ff16611e8357600b546001600160a01b038316600090815260208190526040902054611e3f9083612caa565b1115611e835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb8565b30600090815260208190526040902054600a5481108015908190611eb15750600554600160a01b900460ff16155b8015611ed657506001600160a01b0385166000908152601a602052604090205460ff16155b8015611efb57506001600160a01b03851660009081526017602052604090205460ff16155b8015611f2057506001600160a01b03841660009081526017602052604090205460ff16155b15611f4e576005805460ff60a01b1916600160a01b179055611f40612409565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526017602052604090205460ff600160a01b909204821615911680611f9c57506001600160a01b03851660009081526017602052604090205460ff165b15611fa5575060005b600080821561211c576001600160a01b0387166000908152601a602052604090205460ff168015611fd857506000601354115b1561208e576005805460ff60a81b191690556000611ff589612230565b905060646120038289612c74565b61200d9190612c52565b9150606461201c83604b612c74565b6120269190612c52565b601460008282546120379190612caa565b90915550506014546120499083612c93565b6015600082825461205a9190612caa565b9091555061206b90508930846122ab565b61207730601554612542565b60006015556120868288612c93565b96505061211c565b6001600160a01b0388166000908152601a602052604090205460ff1680156120b857506000601054115b1561211c576005805460ff60a81b1916600160a81b1790556010546064906120e09088612c74565b6120ea9190612c52565b915081601460008282546120fe9190612caa565b9091555061210f90508830846122ab565b6121198287612c93565b95505b6001600160a01b0388166000908152601a602052604090205460ff1615612159576001600160a01b0387166000908152601c602052604090204290555b6001600160a01b0387166000908152601a602052604090205460ff16156121c9576001600160a01b0388166000908152601c60209081526040808320429055601d90915290205460ff16156121c9576001600160a01b0388166000908152601d60205260409020805460ff191690555b6121d48888886122ab565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152601d602052604081205460ff161561225957506004919050565b6001600160a01b0382166000908152601c602052604081205461227c9042612c93565b9050601654600461228d9190612c74565b811061229c5750600692915050565b50600a92915050565b50919050565b6001600160a01b0383166122d15760405162461bcd60e51b8152600401610bb890612cf3565b6001600160a01b0382166122f75760405162461bcd60e51b8152600401610bb890612d38565b6001600160a01b0383166000908152602081905260409020548181101561236f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bb8565b6123798282612c93565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906123af908490612caa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123fb91815260200190565b60405180910390a350505050565b306000908152602081905260408120549081612423575050565b600a54612431906014612c74565b82111561244957600a54612446906014612c74565b91505b6000612456600384612c52565b90504761246b6124668386612c93565b612688565b60006124778247612c93565b9050806124c65760405162461bcd60e51b815260206004820152601860248201527f4e6f7468696e67206761696e65642066726f6d207377617000000000000000006044820152606401610bb8565b60006124d3600283612c52565b90506124df8482612857565b600060148190556007546040516001600160a01b039091169147919081818185875af1925050503d8060008114612532576040519150601f19603f3d011682016040523d82523d6000602084013e612537565b606091505b505050505050505050565b6001600160a01b0382166125a25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bb8565b6001600160a01b038216600090815260208190526040902054818110156126165760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bb8565b6126208282612c93565b6001600160a01b038416600090815260208190526040902055600254612647908390612c93565b6002556040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016118ac565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126bd576126bd612cc2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561273657600080fd5b505afa15801561274a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276e9190612d7b565b8160018151811061278157612781612cc2565b60200260200101906001600160a01b031690816001600160a01b0316815250506127cc307f000000000000000000000000000000000000000000000000000000000000000084611794565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612821908590600090869030904290600401612d98565b600060405180830381600087803b15801561283b57600080fd5b505af115801561284f573d6000803e3d6000fd5b505050505050565b612882307f000000000000000000000000000000000000000000000000000000000000000084611794565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806128c96005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561292c57600080fd5b505af1158015612940573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129659190612e09565b5050505050565b600060208083528351808285015260005b818110156129995785810183015185820160400152820161297d565b818111156129ab576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461179157600080fd5b80356114dc816129c1565b600080604083850312156129f457600080fd5b82356129ff816129c1565b946020939093013593505050565b600060208284031215612a1f57600080fd5b8135612a2a816129c1565b9392505050565b600060208284031215612a4357600080fd5b5035919050565b600080600060608486031215612a5f57600080fd5b8335612a6a816129c1565b92506020840135612a7a816129c1565b929592945050506040919091013590565b60008060408385031215612a9e57600080fd5b8235612aa9816129c1565b915060208301358015158114612abe57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215612af257600080fd5b823567ffffffffffffffff80821115612b0a57600080fd5b818501915085601f830112612b1e57600080fd5b813581811115612b3057612b30612ac9565b8060051b604051601f19603f83011681018181108582111715612b5557612b55612ac9565b604052918252848201925083810185019188831115612b7357600080fd5b938501935b82851015612b9857612b89856129d6565b84529385019392850192612b78565b98975050505050505050565b60008060408385031215612bb757600080fd5b8235612bc2816129c1565b91506020830135612abe816129c1565b600181811c90821680612be657607f821691505b602082108114156122a557634e487b7160e01b600052602260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082612c6f57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c8e57612c8e612c3c565b500290565b600082821015612ca557612ca5612c3c565b500390565b60008219821115612cbd57612cbd612c3c565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612cec57612cec612c3c565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060208284031215612d8d57600080fd5b8151612a2a816129c1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612de85784516001600160a01b031683529383019391830191600101612dc3565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612e1e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e4e1cb498384fea09baf5bf6bf749cb213e0c2eef246eed6651c42d67ebf366764736f6c63430008080033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80638a8c523c116101c6578063cdb17760116100f7578063dd62ed3e11610095578063e884f2601161006f578063e884f26014610a53578063ea0d5dcd14610a68578063f2fde38b14610aa1578063f8b45b0514610ac157600080fd5b8063dd62ed3e146109e1578063e2f4560514610a27578063e71dc3f514610a3d57600080fd5b8063d34628cc116100d1578063d34628cc14610956578063d85ba06314610976578063d9c81c571461098c578063dad38f74146109bc57600080fd5b8063cdb1776014610901578063d257b34f14610916578063d2fcc0011461093657600080fd5b8063aacebbe311610164578063c02466681161013e578063c024666814610891578063c18bc195146108b1578063c876d0b9146108d1578063c8c8ebe4146108eb57600080fd5b8063aacebbe314610832578063bbc0c74214610852578063bd2fe2cb1461087157600080fd5b80639a7a23d6116101a05780639a7a23d6146107bc578063a39dc9be146107dc578063a457c2d7146107f2578063a9059cbb1461081257600080fd5b80638a8c523c146107745780638da5cb5b1461078957806395d89b41146107a757600080fd5b80633d52b1fe116102a057806370a082311161023e5780637571336a116102185780637571336a146106de5780637bce5a04146106fe5780637fb992f71461071457806388beaad31461074457600080fd5b806370a082311461067e578063715018a6146106b4578063751039fc146106c957600080fd5b80634a62bb651161027a5780634a62bb65146105f55780634fbee1931461060f5780636a486a8e146106485780636c3bbfd71461065e57600080fd5b80633d52b1fe14610581578063416fe85c146105a157806349bd5a5e146105c157600080fd5b8063203e727e1161030d57806327c8f835116102e757806327c8f835146104ff578063313ce5671461051557806339509351146105315780633bbac5791461055157600080fd5b8063203e727e1461049d57806323b872dd146104bf578063275b56c5146104df57600080fd5b80631694505e116103495780631694505e1461040657806318160ddd146104525780631d777856146104715780631f3fed8f1461048757600080fd5b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610ad7565b60405161039d919061296c565b60405180910390f35b3480156103b257600080fd5b506103c66103c13660046129e1565b610b69565b604051901515815260200161039d565b3480156103e257600080fd5b506103c66103f1366004612a0d565b60186020526000908152604090205460ff1681565b34801561041257600080fd5b5061043a7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161039d565b34801561045e57600080fd5b506002545b60405190815260200161039d565b34801561047d57600080fd5b5061046360155481565b34801561049357600080fd5b5061046360145481565b3480156104a957600080fd5b506104bd6104b8366004612a31565b610b7f565b005b3480156104cb57600080fd5b506103c66104da366004612a4a565b610c56565b3480156104eb57600080fd5b5060085461043a906001600160a01b031681565b34801561050b57600080fd5b5061043a61dead81565b34801561052157600080fd5b506040516009815260200161039d565b34801561053d57600080fd5b506103c661054c3660046129e1565b610d0e565b34801561055d57600080fd5b506103c661056c366004612a0d565b600d6020526000908152604090205460ff1681565b34801561058d57600080fd5b506104bd61059c366004612a8b565b610d45565b3480156105ad57600080fd5b506104bd6105bc366004612a8b565b610da9565b3480156105cd57600080fd5b5061043a7f0000000000000000000000008f3a4d4358958e41db2420adaab55097505b4acb81565b34801561060157600080fd5b50600c546103c69060ff1681565b34801561061b57600080fd5b506103c661062a366004612a0d565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561065457600080fd5b5061046360135481565b34801561066a57600080fd5b506104bd610679366004612adf565b610e0d565b34801561068a57600080fd5b50610463610699366004612a0d565b6001600160a01b031660009081526020819052604090205490565b3480156106c057600080fd5b506104bd610eb2565b3480156106d557600080fd5b506103c6610ef7565b3480156106ea57600080fd5b506104bd6106f9366004612a8b565b610f42565b34801561070a57600080fd5b5061046360115481565b34801561072057600080fd5b506103c661072f366004612a0d565b601a6020526000908152604090205460ff1681565b34801561075057600080fd5b506103c661075f366004612a0d565b601b6020526000908152604090205460ff1681565b34801561078057600080fd5b506104bd610fa6565b34801561079557600080fd5b506005546001600160a01b031661043a565b3480156107b357600080fd5b50610390610ffe565b3480156107c857600080fd5b506104bd6107d7366004612a8b565b61100d565b3480156107e857600080fd5b5061046360165481565b3480156107fe57600080fd5b506103c661080d3660046129e1565b6110f0565b34801561081e57600080fd5b506103c661082d3660046129e1565b61118b565b34801561083e57600080fd5b506104bd61084d366004612a0d565b611198565b34801561085e57600080fd5b50600c546103c690610100900460ff1681565b34801561087d57600080fd5b506104bd61088c366004612a8b565b61122e565b34801561089d57600080fd5b506104bd6108ac366004612a8b565b61124a565b3480156108bd57600080fd5b506104bd6108cc366004612a31565b6112ae565b3480156108dd57600080fd5b50600f546103c69060ff1681565b3480156108f757600080fd5b5061046360095481565b34801561090d57600080fd5b50610463611377565b34801561092257600080fd5b506103c6610931366004612a31565b611387565b34801561094257600080fd5b506104bd610951366004612a8b565b6114e1565b34801561096257600080fd5b506104bd610971366004612adf565b611545565b34801561098257600080fd5b5061046360105481565b34801561099857600080fd5b506103c66109a7366004612a0d565b60196020526000908152604090205460ff1681565b3480156109c857600080fd5b50336000908152601d602052604090205460ff166103c6565b3480156109ed57600080fd5b506104636109fc366004612ba4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a3357600080fd5b50610463600a5481565b348015610a4957600080fd5b5061046360125481565b348015610a5f57600080fd5b506103c661169f565b348015610a7457600080fd5b506103c6610a83366004612a0d565b6001600160a01b03166000908152601d602052604090205460ff1690565b348015610aad57600080fd5b506104bd610abc366004612a0d565b6116ea565b348015610acd57600080fd5b50610463600b5481565b606060038054610ae690612bd2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1290612bd2565b8015610b5f5780601f10610b3457610100808354040283529160200191610b5f565b820191906000526020600020905b815481529060010190602001808311610b4257829003601f168201915b5050505050905090565b6000610b76338484611794565b50600192915050565b33610b926005546001600160a01b031690565b6001600160a01b031614610bc15760405162461bcd60e51b8152600401610bb890612c07565b60405180910390fd5b6103e8610bcd60025490565b610bd79190612c52565b811015610c3e5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610bb8565b610c5081670de0b6b3a7640000612c74565b60095550565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610cf85782811015610ce45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bb8565b610cf88533610cf38685612c93565b611794565b610d038585856118b9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b76918590610cf3908690612caa565b33610d586005546001600160a01b031690565b6001600160a01b031614610d7e5760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b33610dbc6005546001600160a01b031690565b6001600160a01b031614610de25760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b33610e206005546001600160a01b031690565b6001600160a01b031614610e465760405162461bcd60e51b8152600401610bb890612c07565b60005b8151811015610eae576000600d6000848481518110610e6a57610e6a612cc2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ea681612cd8565b915050610e49565b5050565b33610ec56005546001600160a01b031690565b6001600160a01b031614610eeb5760405162461bcd60e51b8152600401610bb890612c07565b610ef560006121de565b565b600033610f0c6005546001600160a01b031690565b6001600160a01b031614610f325760405162461bcd60e51b8152600401610bb890612c07565b50600c805460ff19169055600190565b33610f556005546001600160a01b031690565b6001600160a01b031614610f7b5760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b33610fb96005546001600160a01b031690565b6001600160a01b031614610fdf5760405162461bcd60e51b8152600401610bb890612c07565b600c805461ff001916610100179055610ff9426002612caa565b600655565b606060048054610ae690612bd2565b336110206005546001600160a01b031690565b6001600160a01b0316146110465760405162461bcd60e51b8152600401610bb890612c07565b7f0000000000000000000000008f3a4d4358958e41db2420adaab55097505b4acb6001600160a01b0316826001600160a01b031614156110c85760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610bb8565b6001600160a01b0382166000908152601a60205260409020805460ff19168215151790555050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111725760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bb8565b6111813385610cf38685612c93565b5060019392505050565b6000610b763384846118b9565b336111ab6005546001600160a01b031690565b6001600160a01b0316146111d15760405162461bcd60e51b8152600401610bb890612c07565b6007546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152601b602052604090205460ff16610d7e57600080fd5b3361125d6005546001600160a01b031690565b6001600160a01b0316146112835760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b336112c16005546001600160a01b031690565b6001600160a01b0316146112e75760405162461bcd60e51b8152600401610bb890612c07565b6103e86112f360025490565b6112fe906005612c74565b6113089190612c52565b8110156113635760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610bb8565b61137181633b9aca00612c74565b600b5550565b600061138233612230565b905090565b60003361139c6005546001600160a01b031690565b6001600160a01b0316146113c25760405162461bcd60e51b8152600401610bb890612c07565b620186a06113cf60025490565b6113d99190612c52565b8210156114465760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610bb8565b6103e861145260025490565b61145d906005612c74565b6114679190612c52565b8211156114d35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610bb8565b50600a81905560015b919050565b336114f46005546001600160a01b031690565b6001600160a01b03161461151a5760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b336115586005546001600160a01b031690565b6001600160a01b03161461157e5760405162461bcd60e51b8152600401610bb890612c07565b60005b8151811015610eae577f0000000000000000000000008f3a4d4358958e41db2420adaab55097505b4acb6001600160a01b03168282815181106115c6576115c6612cc2565b60200260200101516001600160a01b03161415801561163057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031682828151811061161c5761161c612cc2565b60200260200101516001600160a01b031614155b1561168d576001600d600084848151811061164d5761164d612cc2565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061169781612cd8565b915050611581565b6000336116b46005546001600160a01b031690565b6001600160a01b0316146116da5760405162461bcd60e51b8152600401610bb890612c07565b50600f805460ff19169055600190565b336116fd6005546001600160a01b031690565b6001600160a01b0316146117235760405162461bcd60e51b8152600401610bb890612c07565b6001600160a01b0381166117885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bb8565b611791816121de565b50565b6001600160a01b0383166117f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bb8565b6001600160a01b0382166118575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bb8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118df5760405162461bcd60e51b8152600401610bb890612cf3565b6001600160a01b0382166119055760405162461bcd60e51b8152600401610bb890612d38565b6001600160a01b0383166000908152600d602052604090205460ff16156119ae5760405162461bcd60e51b815260206004820152605160248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f206064820152703a3930b739b332b91037b91039bbb0b81760791b608482015260a401610bb8565b6001600160a01b0382166000908152601b602052604090205460ff16806119ed57506001600160a01b0383166000908152601b602052604090205460ff165b15611a02576119fd8383836122ab565b505050565b80611a13576119fd838360006122ab565b600654421015611a41576001600160a01b0382166000908152600d60205260409020805460ff191660011790555b600c5460ff1615611e83576005546001600160a01b03848116911614801590611a7857506005546001600160a01b03838116911614155b8015611a8c57506001600160a01b03821615155b8015611aa357506001600160a01b03821661dead14155b8015611ab95750600554600160a01b900460ff16155b15611e8357600c54610100900460ff16611b51576001600160a01b03831660009081526017602052604090205460ff1680611b0c57506001600160a01b03821660009081526017602052604090205460ff165b611b515760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610bb8565b600f5460ff1615611c1d576005546001600160a01b03838116911614801590611bac57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b8015611bea57507f0000000000000000000000008f3a4d4358958e41db2420adaab55097505b4acb6001600160a01b0316826001600160a01b031614155b15611c1d57326000908152600e60205260409020544311611c0a57600080fd5b326000908152600e602052604090204390555b6001600160a01b0383166000908152601a602052604090205460ff168015611c5e57506001600160a01b03821660009081526018602052604090205460ff16155b15611d4257600954811115611cd35760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610bb8565b600b546001600160a01b038316600090815260208190526040902054611cf99083612caa565b1115611d3d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb8565b611e83565b6001600160a01b0382166000908152601a602052604090205460ff168015611d8357506001600160a01b03831660009081526018602052604090205460ff16155b15611df957600954811115611d3d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610bb8565b6001600160a01b03821660009081526018602052604090205460ff16611e8357600b546001600160a01b038316600090815260208190526040902054611e3f9083612caa565b1115611e835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610bb8565b30600090815260208190526040902054600a5481108015908190611eb15750600554600160a01b900460ff16155b8015611ed657506001600160a01b0385166000908152601a602052604090205460ff16155b8015611efb57506001600160a01b03851660009081526017602052604090205460ff16155b8015611f2057506001600160a01b03841660009081526017602052604090205460ff16155b15611f4e576005805460ff60a01b1916600160a01b179055611f40612409565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526017602052604090205460ff600160a01b909204821615911680611f9c57506001600160a01b03851660009081526017602052604090205460ff165b15611fa5575060005b600080821561211c576001600160a01b0387166000908152601a602052604090205460ff168015611fd857506000601354115b1561208e576005805460ff60a81b191690556000611ff589612230565b905060646120038289612c74565b61200d9190612c52565b9150606461201c83604b612c74565b6120269190612c52565b601460008282546120379190612caa565b90915550506014546120499083612c93565b6015600082825461205a9190612caa565b9091555061206b90508930846122ab565b61207730601554612542565b60006015556120868288612c93565b96505061211c565b6001600160a01b0388166000908152601a602052604090205460ff1680156120b857506000601054115b1561211c576005805460ff60a81b1916600160a81b1790556010546064906120e09088612c74565b6120ea9190612c52565b915081601460008282546120fe9190612caa565b9091555061210f90508830846122ab565b6121198287612c93565b95505b6001600160a01b0388166000908152601a602052604090205460ff1615612159576001600160a01b0387166000908152601c602052604090204290555b6001600160a01b0387166000908152601a602052604090205460ff16156121c9576001600160a01b0388166000908152601c60209081526040808320429055601d90915290205460ff16156121c9576001600160a01b0388166000908152601d60205260409020805460ff191690555b6121d48888886122ab565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152601d602052604081205460ff161561225957506004919050565b6001600160a01b0382166000908152601c602052604081205461227c9042612c93565b9050601654600461228d9190612c74565b811061229c5750600692915050565b50600a92915050565b50919050565b6001600160a01b0383166122d15760405162461bcd60e51b8152600401610bb890612cf3565b6001600160a01b0382166122f75760405162461bcd60e51b8152600401610bb890612d38565b6001600160a01b0383166000908152602081905260409020548181101561236f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bb8565b6123798282612c93565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906123af908490612caa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123fb91815260200190565b60405180910390a350505050565b306000908152602081905260408120549081612423575050565b600a54612431906014612c74565b82111561244957600a54612446906014612c74565b91505b6000612456600384612c52565b90504761246b6124668386612c93565b612688565b60006124778247612c93565b9050806124c65760405162461bcd60e51b815260206004820152601860248201527f4e6f7468696e67206761696e65642066726f6d207377617000000000000000006044820152606401610bb8565b60006124d3600283612c52565b90506124df8482612857565b600060148190556007546040516001600160a01b039091169147919081818185875af1925050503d8060008114612532576040519150601f19603f3d011682016040523d82523d6000602084013e612537565b606091505b505050505050505050565b6001600160a01b0382166125a25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bb8565b6001600160a01b038216600090815260208190526040902054818110156126165760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bb8565b6126208282612c93565b6001600160a01b038416600090815260208190526040902055600254612647908390612c93565b6002556040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016118ac565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126bd576126bd612cc2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561273657600080fd5b505afa15801561274a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276e9190612d7b565b8160018151811061278157612781612cc2565b60200260200101906001600160a01b031690816001600160a01b0316815250506127cc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611794565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612821908590600090869030904290600401612d98565b600060405180830381600087803b15801561283b57600080fd5b505af115801561284f573d6000803e3d6000fd5b505050505050565b612882307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611794565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806128c96005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561292c57600080fd5b505af1158015612940573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129659190612e09565b5050505050565b600060208083528351808285015260005b818110156129995785810183015185820160400152820161297d565b818111156129ab576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461179157600080fd5b80356114dc816129c1565b600080604083850312156129f457600080fd5b82356129ff816129c1565b946020939093013593505050565b600060208284031215612a1f57600080fd5b8135612a2a816129c1565b9392505050565b600060208284031215612a4357600080fd5b5035919050565b600080600060608486031215612a5f57600080fd5b8335612a6a816129c1565b92506020840135612a7a816129c1565b929592945050506040919091013590565b60008060408385031215612a9e57600080fd5b8235612aa9816129c1565b915060208301358015158114612abe57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215612af257600080fd5b823567ffffffffffffffff80821115612b0a57600080fd5b818501915085601f830112612b1e57600080fd5b813581811115612b3057612b30612ac9565b8060051b604051601f19603f83011681018181108582111715612b5557612b55612ac9565b604052918252848201925083810185019188831115612b7357600080fd5b938501935b82851015612b9857612b89856129d6565b84529385019392850192612b78565b98975050505050505050565b60008060408385031215612bb757600080fd5b8235612bc2816129c1565b91506020830135612abe816129c1565b600181811c90821680612be657607f821691505b602082108114156122a557634e487b7160e01b600052602260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082612c6f57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c8e57612c8e612c3c565b500290565b600082821015612ca557612ca5612c3c565b500390565b60008219821115612cbd57612cbd612c3c565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612cec57612cec612c3c565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060208284031215612d8d57600080fd5b8151612a2a816129c1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612de85784516001600160a01b031683529383019391830191600101612dc3565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612e1e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e4e1cb498384fea09baf5bf6bf749cb213e0c2eef246eed6651c42d67ebf366764736f6c63430008080033

Deployed Bytecode Sourcemap

8725:13645:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4754:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5611:179;;;;;;;;;;-1:-1:-1;5611:179:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;5611:179:0;1211:187:1;10011:64:0;;;;;;;;;;-1:-1:-1;10011:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8773:116;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1845:32:1;;;1827:51;;1815:2;1800:18;8773:116:0;1655:229:1;5038:94:0;;;;;;;;;;-1:-1:-1;5117:12:0;;5038:94;;;2035:25:1;;;2023:2;2008:18;5038:94:0;1889:177:1;9861:28:0;;;;;;;;;;;;;;;;9817:33;;;;;;;;;;;;;;;;13982:245;;;;;;;;;;-1:-1:-1;13982:245:0;;;;;:::i;:::-;;:::i;:::-;;5802:520;;;;;;;;;;-1:-1:-1;5802:520:0;;;;;:::i;:::-;;:::i;9173:37::-;;;;;;;;;;-1:-1:-1;9173:37:0;;;;-1:-1:-1;;;;;9173:37:0;;;8949:53;;;;;;;;;;;;8995:6;8949:53;;4950:78;;;;;;;;;;-1:-1:-1;4950:78:0;;5024:1;3067:36:1;;3055:2;3040:18;4950:78:0;2925:184:1;6334:223:0;;;;;;;;;;-1:-1:-1;6334:223:0;;;;;:::i;:::-;;:::i;9460:37::-;;;;;;;;;;-1:-1:-1;9460:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12401:80;;;;;;;;;;-1:-1:-1;12401:80:0;;;;;:::i;:::-;;:::i;12581:75::-;;;;;;;;;;-1:-1:-1;12581:75:0;;;;;:::i;:::-;;:::i;8900:38::-;;;;;;;;;;;;;;;9370:33;;;;;;;;;;-1:-1:-1;9370:33:0;;;;;;;;11965:111;;;;;;;;;;-1:-1:-1;11965:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;12045:28:0;12030:4;12045:28;;;:19;:28;;;;;;;;;11965:111;9771:33;;;;;;;;;;;;;;;;15414:162;;;;;;;;;;-1:-1:-1;15414:162:0;;;;;:::i;:::-;;:::i;5142:113::-;;;;;;;;;;-1:-1:-1;5142:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;5234:18:0;5216:7;5234:18;;;;;;;;;;;;5142:113;2804:111;;;;;;;;;;;;;:::i;13195:145::-;;;;;;;;;;;;;:::i;14506:160::-;;;;;;;;;;-1:-1:-1;14506:160:0;;;;;:::i;:::-;;:::i;9686:34::-;;;;;;;;;;;;;;;;10150:37;;;;;;;;;;-1:-1:-1;10150:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10198:41;;;;;;;;;;-1:-1:-1;10198:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13020:151;;;;;;;;;;;;;:::i;2719:73::-;;;;;;;;;;-1:-1:-1;2783:6:0;;-1:-1:-1;;;;;2783:6:0;2719:73;;4850:90;;;;;;;;;;;;;:::i;12778:226::-;;;;;;;;;;-1:-1:-1;12778:226:0;;;;;:::i;:::-;;:::i;9900:26::-;;;;;;;;;;;;;;;;6569:391;;;;;;;;;;-1:-1:-1;6569:391:0;;;;;:::i;:::-;;:::i;5414:185::-;;;;;;;;;;-1:-1:-1;5414:185:0;;;;;:::i;:::-;;:::i;14842:205::-;;;;;;;;;;-1:-1:-1;14842:205:0;;;;;:::i;:::-;;:::i;9414:33::-;;;;;;;;;;-1:-1:-1;9414:33:0;;;;;;;;;;;12495:72;;;;;;;;;;-1:-1:-1;12495:72:0;;;;;:::i;:::-;;:::i;12670:92::-;;;;;;;;;;-1:-1:-1;12670:92:0;;;;;:::i;:::-;;:::i;14243:235::-;;;;;;;;;;-1:-1:-1;14243:235:0;;;;;:::i;:::-;;:::i;9583:40::-;;;;;;;;;;-1:-1:-1;9583:40:0;;;;;;;;9231:35;;;;;;;;;;;;;;;;12189:81;;;;;;;;;;;;;:::i;13531:423::-;;;;;;;;;;-1:-1:-1;13531:423:0;;;;;:::i;:::-;;:::i;14682:144::-;;;;;;;;;;-1:-1:-1;14682:144:0;;;;;:::i;:::-;;:::i;15071:315::-;;;;;;;;;;-1:-1:-1;15071:315:0;;;;;:::i;:::-;;:::i;9644:31::-;;;;;;;;;;;;;;;;10086:53;;;;;;;;;;-1:-1:-1;10086:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12090:85;;;;;;;;;;-1:-1:-1;12161:10:0;12138:4;12153:19;;;:7;:19;;;;;;;;12090:85;;5265:137;;;;;;;;;;-1:-1:-1;5265:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;5372:18:0;;;5354:7;5372:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5265:137;9277:33;;;;;;;;;;;;;;;;9731:29;;;;;;;;;;;;;;;;13356:159;;;;;;;;;;;;;:::i;12286:81::-;;;;;;;;;;-1:-1:-1;12286:81:0;;;;;:::i;:::-;-1:-1:-1;;;;;12354:10:0;12340:4;12354:10;;;:7;:10;;;;;;;;;12286:81;2927:213;;;;;;;;;;-1:-1:-1;2927:213:0;;;;;:::i;:::-;;:::i;9321:24::-;;;;;;;;;;;;;;;;4754:86;4808:13;4832:5;4825:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4754:86;:::o;5611:179::-;5694:4;5715:37;5724:10;5736:7;5745:6;5715:8;:37::i;:::-;-1:-1:-1;5774:4:0;5611:179;;;;:::o;13982:245::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;;;;;;;;;14099:4:::1;14083:13;5117:12:::0;;;5038:94;14083:13:::1;:20;;;;:::i;:::-;14072:6;:32;;14064:92;;;::::0;-1:-1:-1;;;14064:92:0;;6488:2:1;14064:92:0::1;::::0;::::1;6470:21:1::0;6527:2;6507:18;;;6500:30;6566:34;6546:18;;;6539:62;-1:-1:-1;;;6617:18:1;;;6610:45;6672:19;;14064:92:0::1;6286:411:1::0;14064:92:0::1;14198:13;:6:::0;14207:4:::1;14198:13;:::i;:::-;14175:20;:36:::0;-1:-1:-1;13982:245:0:o;5802:520::-;-1:-1:-1;;;;;5957:19:0;;5909:4;5957:19;;;:11;:19;;;;;;;;5977:10;5957:31;;;;;;;;-1:-1:-1;;6007:37:0;;6003:231;;6093:6;6073:16;:26;;6065:79;;;;-1:-1:-1;;;6065:79:0;;7077:2:1;6065:79:0;;;7059:21:1;7116:2;7096:18;;;7089:30;7155:34;7135:18;;;7128:62;-1:-1:-1;;;7206:18:1;;;7199:38;7254:19;;6065:79:0;6875:404:1;6065:79:0;6163:55;6172:6;6180:10;6192:25;6211:6;6192:16;:25;:::i;:::-;6163:8;:55::i;:::-;6248:36;6258:6;6266:9;6277:6;6248:9;:36::i;:::-;-1:-1:-1;6306:4:0;;5802:520;-1:-1:-1;;;;5802:520:0:o;6334:223::-;6452:10;6422:4;6473:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6473:32:0;;;;;;;;;;6422:4;;6443:76;;6464:7;;6473:45;;6508:10;;6473:45;:::i;12401:80::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12464:10:0;;;::::1;;::::0;;;:7:::1;:10;::::0;;;;:14;;-1:-1:-1;;12464:14:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12401:80::o;12581:75::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12637:12:0;;;::::1;;::::0;;;:9:::1;:12;::::0;;;;:16;;-1:-1:-1;;12637:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12581:75::o;15414:162::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;15500:6:::1;15495:66;15516:4;:11;15512:1;:15;15495:66;;;15553:5;15536;:14;15542:4;15547:1;15542:7;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15536:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15536:14:0;:22;;-1:-1:-1;;15536:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15529:3;::::1;::::0;::::1;:::i;:::-;;;;15495:66;;;;15414:162:::0;:::o;2804:111::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;2873:30:::1;2900:1;2873:18;:30::i;:::-;2804:111::o:0;13195:145::-;13247:4;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;13272:14:0::1;:22:::0;;-1:-1:-1;;13272:22:0::1;::::0;;;13195:145;:::o;14506:160::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14604:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;14604:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14506:160::o;13020:151::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;13083:13:::1;:20:::0;;-1:-1:-1;;13083:20:0::1;;;::::0;;13136:19:::1;:15;13154:1;13136:19;:::i;:::-;13122:11;:33:::0;13020:151::o;4850:90::-;4906:13;4930:7;4923:14;;;;;:::i;12778:226::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;12887:13:::1;-1:-1:-1::0;;;;;12882:18:0::1;:1;-1:-1:-1::0;;;;;12882:18:0::1;;;12874:57;;;::::0;-1:-1:-1;;;12874:57:0;;8021:2:1;12874:57:0::1;::::0;::::1;8003:21:1::0;8060:2;8040:18;;;8033:30;8099:28;8079:18;;;8072:56;8145:18;;12874:57:0::1;7819:350:1::0;12874:57:0::1;-1:-1:-1::0;;;;;15684:7:0;;;;;;:4;:7;;;;;:15;;-1:-1:-1;;15684:15:0;;;;;;;15495:66:::1;15414:162:::0;:::o;6569:391::-;6722:10;6662:4;6710:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6710:32:0;;;;;;;;;;6765:35;;;;6757:85;;;;-1:-1:-1;;;6757:85:0;;8376:2:1;6757:85:0;;;8358:21:1;8415:2;8395:18;;;8388:30;8454:34;8434:18;;;8427:62;-1:-1:-1;;;8505:18:1;;;8498:35;8550:19;;6757:85:0;8174:401:1;6757:85:0;6857:65;6866:10;6878:7;6887:34;6906:15;6887:16;:34;:::i;6857:65::-;-1:-1:-1;6944:4:0;;6569:391;-1:-1:-1;;;6569:391:0:o;5414:185::-;5500:4;5521:40;5531:10;5543:9;5554:6;5521:9;:40::i;14842:205::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;14969:15:::1;::::0;14935:50:::1;::::0;-1:-1:-1;;;;;14969:15:0;;::::1;::::0;14935:50;::::1;::::0;::::1;::::0;14969:15:::1;::::0;14935:50:::1;15004:15;:27:::0;;-1:-1:-1;;;;;;15004:27:0::1;-1:-1:-1::0;;;;;15004:27:0;;;::::1;::::0;;;::::1;::::0;;14842:205::o;12495:72::-;22346:10;22336:21;;;;:9;:21;;;;;;;;22328:30;;;;;12670:92;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12733:22:0;;;::::1;;::::0;;;:19:::1;:22;::::0;;;;:26;;-1:-1:-1;;12733:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12670:92::o;14243:235::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;14367:4:::1;14347:13;5117:12:::0;;;5038:94;14347:13:::1;:17;::::0;14363:1:::1;14347:17;:::i;:::-;:24;;;;:::i;:::-;14336:6;:36;;14328:85;;;::::0;-1:-1:-1;;;14328:85:0;;8782:2:1;14328:85:0::1;::::0;::::1;8764:21:1::0;8821:2;8801:18;;;8794:30;8860:34;8840:18;;;8833:62;-1:-1:-1;;;8911:18:1;;;8904:34;8955:19;;14328:85:0::1;8580:400:1::0;14328:85:0::1;14444:18;:6:::0;14454:7:::1;14444:18;:::i;:::-;14432:9;:30:::0;-1:-1:-1;14243:235:0:o;12189:81::-;12229:7;12247:20;12256:10;12247:8;:20::i;:::-;12240:27;;12189:81;:::o;13531:423::-;13612:4;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;13674:6:::1;13658:13;5117:12:::0;;;5038:94;13658:13:::1;:22;;;;:::i;:::-;13645:9;:35;;13637:101;;;::::0;-1:-1:-1;;;13637:101:0;;9187:2:1;13637:101:0::1;::::0;::::1;9169:21:1::0;9226:2;9206:18;;;9199:30;9265:34;9245:18;;;9238:62;-1:-1:-1;;;9316:18:1;;;9309:51;9377:19;;13637:101:0::1;8985:417:1::0;13637:101:0::1;13798:4;13778:13;5117:12:::0;;;5038:94;13778:13:::1;:17;::::0;13794:1:::1;13778:17;:::i;:::-;:24;;;;:::i;:::-;13765:9;:37;;13757:102;;;::::0;-1:-1:-1;;;13757:102:0;;9609:2:1;13757:102:0::1;::::0;::::1;9591:21:1::0;9648:2;9628:18;;;9621:30;9687:34;9667:18;;;9660:62;-1:-1:-1;;;9738:18:1;;;9731:50;9798:19;;13757:102:0::1;9407:416:1::0;13757:102:0::1;-1:-1:-1::0;13878:18:0::1;:30:::0;;;13934:4:::1;3496:1;13531:423:::0;;;:::o;14682:144::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14775:28:0;;;::::1;;::::0;;;:20:::1;:28;::::0;;;;:35;;-1:-1:-1;;14775:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14682:144::o;15071:315::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;15154:6:::1;15149:222;15170:4;:11;15166:1;:15;15149:222;;;15226:13;-1:-1:-1::0;;;;;15215:24:0::1;:4;15220:1;15215:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;15215:24:0::1;;;:63;;;;;15262:15;-1:-1:-1::0;;;;;15243:35:0::1;:4;15248:1;15243:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;15243:35:0::1;;;15215:63;15211:141;;;15324:4;15307:5;:14;15313:4;15318:1;15313:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;15307:14:0::1;-1:-1:-1::0;;;;;15307:14:0::1;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15211:141;15183:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15149:222;;13356:159:::0;13416:4;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;13441:20:0::1;:28:::0;;-1:-1:-1;;13441:28:0::1;::::0;;;13356:159;:::o;2927:213::-;3434:10;3423:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;3423:7;-1:-1:-1;;;;;3423:21:0;;3415:66;;;;-1:-1:-1;;;3415:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3020:22:0;::::1;3012:73;;;::::0;-1:-1:-1;;;3012:73:0;;10030:2:1;3012:73:0::1;::::0;::::1;10012:21:1::0;10069:2;10049:18;;;10042:30;10108:34;10088:18;;;10081:62;-1:-1:-1;;;10159:18:1;;;10152:36;10205:19;;3012:73:0::1;9828:402:1::0;3012:73:0::1;3100:28;3119:8;3100:18;:28::i;:::-;2927:213:::0;:::o;8344:364::-;-1:-1:-1;;;;;8450:19:0;;8442:68;;;;-1:-1:-1;;;8442:68:0;;10437:2:1;8442:68:0;;;10419:21:1;10476:2;10456:18;;;10449:30;10515:34;10495:18;;;10488:62;-1:-1:-1;;;10566:18:1;;;10559:34;10610:19;;8442:68:0;10235:400:1;8442:68:0;-1:-1:-1;;;;;8533:21:0;;8525:68;;;;-1:-1:-1;;;8525:68:0;;10842:2:1;8525:68:0;;;10824:21:1;10881:2;10861:18;;;10854:30;10920:34;10900:18;;;10893:62;-1:-1:-1;;;10971:18:1;;;10964:32;11013:19;;8525:68:0;10640:398:1;8525:68:0;-1:-1:-1;;;;;8608:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8664:32;;2035:25:1;;;8664:32:0;;2008:18:1;8664:32:0;;;;;;;;8344:364;;;:::o;15718:4310::-;-1:-1:-1;;;;;15824:18:0;;15816:68;;;;-1:-1:-1;;;15816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15911:16:0;;15903:64;;;;-1:-1:-1;;;15903:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15995:11:0;;;;;;:5;:11;;;;;;;;15994:12;15986:106;;;;-1:-1:-1;;;15986:106:0;;12055:2:1;15986:106:0;;;12037:21:1;12094:2;12074:18;;;12067:30;12133:34;12113:18;;;12106:62;12204:34;12184:18;;;12177:62;-1:-1:-1;;;12255:19:1;;;12248:48;12313:19;;15986:106:0;11853:485:1;15986:106:0;-1:-1:-1;;;;;16114:13:0;;;;;;:9;:13;;;;;;;;;:32;;-1:-1:-1;;;;;;16131:15:0;;;;;;:9;:15;;;;;;;;16114:32;16111:82;;;16149:33;16165:4;16171:2;16175:6;16149:15;:33::i;:::-;15718:4310;;;:::o;16111:82::-;16214:11;16211:57;;16229:28;16245:4;16251:2;16255:1;16229:15;:28::i;16211:57::-;16307:11;;16289:15;:29;16286:55;;;-1:-1:-1;;;;;16322:9:0;;;;;;:5;:9;;;;;:16;;-1:-1:-1;;16322:16:0;16334:4;16322:16;;;16286:55;16364:14;;;;16361:1630;;;2783:6;;-1:-1:-1;;;;;16406:15:0;;;2783:6;;16406:15;;;;:32;;-1:-1:-1;2783:6:0;;-1:-1:-1;;;;;16425:13:0;;;2783:6;;16425:13;;16406:32;:52;;;;-1:-1:-1;;;;;;16442:16:0;;;;16406:52;:77;;;;-1:-1:-1;;;;;;16462:21:0;;16476:6;16462:21;;16406:77;:91;;;;-1:-1:-1;16488:9:0;;-1:-1:-1;;;16488:9:0;;;;16487:10;16406:91;16403:1569;;;16530:13;;;;;;;16526:111;;-1:-1:-1;;;;;16555:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;16584:23:0;;;;;;:19;:23;;;;;;;;16555:52;16547:87;;;;-1:-1:-1;;;16547:87:0;;12545:2:1;16547:87:0;;;12527:21:1;12584:2;12564:18;;;12557:30;-1:-1:-1;;;12603:18:1;;;12596:52;12665:18;;16547:87:0;12343:346:1;16547:87:0;16672:20;;;;16669:384;;;2783:6;;-1:-1:-1;;;;;16727:13:0;;;2783:6;;16727:13;;;;:47;;;16758:15;-1:-1:-1;;;;;16744:30:0;:2;-1:-1:-1;;;;;16744:30:0;;;16727:47;:79;;;;;16792:13;-1:-1:-1;;;;;16778:28:0;:2;-1:-1:-1;;;;;16778:28:0;;;16727:79;16724:302;;;16879:9;16850:39;;;;:28;:39;;;;;;16892:12;-1:-1:-1;16842:63:0;;;;;;16969:9;16940:39;;;;:28;:39;;;;;16982:12;16940:54;;16724:302;-1:-1:-1;;;;;17143:10:0;;;;;;:4;:10;;;;;;;;:50;;;;-1:-1:-1;;;;;;17158:35:0;;;;;;:31;:35;;;;;;;;17157:36;17143:50;17140:809;;;17244:20;;17234:6;:30;;17226:96;;;;-1:-1:-1;;;17226:96:0;;12896:2:1;17226:96:0;;;12878:21:1;12935:2;12915:18;;;12908:30;12974:34;12954:18;;;12947:62;-1:-1:-1;;;13025:18:1;;;13018:51;13086:19;;17226:96:0;12694:417:1;17226:96:0;17387:9;;-1:-1:-1;;;;;5234:18:0;;5216:7;5234:18;;;;;;;;;;;17361:22;;:6;:22;:::i;:::-;:35;;17353:67;;;;-1:-1:-1;;;17353:67:0;;13318:2:1;17353:67:0;;;13300:21:1;13357:2;13337:18;;;13330:30;-1:-1:-1;;;13376:18:1;;;13369:49;13435:18;;17353:67:0;13116:343:1;17353:67:0;17140:809;;;-1:-1:-1;;;;;17544:8:0;;;;;;:4;:8;;;;;;;;:50;;;;-1:-1:-1;;;;;;17557:37:0;;;;;;:31;:37;;;;;;;;17556:38;17544:50;17541:408;;;17645:20;;17635:6;:30;;17627:97;;;;-1:-1:-1;;;17627:97:0;;13666:2:1;17627:97:0;;;13648:21:1;13705:2;13685:18;;;13678:30;13744:34;13724:18;;;13717:62;-1:-1:-1;;;13795:18:1;;;13788:52;13857:19;;17627:97:0;13464:418:1;17541:408:0;-1:-1:-1;;;;;17787:35:0;;;;;;:31;:35;;;;;;;;17783:166;;17888:9;;-1:-1:-1;;;;;5234:18:0;;5216:7;5234:18;;;;;;;;;;;17862:22;;:6;:22;:::i;:::-;:35;;17854:67;;;;-1:-1:-1;;;17854:67:0;;13318:2:1;17854:67:0;;;13300:21:1;13357:2;13337:18;;;13330:30;-1:-1:-1;;;13376:18:1;;;13369:49;13435:18;;17854:67:0;13116:343:1;17854:67:0;18076:4;18027:28;5234:18;;;;;;;;;;;18140;;18116:42;;;;;;;18182:21;;-1:-1:-1;18194:9:0;;-1:-1:-1;;;18194:9:0;;;;18193:10;18182:21;:36;;;;-1:-1:-1;;;;;;18208:10:0;;;;;;:4;:10;;;;;;;;18207:11;18182:36;:66;;;;-1:-1:-1;;;;;;18223:25:0;;;;;;:19;:25;;;;;;;;18222:26;18182:66;:94;;;;-1:-1:-1;;;;;;18253:23:0;;;;;;:19;:23;;;;;;;;18252:24;18182:94;18179:231;;;18301:9;:16;;-1:-1:-1;;;;18301:16:0;-1:-1:-1;;;18301:16:0;;;18340:10;:8;:10::i;:::-;18373:9;:17;;-1:-1:-1;;;;18373:17:0;;;18179:231;18446:9;;-1:-1:-1;;;;;18479:25:0;;18430:12;18479:25;;;:19;:25;;;;;;18446:9;-1:-1:-1;;;18446:9:0;;;;;18445:10;;18479:25;;:52;;-1:-1:-1;;;;;;18508:23:0;;;;;;:19;:23;;;;;;;;18479:52;18476:72;;;-1:-1:-1;18543:5:0;18476:72;18585:15;18623:16;18683:7;18680:1011;;;-1:-1:-1;;;;;18729:8:0;;;;;;:4;:8;;;;;;;;:29;;;;;18757:1;18741:13;;:17;18729:29;18726:946;;;18786:6;:14;;-1:-1:-1;;;;18786:14:0;;;18795:5;18839:14;18848:4;18839:8;:14::i;:::-;18827:26;-1:-1:-1;18906:3:0;18892:10;18827:26;18892:6;:10;:::i;:::-;18891:18;;;;:::i;:::-;18880:29;-1:-1:-1;18974:3:0;18958:13;18880:29;18969:2;18958:13;:::i;:::-;:19;;;;:::i;:::-;18936:18;;:41;;;;;;;:::i;:::-;;;;-1:-1:-1;;19032:18:0;;19021:29;;:8;:29;:::i;:::-;19004:13;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;19077:46:0;;-1:-1:-1;19093:4:0;19107;19114:8;19077:15;:46::i;:::-;19150:35;19164:4;19171:13;;19150:5;:35::i;:::-;19228:1;19212:13;:17;19256:18;19266:8;19256:18;;:::i;:::-;;;18759:539;18726:946;;;-1:-1:-1;;;;;19338:10:0;;;;;;:4;:10;;;;;;;;:30;;;;;19367:1;19352:12;;:16;19338:30;19335:337;;;19397:6;:13;;-1:-1:-1;;;;19397:13:0;-1:-1:-1;;;19397:13:0;;;19457:12;;19473:3;;19448:21;;:6;:21;:::i;:::-;19447:29;;;;:::i;:::-;19437:39;;19525:7;19503:18;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;19559:45:0;;-1:-1:-1;19575:4:0;19589;19596:7;19559:15;:45::i;:::-;19631:17;19641:7;19631:17;;:::i;:::-;;;19335:337;-1:-1:-1;;;;;19731:10:0;;;;;;:4;:10;;;;;;;;19728:47;;;-1:-1:-1;;;;;19744:10:0;;;;;;:6;:10;;;;;19757:15;19744:28;;19728:47;-1:-1:-1;;;;;19796:8:0;;;;;;:4;:8;;;;;;;;19793:150;;;-1:-1:-1;;;;;19828:12:0;;;;;;:6;:12;;;;;;;;19843:15;19828:30;;19884:7;:13;;;;;;;;19881:43;;;-1:-1:-1;;;;;19900:13:0;;19916:5;19900:13;;;:7;:13;;;;;:21;;-1:-1:-1;;19900:21:0;;;19881:43;19979:33;19995:4;20001:2;20005:6;19979:15;:33::i;:::-;15797:4231;;;;;15718:4310;;;:::o;3152:207::-;3249:6;;;-1:-1:-1;;;;;3270:17:0;;;-1:-1:-1;;;;;;3270:17:0;;;;;;;3307:40;;3249:6;;;3270:17;3249:6;;3307:40;;3230:16;;3307:40;3215:144;3152:207;:::o;20044:325::-;-1:-1:-1;;;;;20126:10:0;;20096:7;20126:10;;;:7;:10;;;;;;;;20123:231;;;-1:-1:-1;20146:1:0;;20044:325;-1:-1:-1;20044:325:0:o;20123:231::-;-1:-1:-1;;;;;20228:9:0;;20195:12;20228:9;;;:6;:9;;;;;;20210:27;;:15;:27;:::i;:::-;20195:42;;20272:4;;20279:1;20272:8;;;;:::i;:::-;20263:4;:18;20260:75;;-1:-1:-1;20291:1:0;;20044:325;-1:-1:-1;;20044:325:0:o;20260:75::-;-1:-1:-1;20330:2:0;;20044:325;-1:-1:-1;;20044:325:0:o;20260:75::-;20172:182;20044:325;;;:::o;6972:572::-;-1:-1:-1;;;;;7082:20:0;;7074:70;;;;-1:-1:-1;;;7074:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7167:23:0;;7159:71;;;;-1:-1:-1;;;7159:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7269:17:0;;7245:21;7269:17;;;;;;;;;;;7309:23;;;;7301:74;;;;-1:-1:-1;;;7301:74:0;;14089:2:1;7301:74:0;;;14071:21:1;14128:2;14108:18;;;14101:30;14167:34;14147:18;;;14140:62;-1:-1:-1;;;14218:18:1;;;14211:36;14264:19;;7301:74:0;13887:402:1;7301:74:0;7410:22;7426:6;7410:13;:22;:::i;:::-;-1:-1:-1;;;;;7390:17:0;;;:9;:17;;;;;;;;;;;:42;;;;7447:20;;;;;;;;:30;;7471:6;;7390:9;7447:30;;7471:6;;7447:30;:::i;:::-;;;;;;;;7514:9;-1:-1:-1;;;;;7497:35:0;7506:6;-1:-1:-1;;;;;7497:35:0;;7525:6;7497:35;;;;2035:25:1;;2023:2;2008:18;;1889:177;7497:35:0;;;;;;;;7059:485;6972:572;;;:::o;21450:845::-;21541:4;21497:23;5234:18;;;;;;;;;;;;;21597:34;;21623:7;;21450:845::o;21597:34::-;21670:18;;:23;;21691:2;21670:23;:::i;:::-;21652:15;:41;21649:91;;;21714:18;;:23;;21735:2;21714:23;:::i;:::-;21696:41;;21649:91;21758:15;21776:19;21794:1;21776:15;:19;:::i;:::-;21758:37;-1:-1:-1;21829:21:0;21871:44;21889:25;21758:37;21889:15;:25;:::i;:::-;21871:17;:44::i;:::-;21937:13;21953:28;21977:4;21953:21;:28;:::i;:::-;21937:44;-1:-1:-1;22008:10:0;22000:47;;;;-1:-1:-1;;;22000:47:0;;14496:2:1;22000:47:0;;;14478:21:1;14535:2;14515:18;;;14508:30;14574:26;14554:18;;;14547:54;14618:18;;22000:47:0;14294:348:1;22000:47:0;22066:13;22082:9;22090:1;22082:5;:9;:::i;:::-;22066:25;;22112:29;22126:7;22135:5;22112:13;:29::i;:::-;22183:1;22162:18;:22;;;22224:15;;22216:63;;-1:-1:-1;;;;;22224:15:0;;;;22253:21;;22216:63;;22183:1;22216:63;22253:21;22224:15;22216:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;21450:845:0:o;7862:470::-;-1:-1:-1;;;;;7950:21:0;;7942:67;;;;-1:-1:-1;;;7942:67:0;;15059:2:1;7942:67:0;;;15041:21:1;15098:2;15078:18;;;15071:30;15137:34;15117:18;;;15110:62;-1:-1:-1;;;15188:18:1;;;15181:31;15229:19;;7942:67:0;14857:397:1;7942:67:0;-1:-1:-1;;;;;8049:18:0;;8024:22;8049:18;;;;;;;;;;;8090:24;;;;8082:71;;;;-1:-1:-1;;;8082:71:0;;15461:2:1;8082:71:0;;;15443:21:1;15500:2;15480:18;;;15473:30;15539:34;15519:18;;;15512:62;-1:-1:-1;;;15590:18:1;;;15583:32;15632:19;;8082:71:0;15259:398:1;8082:71:0;8189:23;8206:6;8189:14;:23;:::i;:::-;-1:-1:-1;;;;;8168:18:0;;:9;:18;;;;;;;;;;:44;8242:12;;:21;;8257:6;;8242:21;:::i;:::-;8227:12;:36;8283:37;;2035:25:1;;;8309:1:0;;-1:-1:-1;;;;;8283:37:0;;;;;2023:2:1;2008:18;8283:37:0;1889:177:1;20385:578:0;20484:16;;;20498:1;20484:16;;;;;;;;20460:21;;20484:16;;;;;;;;;;-1:-1:-1;20484:16:0;20460:40;;20541:4;20523;20528:1;20523:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20523:23:0;;;-1:-1:-1;;;;;20523:23:0;;;;;20579:15;-1:-1:-1;;;;;20579:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20569:4;20574:1;20569:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;20569:32:0;;;-1:-1:-1;;;;;20569:32:0;;;;;20620:62;20637:4;20652:15;20670:11;20620:8;:62::i;:::-;20703:244;;-1:-1:-1;;;20703:244:0;;-1:-1:-1;;;;;20703:15:0;:66;;;;:244;;20792:11;;20826:1;;20850:4;;20885;;20913:15;;20703:244;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20441:522;20385:578;:::o;20991:443::-;21081:62;21098:4;21113:15;21131:11;21081:8;:62::i;:::-;21164:15;-1:-1:-1;;;;;21164:31:0;;21203:9;21244:4;21272:11;21306:1;21330;21354:7;2783:6;;-1:-1:-1;;;;;2783:6:0;;2719:73;21354:7;21164:254;;;;;;-1:-1:-1;;;;;;21164:254:0;;;-1:-1:-1;;;;;17262:15:1;;;21164:254:0;;;17244:34:1;17294:18;;;17287:34;;;;17337:18;;;17330:34;;;;17380:18;;;17373:34;17444:15;;;17423:19;;;17416:44;21384:15:0;17476:19:1;;;17469:35;17178:19;;21164:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20991:443;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1403:247::-;1462:6;1515:2;1503:9;1494:7;1490:23;1486:32;1483:52;;;1531:1;1528;1521:12;1483:52;1570:9;1557:23;1589:31;1614:5;1589:31;:::i;:::-;1639:5;1403:247;-1:-1:-1;;;1403:247:1:o;2071:180::-;2130:6;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;-1:-1:-1;2222:23:1;;2071:180;-1:-1:-1;2071:180:1:o;2256:456::-;2333:6;2341;2349;2402:2;2390:9;2381:7;2377:23;2373:32;2370:52;;;2418:1;2415;2408:12;2370:52;2457:9;2444:23;2476:31;2501:5;2476:31;:::i;:::-;2526:5;-1:-1:-1;2583:2:1;2568:18;;2555:32;2596:33;2555:32;2596:33;:::i;:::-;2256:456;;2648:7;;-1:-1:-1;;;2702:2:1;2687:18;;;;2674:32;;2256:456::o;3114:416::-;3179:6;3187;3240:2;3228:9;3219:7;3215:23;3211:32;3208:52;;;3256:1;3253;3246:12;3208:52;3295:9;3282:23;3314:31;3339:5;3314:31;:::i;:::-;3364:5;-1:-1:-1;3421:2:1;3406:18;;3393:32;3463:15;;3456:23;3444:36;;3434:64;;3494:1;3491;3484:12;3434:64;3517:7;3507:17;;;3114:416;;;;;:::o;3535:127::-;3596:10;3591:3;3587:20;3584:1;3577:31;3627:4;3624:1;3617:15;3651:4;3648:1;3641:15;3667:1121;3751:6;3782:2;3825;3813:9;3804:7;3800:23;3796:32;3793:52;;;3841:1;3838;3831:12;3793:52;3881:9;3868:23;3910:18;3951:2;3943:6;3940:14;3937:34;;;3967:1;3964;3957:12;3937:34;4005:6;3994:9;3990:22;3980:32;;4050:7;4043:4;4039:2;4035:13;4031:27;4021:55;;4072:1;4069;4062:12;4021:55;4108:2;4095:16;4130:2;4126;4123:10;4120:36;;;4136:18;;:::i;:::-;4182:2;4179:1;4175:10;4214:2;4208:9;4277:2;4273:7;4268:2;4264;4260:11;4256:25;4248:6;4244:38;4332:6;4320:10;4317:22;4312:2;4300:10;4297:18;4294:46;4291:72;;;4343:18;;:::i;:::-;4379:2;4372:22;4429:18;;;4463:15;;;;-1:-1:-1;4505:11:1;;;4501:20;;;4533:19;;;4530:39;;;4565:1;4562;4555:12;4530:39;4589:11;;;;4609:148;4625:6;4620:3;4617:15;4609:148;;;4691:23;4710:3;4691:23;:::i;:::-;4679:36;;4642:12;;;;4735;;;;4609:148;;;4776:6;3667:1121;-1:-1:-1;;;;;;;;3667:1121:1:o;4793:388::-;4861:6;4869;4922:2;4910:9;4901:7;4897:23;4893:32;4890:52;;;4938:1;4935;4928:12;4890:52;4977:9;4964:23;4996:31;5021:5;4996:31;:::i;:::-;5046:5;-1:-1:-1;5103:2:1;5088:18;;5075:32;5116:33;5075:32;5116:33;:::i;5186:380::-;5265:1;5261:12;;;;5308;;;5329:61;;5383:4;5375:6;5371:17;5361:27;;5329:61;5436:2;5428:6;5425:14;5405:18;5402:38;5399:161;;;5482:10;5477:3;5473:20;5470:1;5463:31;5517:4;5514:1;5507:15;5545:4;5542:1;5535:15;5571:356;5773:2;5755:21;;;5792:18;;;5785:30;5851:34;5846:2;5831:18;;5824:62;5918:2;5903:18;;5571:356::o;5932:127::-;5993:10;5988:3;5984:20;5981:1;5974:31;6024:4;6021:1;6014:15;6048:4;6045:1;6038:15;6064:217;6104:1;6130;6120:132;;6174:10;6169:3;6165:20;6162:1;6155:31;6209:4;6206:1;6199:15;6237:4;6234:1;6227:15;6120:132;-1:-1:-1;6266:9:1;;6064:217::o;6702:168::-;6742:7;6808:1;6804;6800:6;6796:14;6793:1;6790:21;6785:1;6778:9;6771:17;6767:45;6764:71;;;6815:18;;:::i;:::-;-1:-1:-1;6855:9:1;;6702:168::o;7284:125::-;7324:4;7352:1;7349;7346:8;7343:34;;;7357:18;;:::i;:::-;-1:-1:-1;7394:9:1;;7284:125::o;7414:128::-;7454:3;7485:1;7481:6;7478:1;7475:13;7472:39;;;7491:18;;:::i;:::-;-1:-1:-1;7527:9:1;;7414:128::o;7547:127::-;7608:10;7603:3;7599:20;7596:1;7589:31;7639:4;7636:1;7629:15;7663:4;7660:1;7653:15;7679:135;7718:3;-1:-1:-1;;7739:17:1;;7736:43;;;7759:18;;:::i;:::-;-1:-1:-1;7806:1:1;7795:13;;7679:135::o;11043:401::-;11245:2;11227:21;;;11284:2;11264:18;;;11257:30;11323:34;11318:2;11303:18;;11296:62;-1:-1:-1;;;11389:2:1;11374:18;;11367:35;11434:3;11419:19;;11043:401::o;11449:399::-;11651:2;11633:21;;;11690:2;11670:18;;;11663:30;11729:34;11724:2;11709:18;;11702:62;-1:-1:-1;;;11795:2:1;11780:18;;11773:33;11838:3;11823:19;;11449:399::o;15662:251::-;15732:6;15785:2;15773:9;15764:7;15760:23;15756:32;15753:52;;;15801:1;15798;15791:12;15753:52;15833:9;15827:16;15852:31;15877:5;15852:31;:::i;15918:980::-;16180:4;16228:3;16217:9;16213:19;16259:6;16248:9;16241:25;16285:2;16323:6;16318:2;16307:9;16303:18;16296:34;16366:3;16361:2;16350:9;16346:18;16339:31;16390:6;16425;16419:13;16456:6;16448;16441:22;16494:3;16483:9;16479:19;16472:26;;16533:2;16525:6;16521:15;16507:29;;16554:1;16564:195;16578:6;16575:1;16572:13;16564:195;;;16643:13;;-1:-1:-1;;;;;16639:39:1;16627:52;;16734:15;;;;16699:12;;;;16675:1;16593:9;16564:195;;;-1:-1:-1;;;;;;;16815:32:1;;;;16810:2;16795:18;;16788:60;-1:-1:-1;;;16879:3:1;16864:19;16857:35;16776:3;15918:980;-1:-1:-1;;;15918:980:1:o;17515:306::-;17603:6;17611;17619;17672:2;17660:9;17651:7;17647:23;17643:32;17640:52;;;17688:1;17685;17678:12;17640:52;17717:9;17711:16;17701:26;;17767:2;17756:9;17752:18;17746:25;17736:35;;17811:2;17800:9;17796:18;17790:25;17780:35;;17515:306;;;;;:::o

Swarm Source

ipfs://e4e1cb498384fea09baf5bf6bf749cb213e0c2eef246eed6651c42d67ebf3667

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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