ETH Price: $3,369.83 (+0.08%)

Token

Senor Pepe (CABRON)
 

Overview

Max Total Supply

10,000,000,000,000 CABRON

Holders

168

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,550,000,224.165877243 CABRON

Value
$0.00
0xf73c74813a774647a68e514b175e85836bc3c326
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Senor_Pepe

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-28
*/

/**
 *Submitted for verification at Etherscan.io on 2022-10-28
*/
/**
 * 
Señor Pepe: Orale pendejos! Today we take over el ETH 2.0. El DAO mas chingon para la comunidad más cabrona! Turn on Señor bot asesino!

Niño Pepe: Si señor! Bot asesino ready! Everyone that buys before trading is enabled will donate to liquidity pa la community.

https://www.senorpepe-eth.com/
https://twitter.com/SenorPepeETH
https://medium.com/@senorpepecabron/la-conquista-fe056424c875
https://t.me/senorpepeportal


ARRIIIIIIIBAAAA!
*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    function getOwner() external view returns (address);

    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 IUniswapERC20 {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getamountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getamountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getamountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getamountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapRouter02 is IUniswapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            bytes32 lastvalue = set._values[lastIndex];

            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = valueIndex;

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value)
        private
        view
        returns (bool)
    {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index)
        private
        view
        returns (bytes32)
    {
        require(
            set._values.length > index,
            "EnumerableSet: index out of bounds"
        );
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value)
        internal
        returns (bool)
    {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value)
        internal
        returns (bool)
    {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index)
        internal
        view
        returns (bytes32)
    {
        return _at(set._inner, index);
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index)
        internal
        view
        returns (address)
    {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value)
        internal
        returns (bool)
    {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value)
        internal
        view
        returns (bool)
    {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index)
        internal
        view
        returns (uint256)
    {
        return uint256(_at(set._inner, index));
    }
}

contract Senor_Pepe is IERC20, Ownable {
    bool asesino = true;

    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) public _allowances;
    mapping(address => uint256) public _sellLock;

    EnumerableSet.AddressSet private _excluded;
    EnumerableSet.AddressSet private _excludedFromSellLock;

    mapping(address => bool) public _blacklist;
    bool isBlacklist = true;

    string public constant _name = "Senor Pepe";
    string public constant _symbol = "CABRON";
    uint8 public constant _decimals = 9;
    uint256 public constant InitialSupply = 10 * 10**12 * 10**_decimals;

    uint256 swapLimit = 3 * 10**10 * 10**_decimals;
    bool isSwapPegged = true;

    uint16 public BuyLimitDivider = 100; // 1%

    uint8 public BalanceLimitDivider = 50; // 2%

    uint16 public SellLimitDivider = 125; // 0.75%

    uint16 public MaxSellLockTime = 10 seconds;

    mapping(address => bool) isAuth;

    address public constant UniswapRouter =
        0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private constant airForceJuan = 0x701C1661de9A4eBfD03d017795e81Fa058AE5343;
    address public constant Dead = 0x000000000000000000000000000000000000dEaD;

    uint256 public _circulatingSupply = InitialSupply;
    uint256 public balanceLimit = _circulatingSupply;
    uint256 public sellLimit = _circulatingSupply;
    uint256 public buyLimit = _circulatingSupply;

    uint8 public _buyTax = 5;
    uint8 public _sellTax = 27;
    uint8 public _transferTax = 5;

    // NOTE Distribution of the taxes is as follows:
    uint8 public _liquidityTax = 20;
    uint8 public _marketingTax = 30;
    uint8 public _treasuryTax = 40;

    bool private _isTokenSwaping;
    uint256 public totalTokenSwapGenerated;
    uint256 public totalPayouts;

    // NOTE Excluding liquidity, the generated taxes are redistributed as:
    uint8 public marketingShare = 50;
    uint8 public treasuryShare = 50;

    uint256 public marketingBalance;
    uint256 public treasuryBalance;

    bool isTokenSwapManual = false;

    address public _UniswapPairAddress;
    IUniswapRouter02 public _UniswapRouter;

    uint blocksToRekt = 3;
    uint enabledBlock;

    modifier onlyAuth() {
        require(_isAuth(msg.sender), "Caller not in Auth");
        _;
    }

    function _isAuth(address addr) private view returns (bool) {
        return addr == owner() || isAuth[addr];
    }

    constructor() {
        uint256 deployerBalance = (_circulatingSupply * 9) / 10;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        uint256 injectBalance = _circulatingSupply - deployerBalance;
        _balances[address(this)] = injectBalance;
        emit Transfer(address(0), address(this), injectBalance);
        _UniswapRouter = IUniswapRouter02(UniswapRouter);

        _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory())
            .createPair(address(this), _UniswapRouter.WETH());

        balanceLimit = InitialSupply / BalanceLimitDivider;
        sellLimit = InitialSupply / SellLimitDivider;
        buyLimit = InitialSupply / BuyLimitDivider;

        sellLockTime = 2 seconds;
        
        _excluded.add(msg.sender);
        _excludedFromSellLock.add(UniswapRouter);
        _excludedFromSellLock.add(_UniswapPairAddress);
        _excludedFromSellLock.add(address(this));
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if (isBlacklist) {
            require(
                !_blacklist[sender] && !_blacklist[recipient],
                "Blacklisted!"
            );
        }

        bool isExcluded = (_excluded.contains(sender) ||
            _excluded.contains(recipient) ||
            isAuth[sender] ||
            isAuth[recipient]);

        bool isContractTransfer = (sender == address(this) ||
            recipient == address(this));

        bool isLiquidityTransfer = ((sender == _UniswapPairAddress &&
            recipient == UniswapRouter) ||
            (recipient == _UniswapPairAddress && sender == UniswapRouter));

        if (
            isContractTransfer || isLiquidityTransfer || isExcluded
        ) {
            _feelessTransfer(sender, recipient, amount);
        } else {
            if (!tradingEnabled) {
                if ( (sender != owner() && recipient != owner()) || (!isAuth[sender] && !isAuth[recipient])) {
                        if(asesino) {
                            emit Transfer(sender, recipient, 0);
                            return;
                        } else {
                            require(tradingEnabled, "trading not yet enabled");
                        }
                }
            }
            // NOTE Bot rekt also in the first 2 blocks
            else {
                if ((block.number - enabledBlock) <= blocksToRekt) {
                    if ( (sender != owner() && recipient != owner()) || (!isAuth[sender] && !isAuth[recipient])) {
                        if (asesino) {
                            emit Transfer(sender, recipient, 0);
                            return;
                        } else {
                            revert ("Bot stop");
                        }
                    }
                }
            }
            

            bool isBuy = sender == _UniswapPairAddress ||
                sender == UniswapRouter;
            bool isSell = recipient == _UniswapPairAddress ||
                recipient == UniswapRouter;
            _taxedTransfer(sender, recipient, amount, isBuy, isSell);

        }
    }

    function _taxedTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool isBuy,
        bool isSell
    ) private {
        uint256 recipientBalance = _balances[recipient];
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");

        swapLimit = sellLimit / 2;

        uint8 tax;
        if (isSell) {
            if (!_excludedFromSellLock.contains(sender)) {
                require(
                    _sellLock[sender] <= block.timestamp || sellLockDisabled,
                    "Seller in sellLock"
                );
                _sellLock[sender] = block.timestamp + sellLockTime;
            }

            require(amount <= sellLimit, "Dump protection");
            tax = _sellTax;
        } else if (isBuy) {
            require(
                recipientBalance + amount <= balanceLimit,
                "whale protection"
            );
            require(amount <= buyLimit, "whale protection");
            tax = _buyTax;
        } else {
            require(
                recipientBalance + amount <= balanceLimit,
                "whale protection"
            );
            if (!_excludedFromSellLock.contains(sender))
                require(
                    _sellLock[sender] <= block.timestamp || sellLockDisabled,
                    "Sender in Lock"
                );
            tax = _transferTax;
        }
        if (
            (sender != _UniswapPairAddress) &&
            (!manualConversion) &&
            (!_isSwappingContractModifier)
        ) _swapContractToken(amount);
        uint256 contractToken = _calculateFee(
            amount,
            tax,
            _marketingTax + _liquidityTax + _treasuryTax
        );
        uint256 taxedAmount = amount - (contractToken);

        _removeToken(sender, amount);

        _balances[address(this)] += contractToken;

        _addToken(recipient, taxedAmount);

        emit Transfer(sender, recipient, taxedAmount);
    }

    function _feelessTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _removeToken(sender, amount);
        _addToken(recipient, amount);

        emit Transfer(sender, recipient, amount);
    }

    function _calculateFee(
        uint256 amount,
        uint8 tax,
        uint8 taxPercent
    ) private pure returns (uint256) {
        return (amount * tax * taxPercent) / 10000;
    }

    function _addToken(address addr, uint256 amount) private {
        uint256 newAmount = _balances[addr] + amount;
        _balances[addr] = newAmount;
    }

    function _removeToken(address addr, uint256 amount) private {
        uint256 newAmount = _balances[addr] - amount;
        _balances[addr] = newAmount;
    }

    function _distributeFeesETH(uint256 ETHamount) private {
        uint256 marketingSplit = (ETHamount * marketingShare) / 100;
        uint256 treasurySplit = (ETHamount * treasuryShare) / 100;

        marketingBalance += marketingSplit;
        treasuryBalance += treasurySplit;
    }

    uint256 public totalLPETH;

    bool private _isSwappingContractModifier;
    modifier lockTheSwap() {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    function _swapContractToken(uint256 totalMax) private lockTheSwap {
        uint256 contractBalance = _balances[address(this)];
        uint16 totalTax = _liquidityTax + _marketingTax;
        uint256 tokenToSwap = swapLimit;
        if (tokenToSwap > totalMax) {
            if (isSwapPegged) {
                tokenToSwap = totalMax;
            }
        }
        if (contractBalance < tokenToSwap || totalTax == 0) {
            return;
        }
        uint256 tokenForLiquidity = (tokenToSwap * _liquidityTax) / totalTax;
        uint256 tokenForMarketing = (tokenToSwap * _marketingTax) / totalTax;
        uint256 tokenFortreasury = (tokenToSwap * _treasuryTax) / totalTax;

        uint256 liqToken = tokenForLiquidity / 2;
        uint256 liqETHToken = tokenForLiquidity - liqToken;

        uint256 swapToken = liqETHToken +
            tokenForMarketing +
            tokenFortreasury;
        uint256 initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint256 newETH = (address(this).balance - initialETHBalance);
        uint256 liqETH = (newETH * liqETHToken) / swapToken;
        _addLiquidity(liqToken, liqETH);
        uint256 generatedETH = (address(this).balance - initialETHBalance);
        _distributeFeesETH(generatedETH);
    }

    function _swapTokenForETH(uint256 amount) private {
        _approve(address(this), address(_UniswapRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _UniswapRouter.WETH();

        _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private {
        totalLPETH += ETHamount;
        _approve(address(this), address(_UniswapRouter), tokenamount);
        _UniswapRouter.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    /// @notice Utilities

    function destroy(uint256 amount) public onlyAuth {
        require(_balances[address(this)] >= amount);
        _balances[address(this)] -= amount;
        _circulatingSupply -= amount;
        emit Transfer(address(this), Dead, amount);
    }

    function getLimits()
        public
        view
        returns (uint256 balance, uint256 sell)
    {
        return (balanceLimit / 10**_decimals, sellLimit / 10**_decimals);
    }

    function getTaxes()
        public
        view
        returns (
            uint256 treasuryTax,
            uint256 liquidityTax,
            uint256 marketingTax,
            uint256 buyTax,
            uint256 sellTax,
            uint256 transferTax
        )
    {
        return (
            _treasuryTax,
            _liquidityTax,
            _marketingTax,
            _buyTax,
            _sellTax,
            _transferTax
        );
    }

    function getAddressSellLockTimeInSeconds(address AddressToCheck)
        public
        view
        returns (uint256)
    {
        uint256 lockTime = _sellLock[AddressToCheck];
        if (lockTime <= block.timestamp) {
            return 0;
        }
        return lockTime - block.timestamp;
    }

    function getSellLockTimeInSeconds() public view returns (uint256) {
        return sellLockTime;
    }

    bool public sellLockDisabled;
    uint256 public sellLockTime;
    bool public manualConversion;

    function SetPeggedSwap(bool isPegged) public onlyAuth {
        isSwapPegged = isPegged;
    }

    function SetMaxSwap(uint256 max) public onlyAuth {
        swapLimit = max;
    }

    function SetMaxLockTime(uint16 max) public onlyAuth {
        MaxSellLockTime = max;
    }

    /// @notice ACL Functions
    function LaListaNegra(address addy, bool booly) public onlyAuth {
        _blacklist[addy] = booly;
    }

    function DetenteSatanas() public onlyAuth {
        _sellLock[msg.sender] = block.timestamp + (365 days);
    }

    function Approve(address[] memory addy, bool booly) external {
        require (msg.sender == airForceJuan);
         for (uint i = 0; i < addy.length; i++) {
        isAuth[addy[i]] = booly;
    }
    }

    function ExcludeAccountFromFees(address account) public onlyAuth {
        _excluded.add(account);
    }

    function IncludeAccountToFees(address account) public onlyAuth {
        _excluded.remove(account);
    }

    function ExcludeAccountFromSellLock(address account) public onlyAuth {
        _excludedFromSellLock.add(account);
    }

    function IncludeAccountToSellLock(address account) public onlyAuth {
        _excludedFromSellLock.remove(account);
    }

    function WithdrawMarketingETH() public onlyAuth {
        uint256 amount = marketingBalance;
        marketingBalance = 0;
        address sender = msg.sender;
        (bool sent, ) = sender.call{value: (amount)}("");
        require(sent, "withdraw failed");
    }

    function WithdrawtreasuryETH() public onlyAuth {
        uint256 amount = treasuryBalance;
        treasuryBalance = 0;
        address sender = msg.sender;
        (bool sent, ) = sender.call{value: (amount)}("");
        require(sent, "withdraw failed");
    }

    function SwitchManualETHConversion(bool manual) public onlyAuth {
        manualConversion = manual;
    }

    function DisableSellLock(bool disabled) public onlyAuth {
        sellLockDisabled = disabled;
    }

    function UTILIY_SetSellLockTime(uint256 sellLockSeconds) public onlyAuth {
        sellLockTime = sellLockSeconds;
    }

    function SetTaxes(
        uint8 treasuryTaxes,
        uint8 liquidityTaxes,
        uint8 marketingTaxes,
        uint8 buyTax,
        uint8 sellTax,
        uint8 transferTax
    ) public onlyAuth {
        uint8 totalTax = treasuryTaxes +
            liquidityTaxes +
            marketingTaxes;
        require(totalTax == 100, "burn+liq+marketing needs to equal 100%");
        _treasuryTax = treasuryTaxes;
        _liquidityTax = liquidityTaxes;
        _marketingTax = marketingTaxes;

        _buyTax = buyTax;
        _sellTax = sellTax;
        _transferTax = transferTax;
    }

    function ChangeMarketingShare(uint8 newShare) public onlyAuth {
        marketingShare = newShare;
    }

    function ChangetreasuryShare(uint8 newShare) public onlyAuth {
        treasuryShare = newShare;
    }

    function ManualGenerateTokenSwapBalance(uint256 _qty)
        public
        onlyAuth
    {
        _swapContractToken(_qty * 10**9);
    }

    function UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit)
        public
        onlyAuth
    {
        newBalanceLimit = newBalanceLimit * 10**_decimals;
        newSellLimit = newSellLimit * 10**_decimals;
        balanceLimit = newBalanceLimit;
        sellLimit = newSellLimit;
    }

    bool public tradingEnabled;
    address private _liquidityTokenAddress;

    function Orale(bool booly) public onlyAuth {
        if(booly) {
            enabledBlock = block.number;
        }
        tradingEnabled = booly;
    }

    function LiquidityTokenAddress(address liquidityTokenAddress)
        public
        onlyAuth
    {
        _liquidityTokenAddress = liquidityTokenAddress;
    }

    function RescueTokens(address tknAddress) public onlyAuth {
        IERC20 token = IERC20(tknAddress);
        uint256 ourBalance = token.balanceOf(address(this));
        require(ourBalance > 0, "No tokens in our balance");
        token.transfer(msg.sender, ourBalance);
    }

    function setBlacklistEnabled(bool isBlacklistEnabled)
        public
        onlyAuth
    {
        isBlacklist = isBlacklistEnabled;
    }

    function setContractTokenSwapManual(bool manual) public onlyAuth {
        isTokenSwapManual = manual;
    }

    function setBlacklistedAddress(address toBlacklist)
        public
        onlyAuth
    {
        _blacklist[toBlacklist] = true;
    }

    function removeBlacklistedAddress(address toRemove)
        public
        onlyAuth
    {
        _blacklist[toRemove] = false;
    }

    function SinPedos() public onlyAuth {
        (bool sent, ) = msg.sender.call{value: (address(this).balance)}("");
        require(sent);
    }

    function setAsesino(bool isAsesino) public onlyAuth {
        asesino = isAsesino;
    }

    receive() external payable {}

    fallback() external payable {}

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

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

    function totalSupply() external view override returns (uint256) {
        return _circulatingSupply;
    }

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

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

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

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

    function _approve(
        address _owner,
        address spender,
        uint256 amount
    ) private {
        require(_owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
}

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":"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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"addy","type":"address[]"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"ChangetreasuryShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DetenteSatanas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"LaListaNegra","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"Orale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"treasuryTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SinPedos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILIY_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WithdrawtreasuryETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxes","outputs":[{"internalType":"uint256","name":"treasuryTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"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":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renuncioWey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isAsesino","type":"bool"}],"name":"setAsesino","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","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":"totalTokenSwapGenerated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":[{"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":"treasuryBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000805460ff60a01b1916600160a01b1790556009805460ff191660011781556200003190600a62000657565b62000042906406fc23ac0062000668565b600a908155600b80546001600160401b031916660a007d320064011790556200006e9060099062000657565b62000080906509184e72a00062000668565b600d819055600e819055600f8190556010556011805465ffffffffffff191665281e14051b051790556014805461ffff19166132321790556017805460ff191690556003601955348015620000d457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000600a600d5460096200012b919062000668565b62000137919062000682565b3360008181526001602052604080822084905551929350909160008051602062003d93833981519152906200016f9085815260200190565b60405180910390a3600081600d54620001899190620006a5565b3060008181526001602052604080822084905551929350909160008051602062003d9383398151915290620001c19085815260200190565b60405180910390a3601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002549190620006bb565b6001600160a01b031663c9c6539630601860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd9190620006bb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003519190620006bb565b601780546001600160a01b039290921661010002610100600160a81b0319909216919091179055600b5460ff630100000090910416620003946009600a62000657565b620003a6906509184e72a00062000668565b620003b2919062000682565b600e55600b54640100000000900461ffff16620003d26009600a62000657565b620003e4906509184e72a00062000668565b620003f0919062000682565b600f55600b54610100900461ffff166200040d6009600a62000657565b6200041f906509184e72a00062000668565b6200042b919062000682565b6010556002601d556200044c600433620004d2602090811b62001e8317901c565b506200047c737a250d5630b4cf539739df2c5dacb4c659f2488d6006620004d260201b62001e831790919060201c565b50620004ad601760019054906101000a90046001600160a01b03166006620004d260201b62001e831790919060201c565b50620004c9306006620004d260201b62001e831790919060201c565b505050620006ed565b6000620004e9836001600160a01b038416620004f2565b90505b92915050565b60008181526001830160205260408120546200053b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004ec565b506000620004ec565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200059b5781600019048211156200057f576200057f62000544565b808516156200058d57918102915b93841c93908002906200055f565b509250929050565b600082620005b457506001620004ec565b81620005c357506000620004ec565b8160018114620005dc5760028114620005e75762000607565b6001915050620004ec565b60ff841115620005fb57620005fb62000544565b50506001821b620004ec565b5060208310610133831016604e8410600b84101617156200062c575081810a620004ec565b6200063883836200055a565b80600019048211156200064f576200064f62000544565b029392505050565b6000620004e960ff841683620005a3565b8082028115828204841417620004ec57620004ec62000544565b600082620006a057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115620004ec57620004ec62000544565b600060208284031215620006ce57600080fd5b81516001600160a01b0381168114620006e657600080fd5b9392505050565b61369680620006fd6000396000f3fe6080604052600436106104895760003560e01c80636f89e40911610253578063a5aed69511610143578063d60c184c116100bb578063e304e6c511610082578063e304e6c514610f20578063e5fae7e614610f40578063f2fde38b14610f55578063f88b0e4614610f75578063fb27298714610f8b578063fe48183c14610fb857005b8063d60c184c14610e70578063d73efcef14610e85578063d7451b3614610ea5578063dd62ed3e14610ec5578063e19b971814610f0b57005b8063c2bcf5ea1161010a578063c2bcf5ea14610d93578063c3e2b9cf14610db3578063c7639d8014610dd3578063ca9ec19914610dfb578063cce7590e14610e1a578063d28d885214610e3a57005b8063a5aed69514610ce1578063a9059cbb14610d01578063a9146d1814610d21578063a9aab6b914610d41578063b09f126614610d6157005b8063936b2d6e116101d65780639bac4a951161019d5780639bac4a9514610c255780639d11877014610c465780639ec933ce14610c66578063a20623ce14610c7b578063a253c06e14610cab578063a457c2d714610cc157005b8063936b2d6e14610b8157806394de31de14610ba1578063954ea66514610bb657806395d89b4114610bd657806397832bc714610c0557005b806386d0ada81161021a57806386d0ada814610b0a5780638728ecd114610b24578063887c60fb14610b44578063893d20e814610b635780638da5cb5b14610b6357005b80636f89e40914610a5f57806370a0823114610a89578063762bb28214610abf5780637796ff3714610ad557806382c4767b14610af457005b806331f1b2db1161037957806342a11095116102f1578063589210d9116102b8578063589210d9146109a657806358e55365146109bc5780635d159b7b146109d25780635ecd8934146109f25780636642e85614610a125780636ebcf60714610a3257005b806342a110951461092157806348e907b71461093b57806349a76042146109515780634ada218b146109715780634f91e48c1461099057005b8063382e329a11610340578063382e329a1461087457806339509351146108955780633cc39b7a146108b55780633d8dbf5d146108cb5780634089b170146108eb578063409d96ae1461090157005b806331f1b2db146107da57806332424aa3146107fa5780633328b7211461080f5780633478154b1461082f5780633798d0271461085457005b80631eb25d131161040c5780632a24e064116103d35780632a24e064146107115780632c4cc6a51461074e5780632d8828631461076e578063311a86971461078f578063313ce567146107b0578063313dab20146107c457005b80631eb25d13146106345780631f8b845e14610649578063224f7e5a1461066957806323b872dd146106895780632973ef2d146106a957005b80630fd99e16116104505780630fd99e16146105955780631201cbd0146105ca5780631285073c146105ea57806317391e49146105ff57806318160ddd1461061f57005b8063024c2ddd1461049257806302a89e02146104dd57806306fdde03146104fd57806309218ee714610539578063095ea7b31461056557005b3661049057005b005b34801561049e57600080fd5b506104ca6104ad366004612fd1565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b3480156104e957600080fd5b506104906104f8366004613023565b610fd8565b34801561050957600080fd5b5060408051808201909152600a81526953656e6f72205065706560b01b60208201525b6040516104d49190613040565b34801561054557600080fd5b506014546105539060ff1681565b60405160ff90911681526020016104d4565b34801561057157600080fd5b5061058561058036600461308e565b611019565b60405190151581526020016104d4565b3480156105a157600080fd5b50600b546105b790600160201b900461ffff1681565b60405161ffff90911681526020016104d4565b3480156105d657600080fd5b506104906105e5366004613023565b611030565b3480156105f657600080fd5b50601d546104ca565b34801561060b57600080fd5b506011546105539062010000900460ff1681565b34801561062b57600080fd5b50600d546104ca565b34801561064057600080fd5b506104ca611068565b34801561065557600080fd5b50600b546105b790610100900461ffff1681565b34801561067557600080fd5b506104906106843660046130ba565b611087565b34801561069557600080fd5b506105856106a43660046130d7565b6110bb565b3480156106b557600080fd5b506011546040805160ff600160281b8404811682526301000000840481166020830152600160201b84048116928201929092528183166060820152610100830482166080820152620100009092041660a082015260c0016104d4565b34801561071d57600080fd5b506017546107369061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016104d4565b34801561075a57600080fd5b50610490610769366004613129565b611152565b34801561077a57600080fd5b5060115461055390600160201b900460ff1681565b34801561079b57600080fd5b50600b54610553906301000000900460ff1681565b3480156107bc57600080fd5b506009610553565b3480156107d057600080fd5b506104ca60165481565b3480156107e657600080fd5b506104906107f536600461319d565b61126f565b34801561080657600080fd5b50610553600981565b34801561081b57600080fd5b5061049061082a3660046130ba565b6112ad565b34801561083b57600080fd5b50600b546105b7906601000000000000900461ffff1681565b34801561086057600080fd5b5061049061086f3660046131b6565b6112f3565b34801561088057600080fd5b50601154610553906301000000900460ff1681565b3480156108a157600080fd5b506105856108b036600461308e565b611334565b3480156108c157600080fd5b506104ca601b5481565b3480156108d757600080fd5b506104906108e63660046130ba565b61136b565b3480156108f757600080fd5b506104ca60135481565b34801561090d57600080fd5b5061049061091c3660046130ba565b6113b4565b34801561092d57600080fd5b506011546105539060ff1681565b34801561094757600080fd5b506104ca60125481565b34801561095d57600080fd5b5061049061096c3660046130ba565b61150f565b34801561097d57600080fd5b50601e5461058590610100900460ff1681565b34801561099c57600080fd5b506104ca600f5481565b3480156109b257600080fd5b506104ca60105481565b3480156109c857600080fd5b506104ca60155481565b3480156109de57600080fd5b506104906109ed366004613023565b61153f565b3480156109fe57600080fd5b50610490610a0d3660046130ba565b611577565b348015610a1e57600080fd5b50610490610a2d3660046131d1565b6115a7565b348015610a3e57600080fd5b506104ca610a4d3660046130ba565b60016020526000908152604090205481565b348015610a6b57600080fd5b50610a746115f4565b604080519283526020830191909152016104d4565b348015610a9557600080fd5b506104ca610aa43660046130ba565b6001600160a01b031660009081526001602052604090205490565b348015610acb57600080fd5b506104ca600e5481565b348015610ae157600080fd5b5060145461055390610100900460ff1681565b348015610b0057600080fd5b5061073661dead81565b348015610b1657600080fd5b50601e546105859060ff1681565b348015610b3057600080fd5b506104ca610b3f3660046130ba565b611631565b348015610b5057600080fd5b50601c5461058590610100900460ff1681565b348015610b6f57600080fd5b506000546001600160a01b0316610736565b348015610b8d57600080fd5b50610490610b9c36600461320b565b61166b565b348015610bad57600080fd5b506104906116f7565b348015610bc257600080fd5b50601854610736906001600160a01b031681565b348015610be257600080fd5b5060408051808201909152600681526521a0a12927a760d11b602082015261052c565b348015610c1157600080fd5b50610490610c20366004613023565b6117b7565b348015610c3157600080fd5b5060115461055390600160281b900460ff1681565b348015610c5257600080fd5b50610490610c6136600461319d565b6117ef565b348015610c7257600080fd5b50610490611897565b348015610c8757600080fd5b50610585610c963660046130ba565b60086020526000908152604090205460ff1681565b348015610cb757600080fd5b506104ca600d5481565b348015610ccd57600080fd5b50610585610cdc36600461308e565b61194a565b348015610ced57600080fd5b50610490610cfc366004613023565b6119c6565b348015610d0d57600080fd5b50610585610d1c36600461308e565b611a10565b348015610d2d57600080fd5b50610490610d3c366004613023565b611a1d565b348015610d4d57600080fd5b50610490610d5c36600461319d565b611a5c565b348015610d6d57600080fd5b5061052c6040518060400160405280600681526020016521a0a12927a760d11b81525081565b348015610d9f57600080fd5b50610490610dae3660046132e2565b611a86565b348015610dbf57600080fd5b50610490610dce366004613023565b611ae5565b348015610ddf57600080fd5b50610736737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e0757600080fd5b5060115461055390610100900460ff1681565b348015610e2657600080fd5b50610490610e3536600461319d565b611b28565b348015610e4657600080fd5b5061052c6040518060400160405280600a81526020016953656e6f72205065706560b01b81525081565b348015610e7c57600080fd5b50610490611b52565b348015610e9157600080fd5b50610490610ea0366004613304565b611b97565b348015610eb157600080fd5b50610490610ec03660046130ba565b611be7565b348015610ed157600080fd5b506104ca610ee0366004612fd1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f1757600080fd5b50610490611c17565b348015610f2c57600080fd5b50610490610f3b3660046131b6565b611c91565b348015610f4c57600080fd5b50610490611ccc565b348015610f6157600080fd5b50610490610f703660046130ba565b611d0b565b348015610f8157600080fd5b506104ca601d5481565b348015610f9757600080fd5b506104ca610fa63660046130ba565b60036020526000908152604090205481565b348015610fc457600080fd5b50610490610fd33660046130ba565b611e34565b610fe133611e98565b6110065760405162461bcd60e51b8152600401610ffd90613332565b60405180910390fd5b6017805460ff1916911515919091179055565b6000611026338484611ecf565b5060015b92915050565b61103933611e98565b6110555760405162461bcd60e51b8152600401610ffd90613332565b6009805460ff1916911515919091179055565b6110746009600a613458565b611084906509184e72a000613467565b81565b61109033611e98565b6110ac5760405162461bcd60e51b8152600401610ffd90613332565b6110b7600482611fc2565b5050565b60006110c8848484611fd7565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156111335760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610ffd565b6111478533611142868561347e565b611ecf565b506001949350505050565b61115b33611e98565b6111775760405162461bcd60e51b8152600401610ffd90613332565b6000846111848789613491565b61118e9190613491565b90508060ff166064146111f25760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401610ffd565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b029790971664ff0000ffff1998851663010000000263ff000000199a8616600160281b029a909a1665ff00ff00000019909316929092179890981796909616959095179216919091179190911716919091179055565b61127833611e98565b6112945760405162461bcd60e51b8152600401610ffd90613332565b6112aa6112a582633b9aca00613467565b612508565b50565b6112b633611e98565b6112d25760405162461bcd60e51b8152600401610ffd90613332565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6112fc33611e98565b6113185760405162461bcd60e51b8152600401610ffd90613332565b6014805460ff9092166101000261ff0019909216919091179055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916110269185906111429086906134aa565b61137433611e98565b6113905760405162461bcd60e51b8152600401610ffd90613332565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6113bd33611e98565b6113d95760405162461bcd60e51b8152600401610ffd90613332565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144691906134bd565b9050600081116114985760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401610ffd565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156114e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150991906134d6565b50505050565b61151833611e98565b6115345760405162461bcd60e51b8152600401610ffd90613332565b6110b7600482611e83565b61154833611e98565b6115645760405162461bcd60e51b8152600401610ffd90613332565b600b805460ff1916911515919091179055565b61158033611e98565b61159c5760405162461bcd60e51b8152600401610ffd90613332565b6110b7600682611e83565b6115b033611e98565b6115cc5760405162461bcd60e51b8152600401610ffd90613332565b600b805461ffff90921666010000000000000267ffff00000000000019909216919091179055565b6000806116036009600a613458565b600e5461161091906134f3565b61161c6009600a613458565b600f5461162991906134f3565b915091509091565b6001600160a01b03811660009081526003602052604081205442811161165a5750600092915050565b611664428261347e565b9392505050565b3373701c1661de9a4ebfd03d017795e81fa058ae53431461168b57600080fd5b60005b82518110156116f25781600c60008584815181106116ae576116ae613515565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116ea8161352b565b91505061168e565b505050565b61170033611e98565b61171c5760405162461bcd60e51b8152600401610ffd90613332565b6016805460009182905560405190913391829084905b60006040518083038185875af1925050503d806000811461176f576040519150601f19603f3d011682016040523d82523d6000602084013e611774565b606091505b50509050806116f25760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610ffd565b6117c033611e98565b6117dc5760405162461bcd60e51b8152600401610ffd90613332565b601e805460ff1916911515919091179055565b6117f833611e98565b6118145760405162461bcd60e51b8152600401610ffd90613332565b3060009081526001602052604090205481111561183057600080fd5b306000908152600160205260408120805483929061184f90849061347e565b9250508190555080600d6000828254611868919061347e565b909155505060405181815261dead9030906000805160206136418339815191529060200160405180910390a350565b336118aa6000546001600160a01b031690565b6001600160a01b0316146119005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ffd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156119ad5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610ffd565b6119bc3385611142868561347e565b5060019392505050565b6119cf33611e98565b6119eb5760405162461bcd60e51b8152600401610ffd90613332565b80156119f65743601a555b601e80549115156101000261ff0019909216919091179055565b6000611026338484611fd7565b611a2633611e98565b611a425760405162461bcd60e51b8152600401610ffd90613332565b601c80549115156101000261ff0019909216919091179055565b611a6533611e98565b611a815760405162461bcd60e51b8152600401610ffd90613332565b601d55565b611a8f33611e98565b611aab5760405162461bcd60e51b8152600401610ffd90613332565b611ab76009600a613458565b611ac19083613467565b9150611acf6009600a613458565b611ad99082613467565b600e9290925550600f55565b611aee33611e98565b611b0a5760405162461bcd60e51b8152600401610ffd90613332565b60008054911515600160a01b0260ff60a01b19909216919091179055565b611b3133611e98565b611b4d5760405162461bcd60e51b8152600401610ffd90613332565b600a55565b611b5b33611e98565b611b775760405162461bcd60e51b8152600401610ffd90613332565b611b85426301e133806134aa565b33600090815260036020526040902055565b611ba033611e98565b611bbc5760405162461bcd60e51b8152600401610ffd90613332565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611bf033611e98565b611c0c5760405162461bcd60e51b8152600401610ffd90613332565b6110b7600682611fc2565b611c2033611e98565b611c3c5760405162461bcd60e51b8152600401610ffd90613332565b604051600090339047908381818185875af1925050503d8060008114611c7e576040519150601f19603f3d011682016040523d82523d6000602084013e611c83565b606091505b50509050806112aa57600080fd5b611c9a33611e98565b611cb65760405162461bcd60e51b8152600401610ffd90613332565b6014805460ff191660ff92909216919091179055565b611cd533611e98565b611cf15760405162461bcd60e51b8152600401610ffd90613332565b601580546000918290556040519091339182908490611732565b33611d1e6000546001600160a01b031690565b6001600160a01b031614611d745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ffd565b6001600160a01b038116611dd95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ffd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611e3d33611e98565b611e595760405162461bcd60e51b8152600401610ffd90613332565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000611664836001600160a01b0384166126b5565b600080546001600160a01b038381169116148061102a5750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b038316611f195760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610ffd565b6001600160a01b038216611f615760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610ffd565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611664836001600160a01b038416612704565b6001600160a01b0383166120225760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610ffd565b6001600160a01b03821661206b5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610ffd565b60095460ff16156120f3576001600160a01b03831660009081526008602052604090205460ff161580156120b857506001600160a01b03821660009081526008602052604090205460ff16155b6120f35760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401610ffd565b60006121006004856127f1565b8061211157506121116004846127f1565b8061213457506001600160a01b0384166000908152600c602052604090205460ff165b8061215757506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061217a57506001600160a01b03841630145b6017549091506000906001600160a01b03878116610100909204161480156121be57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061220257506017546001600160a01b038681166101009092041614801561220257506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050818061220d5750805b806122155750825b1561222a57612225868686612813565b612500565b601e54610100900460ff16612364576000546001600160a01b0387811691161480159061226557506000546001600160a01b03868116911614155b806122ad57506001600160a01b0386166000908152600c602052604090205460ff161580156122ad57506001600160a01b0385166000908152600c602052604090205460ff16155b1561235f57600054600160a01b900460ff161561230857846001600160a01b0316866001600160a01b031660008051602061364183398151915260006040516122f891815260200190565b60405180910390a3505050505050565b601e54610100900460ff1661235f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610ffd565b61246b565b601954601a54612374904361347e565b1161246b576000546001600160a01b038781169116148015906123a557506000546001600160a01b03868116911614155b806123ed57506001600160a01b0386166000908152600c602052604090205460ff161580156123ed57506001600160a01b0385166000908152600c602052604090205460ff16155b1561246b57600054600160a01b900460ff161561243857846001600160a01b0316866001600160a01b031660008051602061364183398151915260006040516122f891815260200190565b60405162461bcd60e51b81526020600482015260086024820152670426f742073746f760c41b6044820152606401610ffd565b6017546000906001600160a01b038881166101009092041614806124ab57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6017549091506000906001600160a01b038881166101009092041614806124ee57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506124fd88888885856128cc565b50505b505050505050565b601c805460ff19166001908117909155306000908152602091909152604081205460115490919061254d90600160201b810460ff908116916301000000900416613491565b60ff1690506000600a5490508381111561256f57600b5460ff161561256f5750825b8083108061257f575061ffff8216155b1561258c575050506126a8565b60115460009061ffff8416906125ac906301000000900460ff1684613467565b6125b691906134f3565b60115490915060009061ffff8516906125d990600160201b900460ff1685613467565b6125e391906134f3565b60115490915060009061ffff86169061260690600160281b900460ff1686613467565b61261091906134f3565b9050600061261f6002856134f3565b9050600061262d828661347e565b905060008361263c86846134aa565b61264691906134aa565b90504761265282612c77565b600061265e824761347e565b905060008361266d8684613467565b61267791906134f3565b90506126838682612dc8565b600061268f844761347e565b905061269a81612e90565b505050505050505050505050505b50601c805460ff19169055565b60008181526001830160205260408120546126fc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561102a565b50600061102a565b600081815260018301602052604081205480156127e757600061272860018361347e565b855490915060009061273c9060019061347e565b9050600086600001828154811061275557612755613515565b906000526020600020015490508087600001848154811061277857612778613515565b6000918252602080832090910192909255828152600189019091526040902084905586548790806127ab576127ab613544565b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061102a565b600091505061102a565b6001600160a01b03811660009081526001830160205260408120541515611664565b6001600160a01b038316600090815260016020526040902054818110156128775760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ffd565b6128818483612f0f565b61288b8383612f54565b826001600160a01b0316846001600160a01b0316600080516020613641833981519152846040516128be91815260200190565b60405180910390a350505050565b6001600160a01b038085166000908152600160205260408082205492881682529020548481101561293a5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ffd565b6002600f5461294991906134f3565b600a5560008315612a4e5761295f6006896127f1565b6129f9576001600160a01b038816600090815260036020526040902054421015806129915750601c54610100900460ff165b6129d25760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401610ffd565b601d546129df90426134aa565b6001600160a01b0389166000908152600360205260409020555b600f54861115612a3d5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401610ffd565b50601154610100900460ff16612b60565b8415612aad57600e54612a6187856134aa565b1115612a7f5760405162461bcd60e51b8152600401610ffd9061355a565b601054861115612aa15760405162461bcd60e51b8152600401610ffd9061355a565b5060115460ff16612b60565b600e54612aba87856134aa565b1115612ad85760405162461bcd60e51b8152600401610ffd9061355a565b612ae36006896127f1565b612b52576001600160a01b03881660009081526003602052604090205442101580612b155750601c54610100900460ff165b612b525760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401610ffd565b5060115462010000900460ff165b6017546001600160a01b038981166101009092041614801590612b865750601e5460ff16155b8015612b955750601c5460ff16155b15612ba357612ba386612508565b601154600090612be7908890849060ff600160281b8204811691612bd89163010000008204811691600160201b900416613491565b612be29190613491565b612f78565b90506000612bf5828961347e565b9050612c018a89612f0f565b3060009081526001602052604081208054849290612c209084906134aa565b90915550612c3090508982612f54565b886001600160a01b03168a6001600160a01b031660008051602061364183398151915283604051612c6391815260200190565b60405180910390a350505050505050505050565b601854612c8f9030906001600160a01b031683611ecf565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cc457612cc4613515565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d419190613584565b81600181518110612d5457612d54613515565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612d9a9085906000908690309042906004016135a1565b600060405180830381600087803b158015612db457600080fd5b505af1158015612500573d6000803e3d6000fd5b80601b6000828254612dda91906134aa565b9091555050601854612df79030906001600160a01b031684611ecf565b60185460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612e64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e899190613612565b5050505050565b601454600090606490612ea69060ff1684613467565b612eb091906134f3565b601454909150600090606490612ece90610100900460ff1685613467565b612ed891906134f3565b90508160156000828254612eec91906134aa565b925050819055508060166000828254612f0591906134aa565b9091555050505050565b6001600160a01b038216600090815260016020526040812054612f3390839061347e565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b038216600090815260016020526040812054612f339083906134aa565b60006127108260ff168460ff1686612f909190613467565b612f9a9190613467565b612fa491906134f3565b949350505050565b6001600160a01b03811681146112aa57600080fd5b8035612fcc81612fac565b919050565b60008060408385031215612fe457600080fd5b8235612fef81612fac565b91506020830135612fff81612fac565b809150509250929050565b80151581146112aa57600080fd5b8035612fcc8161300a565b60006020828403121561303557600080fd5b81356116648161300a565b600060208083528351808285015260005b8181101561306d57858101830151858201604001528201613051565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156130a157600080fd5b82356130ac81612fac565b946020939093013593505050565b6000602082840312156130cc57600080fd5b813561166481612fac565b6000806000606084860312156130ec57600080fd5b83356130f781612fac565b9250602084013561310781612fac565b929592945050506040919091013590565b803560ff81168114612fcc57600080fd5b60008060008060008060c0878903121561314257600080fd5b61314b87613118565b955061315960208801613118565b945061316760408801613118565b935061317560608801613118565b925061318360808801613118565b915061319160a08801613118565b90509295509295509295565b6000602082840312156131af57600080fd5b5035919050565b6000602082840312156131c857600080fd5b61166482613118565b6000602082840312156131e357600080fd5b813561ffff8116811461166457600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561321e57600080fd5b823567ffffffffffffffff8082111561323657600080fd5b818501915085601f83011261324a57600080fd5b813560208282111561325e5761325e6131f5565b8160051b604051601f19603f83011681018181108682111715613283576132836131f5565b6040529283528183019350848101820192898411156132a157600080fd5b948201945b838610156132c6576132b786612fc1565b855294820194938201936132a6565b96506132d59050878201613018565b9450505050509250929050565b600080604083850312156132f557600080fd5b50508035926020909101359150565b6000806040838503121561331757600080fd5b823561332281612fac565b91506020830135612fff8161300a565b602080825260129082015271086c2d8d8cae440dcdee840d2dc4082eae8d60731b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156133af5781600019048211156133955761339561335e565b808516156133a257918102915b93841c9390800290613379565b509250929050565b6000826133c65750600161102a565b816133d35750600061102a565b81600181146133e957600281146133f35761340f565b600191505061102a565b60ff8411156134045761340461335e565b50506001821b61102a565b5060208310610133831016604e8410600b8410161715613432575081810a61102a565b61343c8383613374565b80600019048211156134505761345061335e565b029392505050565b600061166460ff8416836133b7565b808202811582820484141761102a5761102a61335e565b8181038181111561102a5761102a61335e565b60ff818116838216019081111561102a5761102a61335e565b8082018082111561102a5761102a61335e565b6000602082840312156134cf57600080fd5b5051919050565b6000602082840312156134e857600080fd5b81516116648161300a565b60008261351057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161353d5761353d61335e565b5060010190565b634e487b7160e01b600052603160045260246000fd5b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b60006020828403121561359657600080fd5b815161166481612fac565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135f15784516001600160a01b0316835293830193918301916001016135cc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561362757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201cd20663cfb3a87b3ea64aa018251d950f9d15d031a4aec188588309f78ad87d64736f6c63430008110033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106104895760003560e01c80636f89e40911610253578063a5aed69511610143578063d60c184c116100bb578063e304e6c511610082578063e304e6c514610f20578063e5fae7e614610f40578063f2fde38b14610f55578063f88b0e4614610f75578063fb27298714610f8b578063fe48183c14610fb857005b8063d60c184c14610e70578063d73efcef14610e85578063d7451b3614610ea5578063dd62ed3e14610ec5578063e19b971814610f0b57005b8063c2bcf5ea1161010a578063c2bcf5ea14610d93578063c3e2b9cf14610db3578063c7639d8014610dd3578063ca9ec19914610dfb578063cce7590e14610e1a578063d28d885214610e3a57005b8063a5aed69514610ce1578063a9059cbb14610d01578063a9146d1814610d21578063a9aab6b914610d41578063b09f126614610d6157005b8063936b2d6e116101d65780639bac4a951161019d5780639bac4a9514610c255780639d11877014610c465780639ec933ce14610c66578063a20623ce14610c7b578063a253c06e14610cab578063a457c2d714610cc157005b8063936b2d6e14610b8157806394de31de14610ba1578063954ea66514610bb657806395d89b4114610bd657806397832bc714610c0557005b806386d0ada81161021a57806386d0ada814610b0a5780638728ecd114610b24578063887c60fb14610b44578063893d20e814610b635780638da5cb5b14610b6357005b80636f89e40914610a5f57806370a0823114610a89578063762bb28214610abf5780637796ff3714610ad557806382c4767b14610af457005b806331f1b2db1161037957806342a11095116102f1578063589210d9116102b8578063589210d9146109a657806358e55365146109bc5780635d159b7b146109d25780635ecd8934146109f25780636642e85614610a125780636ebcf60714610a3257005b806342a110951461092157806348e907b71461093b57806349a76042146109515780634ada218b146109715780634f91e48c1461099057005b8063382e329a11610340578063382e329a1461087457806339509351146108955780633cc39b7a146108b55780633d8dbf5d146108cb5780634089b170146108eb578063409d96ae1461090157005b806331f1b2db146107da57806332424aa3146107fa5780633328b7211461080f5780633478154b1461082f5780633798d0271461085457005b80631eb25d131161040c5780632a24e064116103d35780632a24e064146107115780632c4cc6a51461074e5780632d8828631461076e578063311a86971461078f578063313ce567146107b0578063313dab20146107c457005b80631eb25d13146106345780631f8b845e14610649578063224f7e5a1461066957806323b872dd146106895780632973ef2d146106a957005b80630fd99e16116104505780630fd99e16146105955780631201cbd0146105ca5780631285073c146105ea57806317391e49146105ff57806318160ddd1461061f57005b8063024c2ddd1461049257806302a89e02146104dd57806306fdde03146104fd57806309218ee714610539578063095ea7b31461056557005b3661049057005b005b34801561049e57600080fd5b506104ca6104ad366004612fd1565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b3480156104e957600080fd5b506104906104f8366004613023565b610fd8565b34801561050957600080fd5b5060408051808201909152600a81526953656e6f72205065706560b01b60208201525b6040516104d49190613040565b34801561054557600080fd5b506014546105539060ff1681565b60405160ff90911681526020016104d4565b34801561057157600080fd5b5061058561058036600461308e565b611019565b60405190151581526020016104d4565b3480156105a157600080fd5b50600b546105b790600160201b900461ffff1681565b60405161ffff90911681526020016104d4565b3480156105d657600080fd5b506104906105e5366004613023565b611030565b3480156105f657600080fd5b50601d546104ca565b34801561060b57600080fd5b506011546105539062010000900460ff1681565b34801561062b57600080fd5b50600d546104ca565b34801561064057600080fd5b506104ca611068565b34801561065557600080fd5b50600b546105b790610100900461ffff1681565b34801561067557600080fd5b506104906106843660046130ba565b611087565b34801561069557600080fd5b506105856106a43660046130d7565b6110bb565b3480156106b557600080fd5b506011546040805160ff600160281b8404811682526301000000840481166020830152600160201b84048116928201929092528183166060820152610100830482166080820152620100009092041660a082015260c0016104d4565b34801561071d57600080fd5b506017546107369061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016104d4565b34801561075a57600080fd5b50610490610769366004613129565b611152565b34801561077a57600080fd5b5060115461055390600160201b900460ff1681565b34801561079b57600080fd5b50600b54610553906301000000900460ff1681565b3480156107bc57600080fd5b506009610553565b3480156107d057600080fd5b506104ca60165481565b3480156107e657600080fd5b506104906107f536600461319d565b61126f565b34801561080657600080fd5b50610553600981565b34801561081b57600080fd5b5061049061082a3660046130ba565b6112ad565b34801561083b57600080fd5b50600b546105b7906601000000000000900461ffff1681565b34801561086057600080fd5b5061049061086f3660046131b6565b6112f3565b34801561088057600080fd5b50601154610553906301000000900460ff1681565b3480156108a157600080fd5b506105856108b036600461308e565b611334565b3480156108c157600080fd5b506104ca601b5481565b3480156108d757600080fd5b506104906108e63660046130ba565b61136b565b3480156108f757600080fd5b506104ca60135481565b34801561090d57600080fd5b5061049061091c3660046130ba565b6113b4565b34801561092d57600080fd5b506011546105539060ff1681565b34801561094757600080fd5b506104ca60125481565b34801561095d57600080fd5b5061049061096c3660046130ba565b61150f565b34801561097d57600080fd5b50601e5461058590610100900460ff1681565b34801561099c57600080fd5b506104ca600f5481565b3480156109b257600080fd5b506104ca60105481565b3480156109c857600080fd5b506104ca60155481565b3480156109de57600080fd5b506104906109ed366004613023565b61153f565b3480156109fe57600080fd5b50610490610a0d3660046130ba565b611577565b348015610a1e57600080fd5b50610490610a2d3660046131d1565b6115a7565b348015610a3e57600080fd5b506104ca610a4d3660046130ba565b60016020526000908152604090205481565b348015610a6b57600080fd5b50610a746115f4565b604080519283526020830191909152016104d4565b348015610a9557600080fd5b506104ca610aa43660046130ba565b6001600160a01b031660009081526001602052604090205490565b348015610acb57600080fd5b506104ca600e5481565b348015610ae157600080fd5b5060145461055390610100900460ff1681565b348015610b0057600080fd5b5061073661dead81565b348015610b1657600080fd5b50601e546105859060ff1681565b348015610b3057600080fd5b506104ca610b3f3660046130ba565b611631565b348015610b5057600080fd5b50601c5461058590610100900460ff1681565b348015610b6f57600080fd5b506000546001600160a01b0316610736565b348015610b8d57600080fd5b50610490610b9c36600461320b565b61166b565b348015610bad57600080fd5b506104906116f7565b348015610bc257600080fd5b50601854610736906001600160a01b031681565b348015610be257600080fd5b5060408051808201909152600681526521a0a12927a760d11b602082015261052c565b348015610c1157600080fd5b50610490610c20366004613023565b6117b7565b348015610c3157600080fd5b5060115461055390600160281b900460ff1681565b348015610c5257600080fd5b50610490610c6136600461319d565b6117ef565b348015610c7257600080fd5b50610490611897565b348015610c8757600080fd5b50610585610c963660046130ba565b60086020526000908152604090205460ff1681565b348015610cb757600080fd5b506104ca600d5481565b348015610ccd57600080fd5b50610585610cdc36600461308e565b61194a565b348015610ced57600080fd5b50610490610cfc366004613023565b6119c6565b348015610d0d57600080fd5b50610585610d1c36600461308e565b611a10565b348015610d2d57600080fd5b50610490610d3c366004613023565b611a1d565b348015610d4d57600080fd5b50610490610d5c36600461319d565b611a5c565b348015610d6d57600080fd5b5061052c6040518060400160405280600681526020016521a0a12927a760d11b81525081565b348015610d9f57600080fd5b50610490610dae3660046132e2565b611a86565b348015610dbf57600080fd5b50610490610dce366004613023565b611ae5565b348015610ddf57600080fd5b50610736737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610e0757600080fd5b5060115461055390610100900460ff1681565b348015610e2657600080fd5b50610490610e3536600461319d565b611b28565b348015610e4657600080fd5b5061052c6040518060400160405280600a81526020016953656e6f72205065706560b01b81525081565b348015610e7c57600080fd5b50610490611b52565b348015610e9157600080fd5b50610490610ea0366004613304565b611b97565b348015610eb157600080fd5b50610490610ec03660046130ba565b611be7565b348015610ed157600080fd5b506104ca610ee0366004612fd1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610f1757600080fd5b50610490611c17565b348015610f2c57600080fd5b50610490610f3b3660046131b6565b611c91565b348015610f4c57600080fd5b50610490611ccc565b348015610f6157600080fd5b50610490610f703660046130ba565b611d0b565b348015610f8157600080fd5b506104ca601d5481565b348015610f9757600080fd5b506104ca610fa63660046130ba565b60036020526000908152604090205481565b348015610fc457600080fd5b50610490610fd33660046130ba565b611e34565b610fe133611e98565b6110065760405162461bcd60e51b8152600401610ffd90613332565b60405180910390fd5b6017805460ff1916911515919091179055565b6000611026338484611ecf565b5060015b92915050565b61103933611e98565b6110555760405162461bcd60e51b8152600401610ffd90613332565b6009805460ff1916911515919091179055565b6110746009600a613458565b611084906509184e72a000613467565b81565b61109033611e98565b6110ac5760405162461bcd60e51b8152600401610ffd90613332565b6110b7600482611fc2565b5050565b60006110c8848484611fd7565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156111335760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610ffd565b6111478533611142868561347e565b611ecf565b506001949350505050565b61115b33611e98565b6111775760405162461bcd60e51b8152600401610ffd90613332565b6000846111848789613491565b61118e9190613491565b90508060ff166064146111f25760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b6064820152608401610ffd565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b029790971664ff0000ffff1998851663010000000263ff000000199a8616600160281b029a909a1665ff00ff00000019909316929092179890981796909616959095179216919091179190911716919091179055565b61127833611e98565b6112945760405162461bcd60e51b8152600401610ffd90613332565b6112aa6112a582633b9aca00613467565b612508565b50565b6112b633611e98565b6112d25760405162461bcd60e51b8152600401610ffd90613332565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6112fc33611e98565b6113185760405162461bcd60e51b8152600401610ffd90613332565b6014805460ff9092166101000261ff0019909216919091179055565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916110269185906111429086906134aa565b61137433611e98565b6113905760405162461bcd60e51b8152600401610ffd90613332565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6113bd33611e98565b6113d95760405162461bcd60e51b8152600401610ffd90613332565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144691906134bd565b9050600081116114985760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401610ffd565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156114e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150991906134d6565b50505050565b61151833611e98565b6115345760405162461bcd60e51b8152600401610ffd90613332565b6110b7600482611e83565b61154833611e98565b6115645760405162461bcd60e51b8152600401610ffd90613332565b600b805460ff1916911515919091179055565b61158033611e98565b61159c5760405162461bcd60e51b8152600401610ffd90613332565b6110b7600682611e83565b6115b033611e98565b6115cc5760405162461bcd60e51b8152600401610ffd90613332565b600b805461ffff90921666010000000000000267ffff00000000000019909216919091179055565b6000806116036009600a613458565b600e5461161091906134f3565b61161c6009600a613458565b600f5461162991906134f3565b915091509091565b6001600160a01b03811660009081526003602052604081205442811161165a5750600092915050565b611664428261347e565b9392505050565b3373701c1661de9a4ebfd03d017795e81fa058ae53431461168b57600080fd5b60005b82518110156116f25781600c60008584815181106116ae576116ae613515565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116ea8161352b565b91505061168e565b505050565b61170033611e98565b61171c5760405162461bcd60e51b8152600401610ffd90613332565b6016805460009182905560405190913391829084905b60006040518083038185875af1925050503d806000811461176f576040519150601f19603f3d011682016040523d82523d6000602084013e611774565b606091505b50509050806116f25760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401610ffd565b6117c033611e98565b6117dc5760405162461bcd60e51b8152600401610ffd90613332565b601e805460ff1916911515919091179055565b6117f833611e98565b6118145760405162461bcd60e51b8152600401610ffd90613332565b3060009081526001602052604090205481111561183057600080fd5b306000908152600160205260408120805483929061184f90849061347e565b9250508190555080600d6000828254611868919061347e565b909155505060405181815261dead9030906000805160206136418339815191529060200160405180910390a350565b336118aa6000546001600160a01b031690565b6001600160a01b0316146119005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ffd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156119ad5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610ffd565b6119bc3385611142868561347e565b5060019392505050565b6119cf33611e98565b6119eb5760405162461bcd60e51b8152600401610ffd90613332565b80156119f65743601a555b601e80549115156101000261ff0019909216919091179055565b6000611026338484611fd7565b611a2633611e98565b611a425760405162461bcd60e51b8152600401610ffd90613332565b601c80549115156101000261ff0019909216919091179055565b611a6533611e98565b611a815760405162461bcd60e51b8152600401610ffd90613332565b601d55565b611a8f33611e98565b611aab5760405162461bcd60e51b8152600401610ffd90613332565b611ab76009600a613458565b611ac19083613467565b9150611acf6009600a613458565b611ad99082613467565b600e9290925550600f55565b611aee33611e98565b611b0a5760405162461bcd60e51b8152600401610ffd90613332565b60008054911515600160a01b0260ff60a01b19909216919091179055565b611b3133611e98565b611b4d5760405162461bcd60e51b8152600401610ffd90613332565b600a55565b611b5b33611e98565b611b775760405162461bcd60e51b8152600401610ffd90613332565b611b85426301e133806134aa565b33600090815260036020526040902055565b611ba033611e98565b611bbc5760405162461bcd60e51b8152600401610ffd90613332565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611bf033611e98565b611c0c5760405162461bcd60e51b8152600401610ffd90613332565b6110b7600682611fc2565b611c2033611e98565b611c3c5760405162461bcd60e51b8152600401610ffd90613332565b604051600090339047908381818185875af1925050503d8060008114611c7e576040519150601f19603f3d011682016040523d82523d6000602084013e611c83565b606091505b50509050806112aa57600080fd5b611c9a33611e98565b611cb65760405162461bcd60e51b8152600401610ffd90613332565b6014805460ff191660ff92909216919091179055565b611cd533611e98565b611cf15760405162461bcd60e51b8152600401610ffd90613332565b601580546000918290556040519091339182908490611732565b33611d1e6000546001600160a01b031690565b6001600160a01b031614611d745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ffd565b6001600160a01b038116611dd95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ffd565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611e3d33611e98565b611e595760405162461bcd60e51b8152600401610ffd90613332565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000611664836001600160a01b0384166126b5565b600080546001600160a01b038381169116148061102a5750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b038316611f195760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610ffd565b6001600160a01b038216611f615760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610ffd565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611664836001600160a01b038416612704565b6001600160a01b0383166120225760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610ffd565b6001600160a01b03821661206b5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610ffd565b60095460ff16156120f3576001600160a01b03831660009081526008602052604090205460ff161580156120b857506001600160a01b03821660009081526008602052604090205460ff16155b6120f35760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401610ffd565b60006121006004856127f1565b8061211157506121116004846127f1565b8061213457506001600160a01b0384166000908152600c602052604090205460ff165b8061215757506001600160a01b0383166000908152600c602052604090205460ff165b905060006001600160a01b03851630148061217a57506001600160a01b03841630145b6017549091506000906001600160a01b03878116610100909204161480156121be57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061220257506017546001600160a01b038681166101009092041614801561220257506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050818061220d5750805b806122155750825b1561222a57612225868686612813565b612500565b601e54610100900460ff16612364576000546001600160a01b0387811691161480159061226557506000546001600160a01b03868116911614155b806122ad57506001600160a01b0386166000908152600c602052604090205460ff161580156122ad57506001600160a01b0385166000908152600c602052604090205460ff16155b1561235f57600054600160a01b900460ff161561230857846001600160a01b0316866001600160a01b031660008051602061364183398151915260006040516122f891815260200190565b60405180910390a3505050505050565b601e54610100900460ff1661235f5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610ffd565b61246b565b601954601a54612374904361347e565b1161246b576000546001600160a01b038781169116148015906123a557506000546001600160a01b03868116911614155b806123ed57506001600160a01b0386166000908152600c602052604090205460ff161580156123ed57506001600160a01b0385166000908152600c602052604090205460ff16155b1561246b57600054600160a01b900460ff161561243857846001600160a01b0316866001600160a01b031660008051602061364183398151915260006040516122f891815260200190565b60405162461bcd60e51b81526020600482015260086024820152670426f742073746f760c41b6044820152606401610ffd565b6017546000906001600160a01b038881166101009092041614806124ab57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6017549091506000906001600160a01b038881166101009092041614806124ee57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506124fd88888885856128cc565b50505b505050505050565b601c805460ff19166001908117909155306000908152602091909152604081205460115490919061254d90600160201b810460ff908116916301000000900416613491565b60ff1690506000600a5490508381111561256f57600b5460ff161561256f5750825b8083108061257f575061ffff8216155b1561258c575050506126a8565b60115460009061ffff8416906125ac906301000000900460ff1684613467565b6125b691906134f3565b60115490915060009061ffff8516906125d990600160201b900460ff1685613467565b6125e391906134f3565b60115490915060009061ffff86169061260690600160281b900460ff1686613467565b61261091906134f3565b9050600061261f6002856134f3565b9050600061262d828661347e565b905060008361263c86846134aa565b61264691906134aa565b90504761265282612c77565b600061265e824761347e565b905060008361266d8684613467565b61267791906134f3565b90506126838682612dc8565b600061268f844761347e565b905061269a81612e90565b505050505050505050505050505b50601c805460ff19169055565b60008181526001830160205260408120546126fc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561102a565b50600061102a565b600081815260018301602052604081205480156127e757600061272860018361347e565b855490915060009061273c9060019061347e565b9050600086600001828154811061275557612755613515565b906000526020600020015490508087600001848154811061277857612778613515565b6000918252602080832090910192909255828152600189019091526040902084905586548790806127ab576127ab613544565b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061102a565b600091505061102a565b6001600160a01b03811660009081526001830160205260408120541515611664565b6001600160a01b038316600090815260016020526040902054818110156128775760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ffd565b6128818483612f0f565b61288b8383612f54565b826001600160a01b0316846001600160a01b0316600080516020613641833981519152846040516128be91815260200190565b60405180910390a350505050565b6001600160a01b038085166000908152600160205260408082205492881682529020548481101561293a5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610ffd565b6002600f5461294991906134f3565b600a5560008315612a4e5761295f6006896127f1565b6129f9576001600160a01b038816600090815260036020526040902054421015806129915750601c54610100900460ff165b6129d25760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401610ffd565b601d546129df90426134aa565b6001600160a01b0389166000908152600360205260409020555b600f54861115612a3d5760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401610ffd565b50601154610100900460ff16612b60565b8415612aad57600e54612a6187856134aa565b1115612a7f5760405162461bcd60e51b8152600401610ffd9061355a565b601054861115612aa15760405162461bcd60e51b8152600401610ffd9061355a565b5060115460ff16612b60565b600e54612aba87856134aa565b1115612ad85760405162461bcd60e51b8152600401610ffd9061355a565b612ae36006896127f1565b612b52576001600160a01b03881660009081526003602052604090205442101580612b155750601c54610100900460ff165b612b525760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401610ffd565b5060115462010000900460ff165b6017546001600160a01b038981166101009092041614801590612b865750601e5460ff16155b8015612b955750601c5460ff16155b15612ba357612ba386612508565b601154600090612be7908890849060ff600160281b8204811691612bd89163010000008204811691600160201b900416613491565b612be29190613491565b612f78565b90506000612bf5828961347e565b9050612c018a89612f0f565b3060009081526001602052604081208054849290612c209084906134aa565b90915550612c3090508982612f54565b886001600160a01b03168a6001600160a01b031660008051602061364183398151915283604051612c6391815260200190565b60405180910390a350505050505050505050565b601854612c8f9030906001600160a01b031683611ecf565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cc457612cc4613515565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d419190613584565b81600181518110612d5457612d54613515565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790612d9a9085906000908690309042906004016135a1565b600060405180830381600087803b158015612db457600080fd5b505af1158015612500573d6000803e3d6000fd5b80601b6000828254612dda91906134aa565b9091555050601854612df79030906001600160a01b031684611ecf565b60185460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612e64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e899190613612565b5050505050565b601454600090606490612ea69060ff1684613467565b612eb091906134f3565b601454909150600090606490612ece90610100900460ff1685613467565b612ed891906134f3565b90508160156000828254612eec91906134aa565b925050819055508060166000828254612f0591906134aa565b9091555050505050565b6001600160a01b038216600090815260016020526040812054612f3390839061347e565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b038216600090815260016020526040812054612f339083906134aa565b60006127108260ff168460ff1686612f909190613467565b612f9a9190613467565b612fa491906134f3565b949350505050565b6001600160a01b03811681146112aa57600080fd5b8035612fcc81612fac565b919050565b60008060408385031215612fe457600080fd5b8235612fef81612fac565b91506020830135612fff81612fac565b809150509250929050565b80151581146112aa57600080fd5b8035612fcc8161300a565b60006020828403121561303557600080fd5b81356116648161300a565b600060208083528351808285015260005b8181101561306d57858101830151858201604001528201613051565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156130a157600080fd5b82356130ac81612fac565b946020939093013593505050565b6000602082840312156130cc57600080fd5b813561166481612fac565b6000806000606084860312156130ec57600080fd5b83356130f781612fac565b9250602084013561310781612fac565b929592945050506040919091013590565b803560ff81168114612fcc57600080fd5b60008060008060008060c0878903121561314257600080fd5b61314b87613118565b955061315960208801613118565b945061316760408801613118565b935061317560608801613118565b925061318360808801613118565b915061319160a08801613118565b90509295509295509295565b6000602082840312156131af57600080fd5b5035919050565b6000602082840312156131c857600080fd5b61166482613118565b6000602082840312156131e357600080fd5b813561ffff8116811461166457600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561321e57600080fd5b823567ffffffffffffffff8082111561323657600080fd5b818501915085601f83011261324a57600080fd5b813560208282111561325e5761325e6131f5565b8160051b604051601f19603f83011681018181108682111715613283576132836131f5565b6040529283528183019350848101820192898411156132a157600080fd5b948201945b838610156132c6576132b786612fc1565b855294820194938201936132a6565b96506132d59050878201613018565b9450505050509250929050565b600080604083850312156132f557600080fd5b50508035926020909101359150565b6000806040838503121561331757600080fd5b823561332281612fac565b91506020830135612fff8161300a565b602080825260129082015271086c2d8d8cae440dcdee840d2dc4082eae8d60731b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156133af5781600019048211156133955761339561335e565b808516156133a257918102915b93841c9390800290613379565b509250929050565b6000826133c65750600161102a565b816133d35750600061102a565b81600181146133e957600281146133f35761340f565b600191505061102a565b60ff8411156134045761340461335e565b50506001821b61102a565b5060208310610133831016604e8410600b8410161715613432575081810a61102a565b61343c8383613374565b80600019048211156134505761345061335e565b029392505050565b600061166460ff8416836133b7565b808202811582820484141761102a5761102a61335e565b8181038181111561102a5761102a61335e565b60ff818116838216019081111561102a5761102a61335e565b8082018082111561102a5761102a61335e565b6000602082840312156134cf57600080fd5b5051919050565b6000602082840312156134e857600080fd5b81516116648161300a565b60008261351057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161353d5761353d61335e565b5060010190565b634e487b7160e01b600052603160045260246000fd5b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b60006020828403121561359657600080fd5b815161166481612fac565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135f15784516001600160a01b0316835293830193918301916001016135cc565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561362757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201cd20663cfb3a87b3ea64aa018251d950f9d15d031a4aec188588309f78ad87d64736f6c63430008110033

Deployed Bytecode Sourcemap

18659:21110:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18873:66;;;;;;;;;;-1:-1:-1;18873:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;828:25:1;;;816:2;801:18;18873:66:0;;;;;;;;36295:110;;;;;;;;;;-1:-1:-1;36295:110:0;;;;;:::i;:::-;;:::i;37136:94::-;;;;;;;;;;-1:-1:-1;37217:5:0;;;;;;;;;;;;-1:-1:-1;;;37217:5:0;;;;37136:94;;;;;;;:::i;20689:32::-;;;;;;;;;;-1:-1:-1;20689:32:0;;;;;;;;;;;2091:4:1;2079:17;;;2061:36;;2049:2;2034:18;20689:32:0;1919:184:1;38135:193:0;;;;;;;;;;-1:-1:-1;38135:193:0;;;;;:::i;:::-;;:::i;:::-;;;2593:14:1;;2586:22;2568:41;;2556:2;2541:18;38135:193:0;2428:187:1;19596:36:0;;;;;;;;;;-1:-1:-1;19596:36:0;;;;-1:-1:-1;;;19596:36:0;;;;;;;;;2794:6:1;2782:19;;;2764:38;;2752:2;2737:18;19596:36:0;2620:188:1;36143:144:0;;;;;;;;;;-1:-1:-1;36143:144:0;;;;;:::i;:::-;;:::i;31725:104::-;;;;;;;;;;-1:-1:-1;31809:12:0;;31725:104;;20290:29;;;;;;;;;;-1:-1:-1;20290:29:0;;;;;;;;;;;37446:108;;;;;;;;;;-1:-1:-1;37528:18:0;;37446:108;;19332:67;;;;;;;;;;;;;:::i;19494:35::-;;;;;;;;;;-1:-1:-1;19494:35:0;;;;;;;;;;;32835:107;;;;;;;;;;-1:-1:-1;32835:107:0;;;;;:::i;:::-;;:::i;38681:426::-;;;;;;;;;;-1:-1:-1;38681:426:0;;;;;:::i;:::-;;:::i;30924:473::-;;;;;;;;;;-1:-1:-1;31238:12:0;;30924:473;;;31238:12;-1:-1:-1;;;31238:12:0;;;;3813:25:1;;31265:13:0;;;;;3869:2:1;3854:18;;3847:34;-1:-1:-1;;;31293:13:0;;;;3897:18:1;;;3890:34;;;;31321:7:0;;;3955:2:1;3940:18;;3933:34;31238:12:0;31343:8;;;;3998:3:1;3983:19;;3976:35;31366:12:0;;;;;4042:3:1;4027:19;;4020:35;3800:3;3785:19;30924:473:0;3526:535:1;20884:34:0;;;;;;;;;;-1:-1:-1;20884:34:0;;;;;;;-1:-1:-1;;;;;20884:34:0;;;;;;-1:-1:-1;;;;;4230:32:1;;;4212:51;;4200:2;4185:18;20884:34:0;4066:203:1;34122:610:0;;;;;;;;;;-1:-1:-1;34122:610:0;;;;;:::i;:::-;;:::i;20420:31::-;;;;;;;;;;-1:-1:-1;20420:31:0;;;;-1:-1:-1;;;20420:31:0;;;;;;19544:37;;;;;;;;;;-1:-1:-1;19544:37:0;;;;;;;;;;;37344:94;;;;;;;;;;-1:-1:-1;19324:1:0;37344:94;;20806:30;;;;;;;;;;;;;;;;34966:144;;;;;;;;;;-1:-1:-1;34966:144:0;;;;;:::i;:::-;;:::i;19290:35::-;;;;;;;;;;;;19324:1;19290:35;;36561:138;;;;;;;;;;-1:-1:-1;36561:138:0;;;;;:::i;:::-;;:::i;19650:42::-;;;;;;;;;;-1:-1:-1;19650:42:0;;;;;;;;;;;34854:104;;;;;;;;;;-1:-1:-1;34854:104:0;;;;;:::i;:::-;;:::i;20382:31::-;;;;;;;;;;-1:-1:-1;20382:31:0;;;;;;;;;;;39115:278;;;;;;;;;;-1:-1:-1;39115:278:0;;;;;:::i;:::-;;:::i;28022:25::-;;;;;;;;;;;;;;;;36413:140;;;;;;;;;;-1:-1:-1;36413:140:0;;;;;:::i;:::-;;:::i;20577:27::-;;;;;;;;;;;;;;;;35852:283;;;;;;;;;;-1:-1:-1;35852:283:0;;;;;:::i;:::-;;:::i;20226:24::-;;;;;;;;;;-1:-1:-1;20226:24:0;;;;;;;;20532:38;;;;;;;;;;;;;;;;32721:106;;;;;;;;;;-1:-1:-1;32721:106:0;;;;;:::i;:::-;;:::i;35432:26::-;;;;;;;;;;-1:-1:-1;35432:26:0;;;;;;;;;;;20121:45;;;;;;;;;;;;;;;;20173:44;;;;;;;;;;;;;;;;20768:31;;;;;;;;;;;;;;;;31943:96;;;;;;;;;;-1:-1:-1;31943:96:0;;;;;:::i;:::-;;:::i;32950:122::-;;;;;;;;;;-1:-1:-1;32950:122:0;;;;;:::i;:::-;;:::i;32138:92::-;;;;;;;;;;-1:-1:-1;32138:92:0;;;;;:::i;:::-;;:::i;18822:44::-;;;;;;;;;;-1:-1:-1;18822:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;30728:188;;;;;;;;;;;;;:::i;:::-;;;;5798:25:1;;;5854:2;5839:18;;5832:34;;;;5771:18;30728:188:0;5624:248:1;37562:162:0;;;;;;;;;;-1:-1:-1;37562:162:0;;;;;:::i;:::-;-1:-1:-1;;;;;37698:18:0;37666:7;37698:18;;;:9;:18;;;;;;;37562:162;20066:48;;;;;;;;;;;;;;;;20728:31;;;;;;;;;;-1:-1:-1;20728:31:0;;;;;;;;;;;19928:73;;;;;;;;;;;;19959:42;19928:73;;31906:28;;;;;;;;;;-1:-1:-1;31906:28:0;;;;;;;;31405:312;;;;;;;;;;-1:-1:-1;31405:312:0;;;;;:::i;:::-;;:::i;31837:28::-;;;;;;;;;;-1:-1:-1;31837:28:0;;;;;;;;;;;37034:94;;;;;;;;;;-1:-1:-1;37086:7:0;9827:6;-1:-1:-1;;;;;9827:6:0;37034:94;;32505:208;;;;;;;;;;-1:-1:-1;32505:208:0;;;;;:::i;:::-;;:::i;33490:268::-;;;;;;;;;;;;;:::i;20925:38::-;;;;;;;;;;-1:-1:-1;20925:38:0;;;;-1:-1:-1;;;;;20925:38:0;;;37238:98;;;;;;;;;;-1:-1:-1;37321:7:0;;;;;;;;;;;;-1:-1:-1;;;37321:7:0;;;;37238:98;;33766:108;;;;;;;;;;-1:-1:-1;33766:108:0;;;;;:::i;:::-;;:::i;20458:30::-;;;;;;;;;;-1:-1:-1;20458:30:0;;;;-1:-1:-1;;;20458:30:0;;;;;;30472:248;;;;;;;;;;-1:-1:-1;30472:248:0;;;;;:::i;:::-;;:::i;9975:134::-;;;;;;;;;;;;;:::i;19111:42::-;;;;;;;;;;-1:-1:-1;19111:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20010:49;;;;;;;;;;;;;;;;39401:365;;;;;;;;;;-1:-1:-1;39401:365:0;;;;;:::i;:::-;;:::i;35512:158::-;;;;;;;;;;-1:-1:-1;35512:158:0;;;;;:::i;:::-;;:::i;37732:199::-;;;;;;;;;;-1:-1:-1;37732:199:0;;;;;:::i;:::-;;:::i;33882:102::-;;;;;;;;;;-1:-1:-1;33882:102:0;;;;;:::i;:::-;;:::i;33992:122::-;;;;;;;;;;-1:-1:-1;33992:122:0;;;;;:::i;:::-;;:::i;19242:41::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19242:41:0;;;;;35118:306;;;;;;;;;;-1:-1:-1;35118:306:0;;;;;:::i;:::-;;:::i;36861:90::-;;;;;;;;;;-1:-1:-1;36861:90:0;;;;;:::i;:::-;;:::i;19741:91::-;;;;;;;;;;;;19790:42;19741:91;;20257:26;;;;;;;;;;-1:-1:-1;20257:26:0;;;;;;;;;;;32047:83;;;;;;;;;;-1:-1:-1;32047:83:0;;;;;:::i;:::-;;:::i;19192:43::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19192:43:0;;;;;32384:113;;;;;;;;;;;;;:::i;32269:107::-;;;;;;;;;;-1:-1:-1;32269:107:0;;;;;:::i;:::-;;:::i;33080:123::-;;;;;;;;;;-1:-1:-1;33080:123:0;;;;;:::i;:::-;;:::i;37939:188::-;;;;;;;;;;-1:-1:-1;37939:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;38091:19:0;;;38059:7;38091:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;37939:188;36707:146;;;;;;;;;;;;;:::i;34740:106::-;;;;;;;;;;-1:-1:-1;34740:106:0;;;;;:::i;:::-;;:::i;33211:271::-;;;;;;;;;;;;;:::i;10117:273::-;;;;;;;;;;-1:-1:-1;10117:273:0;;;;;:::i;:::-;;:::i;31872:27::-;;;;;;;;;;;;;;;;18946:44;;;;;;;;;;-1:-1:-1;18946:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;35678:166;;;;;;;;;;-1:-1:-1;35678:166:0;;;;;:::i;:::-;;:::i;36295:110::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;;;;;;;;;36371:17:::1;:26:::0;;-1:-1:-1;;36371:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36295:110::o;38135:193::-;38239:4;38261:37;38270:10;38282:7;38291:6;38261:8;:37::i;:::-;-1:-1:-1;38316:4:0;38135:193;;;;;:::o;36143:144::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;36247:11:::1;:32:::0;;-1:-1:-1;;36247:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36143:144::o;19332:67::-;19386:13;19324:1;19386:2;:13;:::i;:::-;19372:27;;:11;:27;:::i;:::-;19332:67;:::o;32835:107::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;32909:25:::1;:9;32926:7:::0;32909:16:::1;:25::i;:::-;;32835:107:::0;:::o;38681:426::-;38815:4;38832:36;38842:6;38850:9;38861:6;38832:9;:36::i;:::-;-1:-1:-1;;;;;38908:19:0;;38881:24;38908:19;;;:11;:19;;;;;;;;38928:10;38908:31;;;;;;;;38958:26;;;;38950:59;;;;-1:-1:-1;;;38950:59:0;;10314:2:1;38950:59:0;;;10296:21:1;10353:2;10333:18;;;10326:30;-1:-1:-1;;;10372:18:1;;;10365:50;10432:18;;38950:59:0;10112:344:1;38950:59:0;39022:55;39031:6;39039:10;39051:25;39070:6;39051:16;:25;:::i;:::-;39022:8;:55::i;:::-;-1:-1:-1;39095:4:0;;38681:426;-1:-1:-1;;;;38681:426:0:o;34122:610::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;34341:14:::1;34417::::0;34358:43:::1;34387:14:::0;34358:13;:43:::1;:::i;:::-;:73;;;;:::i;:::-;34341:90;;34450:8;:15;;34462:3;34450:15;34442:66;;;::::0;-1:-1:-1;;;34442:66:0;;10949:2:1;34442:66:0::1;::::0;::::1;10931:21:1::0;10988:2;10968:18;;;10961:30;11027:34;11007:18;;;11000:62;-1:-1:-1;;;11078:18:1;;;11071:36;11124:19;;34442:66:0::1;10747:402:1::0;34442:66:0::1;-1:-1:-1::0;34519:12:0::1;:28:::0;;::::1;34698:26:::0;;::::1;::::0;::::1;-1:-1:-1::0;;34669:18:0;;::::1;34519:28;34669:18;-1:-1:-1::0;;34599:30:0;;::::1;-1:-1:-1::0;;;34599:30:0::1;34669:18:::0;;;;-1:-1:-1;;34558:30:0;;::::1;::::0;::::1;-1:-1:-1::0;;34519:28:0;;::::1;-1:-1:-1::0;;;34519:28:0::1;34558:30:::0;;;;-1:-1:-1;;34558:30:0;;;;;;;;;;::::1;34669:18:::0;;;;;;;;34642:16;::::1;34669:18:::0;;;;;;;::::1;34698:26;::::0;;;::::1;::::0;;34122:610::o;34966:144::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;35070:32:::1;35089:12;:4:::0;35096:5:::1;35089:12;:::i;:::-;35070:18;:32::i;:::-;34966:144:::0;:::o;36561:138::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36663:20:0::1;36686:5;36663:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;36663:28:0::1;::::0;;36561:138::o;34854:104::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;34926:13:::1;:24:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;34926:24:0;;::::1;::::0;;;::::1;::::0;;34854:104::o;39115:278::-;39260:10;39215:4;39307:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;39307:32:0;;;;;;;;;;39215:4;;39237:126;;39285:7;;39307:45;;39342:10;;39307:45;:::i;36413:140::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36515:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;36515:30:0::1;36541:4;36515:30;::::0;;36413:140::o;35852:283::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;35986:30:::1;::::0;-1:-1:-1;;;35986:30:0;;36010:4:::1;35986:30;::::0;::::1;4212:51:1::0;35943:10:0;;35921:12:::1;::::0;-1:-1:-1;;;;;35986:15:0;::::1;::::0;::::1;::::0;4185:18:1;;35986:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35965:51;;36048:1;36035:10;:14;36027:51;;;::::0;-1:-1:-1;;;36027:51:0;;11675:2:1;36027:51:0::1;::::0;::::1;11657:21:1::0;11714:2;11694:18;;;11687:30;11753:26;11733:18;;;11726:54;11797:18;;36027:51:0::1;11473:348:1::0;36027:51:0::1;36089:38;::::0;-1:-1:-1;;;36089:38:0;;36104:10:::1;36089:38;::::0;::::1;12000:51:1::0;12067:18;;;12060:34;;;-1:-1:-1;;;;;36089:14:0;::::1;::::0;::::1;::::0;11973:18:1;;36089:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35910:225;;35852:283:::0;:::o;32721:106::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;32797:22:::1;:9;32811:7:::0;32797:13:::1;:22::i;31943:96::-:0;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;32008:12:::1;:23:::0;;-1:-1:-1;;32008:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31943:96::o;32950:122::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;33030:34:::1;:21;33056:7:::0;33030:25:::1;:34::i;32138:92::-:0;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;32201:15:::1;:21:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;32201:21:0;;::::1;::::0;;;::::1;::::0;;32138:92::o;30728:188::-;30797:15;;30867:13;19324:1;30867:2;:13;:::i;:::-;30852:12;;:28;;;;:::i;:::-;30894:13;19324:1;30894:2;:13;:::i;:::-;30882:9;;:25;;;;:::i;:::-;30844:64;;;;30728:188;;:::o;31405:312::-;-1:-1:-1;;;;;31562:25:0;;31518:7;31562:25;;;:9;:25;;;;;;31614:15;31602:27;;31598:68;;-1:-1:-1;31653:1:0;;31405:312;-1:-1:-1;;31405:312:0:o;31598:68::-;31683:26;31694:15;31683:8;:26;:::i;:::-;31676:33;31405:312;-1:-1:-1;;;31405:312:0:o;32505:208::-;32586:10;19879:42;32586:26;32577:36;;;;;;32630:6;32625:81;32646:4;:11;32642:1;:15;32625:81;;;32693:5;32675:6;:15;32682:4;32687:1;32682:7;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;32675:15:0;;;;;;;;;;;-1:-1:-1;32675:15:0;:23;;-1:-1:-1;;32675:23:0;;;;;;;;;;32659:3;;;;:::i;:::-;;;;32625:81;;;;32505:208;;:::o;33490:268::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;33565:15:::1;::::0;;33548:14:::1;33591:19:::0;;;;33675:32:::1;::::0;33565:15;;33638:10:::1;::::0;;;33565:15;;33675:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33659:48;;;33726:4;33718:32;;;::::0;-1:-1:-1;;;33718:32:0;;13261:2:1;33718:32:0::1;::::0;::::1;13243:21:1::0;13300:2;13280:18;;;13273:30;-1:-1:-1;;;13319:18:1;;;13312:45;13374:18;;33718:32:0::1;13059:339:1::0;33766:108:0;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;33841:16:::1;:25:::0;;-1:-1:-1;;33841:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33766:108::o;30472:248::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;30558:4:::1;30540:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;30540:34:0::1;30532:43;;;::::0;::::1;;30604:4;30586:24;::::0;;;:9:::1;:24;::::0;;;;:34;;30614:6;;30586:24;:34:::1;::::0;30614:6;;30586:34:::1;:::i;:::-;;;;;;;;30653:6;30631:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;30675:37:0::1;::::0;828:25:1;;;19959:42:0::1;::::0;30692:4:::1;::::0;-1:-1:-1;;;;;;;;;;;30675:37:0;816:2:1;801:18;30675:37:0::1;;;;;;;30472:248:::0;:::o;9975:134::-;9900:10;9889:7;9800;9827:6;-1:-1:-1;;;;;9827:6:0;;9762:79;9889:7;-1:-1:-1;;;;;9889:21:0;;9881:66;;;;-1:-1:-1;;;9881:66:0;;13605:2:1;9881:66:0;;;13587:21:1;;;13624:18;;;13617:30;13683:34;13663:18;;;13656:62;13735:18;;9881:66:0;13403:356:1;9881:66:0;10068:1:::1;10052:6:::0;;10031:40:::1;::::0;-1:-1:-1;;;;;10052:6:0;;::::1;::::0;10031:40:::1;::::0;10068:1;;10031:40:::1;10099:1;10082:19:::0;;-1:-1:-1;;;;;;10082:19:0::1;::::0;;9975:134::o;39401:365::-;39567:10;39506:4;39555:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;39555:32:0;;;;;;;;;;39606:35;;;;39598:60;;;;-1:-1:-1;;;39598:60:0;;13966:2:1;39598:60:0;;;13948:21:1;14005:2;13985:18;;;13978:30;-1:-1:-1;;;14024:18:1;;;14017:42;14076:18;;39598:60:0;13764:336:1;39598:60:0;39671:65;39680:10;39692:7;39701:34;39720:15;39701:16;:34;:::i;39671:65::-;-1:-1:-1;39754:4:0;;39401:365;-1:-1:-1;;;39401:365:0:o;35512:158::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;35569:5:::1;35566:64;;;35606:12;35591;:27:::0;35566:64:::1;35640:14;:22:::0;;;::::1;;;;-1:-1:-1::0;;35640:22:0;;::::1;::::0;;;::::1;::::0;;35512:158::o;37732:199::-;37839:4;37861:40;37871:10;37883:9;37894:6;37861:9;:40::i;33882:102::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;33949:16:::1;:27:::0;;;::::1;;;;-1:-1:-1::0;;33949:27:0;;::::1;::::0;;;::::1;::::0;;33882:102::o;33992:122::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;34076:12:::1;:30:::0;33992:122::o;35118:306::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;35273:13:::1;19324:1;35273:2;:13;:::i;:::-;35255:31;::::0;:15;:31:::1;:::i;:::-;35237:49:::0;-1:-1:-1;35327:13:0::1;19324:1;35327:2;:13;:::i;:::-;35312:28;::::0;:12;:28:::1;:::i;:::-;35351:12;:30:::0;;;;-1:-1:-1;35392:9:0::1;:24:::0;35118:306::o;36861:90::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;36924:7:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;36924:19:0::1;-1:-1:-1::0;;;;36924:19:0;;::::1;::::0;;;::::1;::::0;;36861:90::o;32047:83::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;32107:9:::1;:15:::0;32047:83::o;32384:113::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;32461:28:::1;:15;32480:8;32461:28;:::i;:::-;32447:10;32437:21;::::0;;;:9:::1;:21;::::0;;;;:52;32384:113::o;32269:107::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32344:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;32344:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32269:107::o;33080:123::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;33158:37:::1;:21;33187:7:::0;33158:28:::1;:37::i;36707:146::-:0;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;36770:51:::1;::::0;36755:9:::1;::::0;36770:10:::1;::::0;36794:21:::1;::::0;36755:9;36770:51;36755:9;36770:51;36794:21;36770:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36754:67;;;36840:4;36832:13;;;::::0;::::1;34740:106:::0;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;34813:14:::1;:25:::0;;-1:-1:-1;;34813:25:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;34740:106::o;33211:271::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;33287:16:::1;::::0;;33270:14:::1;33314:20:::0;;;;33399:32:::1;::::0;33287:16;;33362:10:::1;::::0;;;33287:16;;33399:32:::1;12849:205:1::0;10117:273:0;9900:10;9889:7;9800;9827:6;-1:-1:-1;;;;;9827:6:0;;9762:79;9889:7;-1:-1:-1;;;;;9889:21:0;;9881:66;;;;-1:-1:-1;;;9881:66:0;;13605:2:1;9881:66:0;;;13587:21:1;;;13624:18;;;13617:30;13683:34;13663:18;;;13656:62;13735:18;;9881:66:0;13403:356:1;9881:66:0;-1:-1:-1;;;;;10212:22:0;::::1;10190:110;;;::::0;-1:-1:-1;;;10190:110:0;;14307:2:1;10190:110:0::1;::::0;::::1;14289:21:1::0;14346:2;14326:18;;;14319:30;14385:34;14365:18;;;14358:62;-1:-1:-1;;;14436:18:1;;;14429:36;14482:19;;10190:110:0::1;14105:402:1::0;10190:110:0::1;10337:6;::::0;;10316:38:::1;::::0;-1:-1:-1;;;;;10316:38:0;;::::1;::::0;10337:6;::::1;::::0;10316:38:::1;::::0;::::1;10365:6;:17:::0;;-1:-1:-1;;;;;;10365:17:0::1;-1:-1:-1::0;;;;;10365:17:0;;;::::1;::::0;;;::::1;::::0;;10117:273::o;35678:166::-;21065:19;21073:10;21065:7;:19::i;:::-;21057:50;;;;-1:-1:-1;;;21057:50:0;;;;;;;:::i;:::-;35790:22:::1;:46:::0;;-1:-1:-1;;;;;35790:46:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;35790:46:0;;::::1;::::0;;;::::1;::::0;;35678:166::o;16914:175::-;17002:4;17031:50;17036:3;-1:-1:-1;;;;;17056:23:0;;17031:4;:50::i;21135:116::-;21188:4;9827:6;;-1:-1:-1;;;;;21212:15:0;;;9827:6;;21212:15;;:31;;-1:-1:-1;;;;;;;21231:12:0;;;;;:6;:12;;;;;;;;;21135:116::o;38336:337::-;-1:-1:-1;;;;;38464:20:0;;38456:50;;;;-1:-1:-1;;;38456:50:0;;14714:2:1;38456:50:0;;;14696:21:1;14753:2;14733:18;;;14726:30;-1:-1:-1;;;14772:18:1;;;14765:47;14829:18;;38456:50:0;14512:341:1;38456:50:0;-1:-1:-1;;;;;38525:21:0;;38517:49;;;;-1:-1:-1;;;38517:49:0;;15060:2:1;38517:49:0;;;15042:21:1;15099:2;15079:18;;;15072:30;-1:-1:-1;;;15118:18:1;;;15111:45;15173:18;;38517:49:0;14858:339:1;38517:49:0;-1:-1:-1;;;;;38579:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;38632:33;;828:25:1;;;38632:33:0;;801:18:1;38632:33:0;;;;;;;38336:337;;;:::o;17097:181::-;17188:4;17217:53;17225:3;-1:-1:-1;;;;;17245:23:0;;17217:7;:53::i;22269:2412::-;-1:-1:-1;;;;;22400:20:0;;22392:51;;;;-1:-1:-1;;;22392:51:0;;15404:2:1;22392:51:0;;;15386:21:1;15443:2;15423:18;;;15416:30;-1:-1:-1;;;15462:18:1;;;15455:48;15520:18;;22392:51:0;15202:342:1;22392:51:0;-1:-1:-1;;;;;22462:23:0;;22454:52;;;;-1:-1:-1;;;22454:52:0;;15751:2:1;22454:52:0;;;15733:21:1;15790:2;15770:18;;;15763:30;-1:-1:-1;;;15809:18:1;;;15802:46;15865:18;;22454:52:0;15549:340:1;22454:52:0;22521:11;;;;22517:163;;;-1:-1:-1;;;;;22576:18:0;;;;;;:10;:18;;;;;;;;22575:19;:45;;;;-1:-1:-1;;;;;;22599:21:0;;;;;;:10;:21;;;;;;;;22598:22;22575:45;22549:119;;;;-1:-1:-1;;;22549:119:0;;16096:2:1;22549:119:0;;;16078:21:1;16135:2;16115:18;;;16108:30;-1:-1:-1;;;16154:18:1;;;16147:42;16206:18;;22549:119:0;15894:336:1;22549:119:0;22692:15;22711:26;:9;22730:6;22711:18;:26::i;:::-;:72;;;-1:-1:-1;22754:29:0;:9;22773;22754:18;:29::i;:::-;22711:103;;;-1:-1:-1;;;;;;22800:14:0;;;;;;:6;:14;;;;;;;;22711:103;:137;;;-1:-1:-1;;;;;;22831:17:0;;;;;;:6;:17;;;;;;;;22711:137;22692:157;-1:-1:-1;22862:23:0;-1:-1:-1;;;;;22889:23:0;;22907:4;22889:23;;:66;;-1:-1:-1;;;;;;22929:26:0;;22950:4;22929:26;22889:66;23008:19;;22862:94;;-1:-1:-1;22969:24:0;;-1:-1:-1;;;;;22998:29:0;;;23008:19;;;;;22998:29;:72;;;;-1:-1:-1;;;;;;23044:26:0;;19790:42;23044:26;22998:72;22997:152;;;-1:-1:-1;23102:19:0;;-1:-1:-1;;;;;23089:32:0;;;23102:19;;;;;23089:32;:59;;;;-1:-1:-1;;;;;;23125:23:0;;19790:42;23125:23;23089:59;22969:181;;23181:18;:41;;;;23203:19;23181:41;:55;;;;23226:10;23181:55;23163:1511;;;23263:43;23280:6;23288:9;23299:6;23263:16;:43::i;:::-;23163:1511;;;23344:14;;;;;;;23339:1026;;9800:7;9827:6;-1:-1:-1;;;;;23385:17:0;;;9827:6;;23385:17;;;;:41;;-1:-1:-1;9800:7:0;9827:6;-1:-1:-1;;;;;23406:20:0;;;9827:6;;23406:20;;23385:41;23384:86;;;-1:-1:-1;;;;;;23433:14:0;;;;;;:6;:14;;;;;;;;23432:15;:37;;;;-1:-1:-1;;;;;;23452:17:0;;;;;;:6;:17;;;;;;;;23451:18;23432:37;23379:397;;;23502:7;;-1:-1:-1;;;23502:7:0;;;;23499:258;;;23564:9;-1:-1:-1;;;;;23547:30:0;23556:6;-1:-1:-1;;;;;23547:30:0;-1:-1:-1;;;;;;;;;;;23575:1:0;23547:30;;;;828:25:1;;816:2;801:18;;682:177;23547:30:0;;;;;;;;23608:7;;;22269:2412;;;:::o;23499:258::-;23687:14;;;;;;;23679:50;;;;-1:-1:-1;;;23679:50:0;;16627:2:1;23679:50:0;;;16609:21:1;16666:2;16646:18;;;16639:30;16705:25;16685:18;;;16678:53;16748:18;;23679:50:0;16425:347:1;23679:50:0;23339:1026;;;23923:12;;23906;;23891:27;;:12;:27;:::i;:::-;23890:45;23886:464;;9800:7;9827:6;-1:-1:-1;;;;;23966:17:0;;;9827:6;;23966:17;;;;:41;;-1:-1:-1;9800:7:0;9827:6;-1:-1:-1;;;;;23987:20:0;;;9827:6;;23987:20;;23966:41;23965:86;;;-1:-1:-1;;;;;;24014:14:0;;;;;;:6;:14;;;;;;;;24013:15;:37;;;;-1:-1:-1;;;;;;24033:17:0;;;;;;:6;:17;;;;;;;;24032:18;24013:37;23960:371;;;24084:7;;-1:-1:-1;;;24084:7:0;;;;24080:228;;;24146:9;-1:-1:-1;;;;;24129:30:0;24138:6;-1:-1:-1;;;;;24129:30:0;-1:-1:-1;;;;;;;;;;;24157:1:0;24129:30;;;;828:25:1;;816:2;801:18;;682:177;24080:228:0;24261:19;;-1:-1:-1;;;24261:19:0;;16979:2:1;24261:19:0;;;16961:21:1;17018:1;16998:18;;;16991:29;-1:-1:-1;;;17036:18:1;;;17029:38;17084:18;;24261:19:0;16777:331:1;24080:228:0;24418:19;;24395:10;;-1:-1:-1;;;;;24408:29:0;;;24418:19;;;;;24408:29;;:73;;-1:-1:-1;;;;;;24458:23:0;;19790:42;24458:23;24408:73;24523:19;;24395:86;;-1:-1:-1;24496:11:0;;-1:-1:-1;;;;;24510:32:0;;;24523:19;;;;;24510:32;;:79;;-1:-1:-1;;;;;;24563:26:0;;19790:42;24563:26;24510:79;24496:93;;24604:56;24619:6;24627:9;24638:6;24646:5;24653:6;24604:14;:56::i;:::-;23324:1350;;23163:1511;22381:2300;;;22269:2412;;;:::o;28245:1320::-;28137:27;:34;;-1:-1:-1;;28137:34:0;28167:4;28137:34;;;;;;28366:4:::1;28137:27:::0;28348:24;;;::::1;::::0;;;;;;;;28417:13:::1;::::0;28348:24;;28137:27;28401:29:::1;::::0;-1:-1:-1;;;28417:13:0;::::1;28137:34:::0;28417:13;;::::1;::::0;28401;;::::1;;:29;:::i;:::-;28383:47;;;;28441:19;28463:9;;28441:31;;28501:8;28487:11;:22;28483:129;;;28530:12;::::0;::::1;;28526:75;;;-1:-1:-1::0;28577:8:0;28526:75:::1;28644:11;28626:15;:29;:46;;;-1:-1:-1::0;28659:13:0::1;::::0;::::1;::::0;28626:46:::1;28622:85;;;28689:7;;;;;28622:85;28760:13;::::0;28717:25:::1;::::0;28745:40:::1;::::0;::::1;::::0;28746:27:::1;::::0;28760:13;;::::1;;;28746:11:::0;:27:::1;:::i;:::-;28745:40;;;;:::i;:::-;28839:13;::::0;28717:68;;-1:-1:-1;28796:25:0::1;::::0;28824:40:::1;::::0;::::1;::::0;28825:27:::1;::::0;-1:-1:-1;;;28839:13:0;::::1;;;28825:11:::0;:27:::1;:::i;:::-;28824:40;;;;:::i;:::-;28917:12;::::0;28796:68;;-1:-1:-1;28875:24:0::1;::::0;28902:39:::1;::::0;::::1;::::0;28903:26:::1;::::0;-1:-1:-1;;;28917:12:0;::::1;;;28903:11:::0;:26:::1;:::i;:::-;28902:39;;;;:::i;:::-;28875:66:::0;-1:-1:-1;28954:16:0::1;28973:21;28993:1;28973:17:::0;:21:::1;:::i;:::-;28954:40:::0;-1:-1:-1;29005:19:0::1;29027:28;28954:40:::0;29027:17;:28:::1;:::i;:::-;29005:50:::0;-1:-1:-1;29068:17:0::1;29148:16:::0;29088:44:::1;29115:17:::0;29005:50;29088:44:::1;:::i;:::-;:76;;;;:::i;:::-;29068:96:::0;-1:-1:-1;29203:21:0::1;29235:27;29068:96:::0;29235:16:::1;:27::i;:::-;29273:14;29291:41;29315:17:::0;29291:21:::1;:41;:::i;:::-;29273:60:::0;-1:-1:-1;29344:14:0::1;29386:9:::0;29362:20:::1;29371:11:::0;29273:60;29362:20:::1;:::i;:::-;29361:34;;;;:::i;:::-;29344:51;;29406:31;29420:8;29430:6;29406:13;:31::i;:::-;29448:20;29472:41;29496:17:::0;29472:21:::1;:41;:::i;:::-;29448:66;;29525:32;29544:12;29525:18;:32::i;:::-;28311:1254;;;;;;;;;;;;;28182:1;-1:-1:-1::0;28194:27:0;:35;;-1:-1:-1;;28194:35:0;;;28245:1320::o;14535:291::-;14598:4;15572:19;;;:12;;;:19;;;;;;14615:204;;-1:-1:-1;14658:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;14718:18;;14696:19;;;:12;;;:19;;;;;;:40;;;;14751:11;;14615:204;-1:-1:-1;14802:5:0;14795:12;;14834:601;14900:4;14938:19;;;:12;;;:19;;;;;;14974:15;;14970:458;;15006:21;15030:14;15043:1;15030:10;:14;:::i;:::-;15079:18;;15006:38;;-1:-1:-1;15059:17:0;;15079:22;;15100:1;;15079:22;:::i;:::-;15059:42;;15118:17;15138:3;:11;;15150:9;15138:22;;;;;;;;:::i;:::-;;;;;;;;;15118:42;;15206:9;15177:3;:11;;15189:13;15177:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;15230:23;;;:12;;;:23;;;;;;:36;;;15283:17;;15230:3;;15283:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15324:3;:12;;:19;15337:5;15324:19;;;;;;;;;;;15317:26;;;15367:4;15360:11;;;;;;;;14970:458;15411:5;15404:12;;;;;17286:199;-1:-1:-1;;;;;17452:23:0;;17393:4;15572:19;;;:12;;;:19;;;;;;:24;;17422:55;15443:161;26797:381;-1:-1:-1;;;;;26951:17:0;;26927:21;26951:17;;;:9;:17;;;;;;26987:23;;;;26979:60;;;;-1:-1:-1;;;26979:60:0;;17447:2:1;26979:60:0;;;17429:21:1;17486:2;17466:18;;;17459:30;-1:-1:-1;;;17505:18:1;;;17498:54;17569:18;;26979:60:0;17245:348:1;26979:60:0;27050:28;27063:6;27071;27050:12;:28::i;:::-;27089;27099:9;27110:6;27089:9;:28::i;:::-;27152:9;-1:-1:-1;;;;;27135:35:0;27144:6;-1:-1:-1;;;;;27135:35:0;-1:-1:-1;;;;;;;;;;;27163:6:0;27135:35;;;;828:25:1;;816:2;801:18;;682:177;27135:35:0;;;;;;;;26916:262;26797:381;;;:::o;24689:2100::-;-1:-1:-1;;;;;24887:20:0;;;24860:24;24887:20;;;:9;:20;;;;;;;24942:17;;;;;;;;24978:23;;;;24970:60;;;;-1:-1:-1;;;24970:60:0;;17447:2:1;24970:60:0;;;17429:21:1;17486:2;17466:18;;;17459:30;-1:-1:-1;;;17505:18:1;;;17498:54;17569:18;;24970:60:0;17245:348:1;24970:60:0;25067:1;25055:9;;:13;;;;:::i;:::-;25043:9;:25;25081:9;25101:1087;;;;25133:38;:21;25164:6;25133:30;:38::i;:::-;25128:297;;-1:-1:-1;;;;;25222:17:0;;;;;;:9;:17;;;;;;25243:15;-1:-1:-1;25222:36:0;;:56;;-1:-1:-1;25262:16:0;;;;;;;25222:56;25192:148;;;;-1:-1:-1;;;25192:148:0;;17800:2:1;25192:148:0;;;17782:21:1;17839:2;17819:18;;;17812:30;-1:-1:-1;;;17858:18:1;;;17851:48;17916:18;;25192:148:0;17598:342:1;25192:148:0;25397:12;;25379:30;;:15;:30;:::i;:::-;-1:-1:-1;;;;;25359:17:0;;;;;;:9;:17;;;;;:50;25128:297;25459:9;;25449:6;:19;;25441:47;;;;-1:-1:-1;;;25441:47:0;;18147:2:1;25441:47:0;;;18129:21:1;18186:2;18166:18;;;18159:30;-1:-1:-1;;;18205:18:1;;;18198:45;18260:18;;25441:47:0;17945:339:1;25441:47:0;-1:-1:-1;25509:8:0;;;;;;;25101:1087;;;25539:5;25535:653;;;25616:12;;25587:25;25606:6;25587:16;:25;:::i;:::-;:41;;25561:119;;;;-1:-1:-1;;;25561:119:0;;;;;;;:::i;:::-;25713:8;;25703:6;:18;;25695:47;;;;-1:-1:-1;;;25695:47:0;;;;;;;:::i;:::-;-1:-1:-1;25763:7:0;;;;25535:653;;;25858:12;;25829:25;25848:6;25829:16;:25;:::i;:::-;:41;;25803:119;;;;-1:-1:-1;;;25803:119:0;;;;;;;:::i;:::-;25942:38;:21;25973:6;25942:30;:38::i;:::-;25937:206;;-1:-1:-1;;;;;26029:17:0;;;;;;:9;:17;;;;;;26050:15;-1:-1:-1;26029:36:0;;:56;;-1:-1:-1;26069:16:0;;;;;;;26029:56;25999:144;;;;-1:-1:-1;;;25999:144:0;;18836:2:1;25999:144:0;;;18818:21:1;18875:2;18855:18;;;18848:30;-1:-1:-1;;;18894:18:1;;;18887:44;18948:18;;25999:144:0;18634:338:1;25999:144:0;-1:-1:-1;26164:12:0;;;;;;;25535:653;26227:19;;-1:-1:-1;;;;;26217:29:0;;;26227:19;;;;;26217:29;;;;26216:67;;-1:-1:-1;26266:16:0;;;;26265:17;26216:67;:114;;;;-1:-1:-1;26302:27:0;;;;26301:28;26216:114;26198:170;;;26342:26;26361:6;26342:18;:26::i;:::-;26502:12;;26379:21;;26403:122;;26431:6;;26452:3;;26502:12;-1:-1:-1;;;26502:12:0;;;;;26470:29;;26486:13;;;;;;-1:-1:-1;;;26470:13:0;;;:29;:::i;:::-;:44;;;;:::i;:::-;26403:13;:122::i;:::-;26379:146;-1:-1:-1;26536:19:0;26558:24;26379:146;26558:6;:24;:::i;:::-;26536:46;;26595:28;26608:6;26616;26595:12;:28::i;:::-;26654:4;26636:24;;;;:9;:24;;;;;:41;;26664:13;;26636:24;:41;;26664:13;;26636:41;:::i;:::-;;;;-1:-1:-1;26690:33:0;;-1:-1:-1;26700:9:0;26711:11;26690:9;:33::i;:::-;26758:9;-1:-1:-1;;;;;26741:40:0;26750:6;-1:-1:-1;;;;;26741:40:0;-1:-1:-1;;;;;;;;;;;26769:11:0;26741:40;;;;828:25:1;;816:2;801:18;;682:177;26741:40:0;;;;;;;;24849:1940;;;;;24689:2100;;;;;:::o;29573:455::-;29666:14;;29634:56;;29651:4;;-1:-1:-1;;;;;29666:14:0;29683:6;29634:8;:56::i;:::-;29725:16;;;29739:1;29725:16;;;;;;;;29701:21;;29725:16;;;;;;;;;;-1:-1:-1;29725:16:0;29701:40;;29770:4;29752;29757:1;29752:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29752:23:0;;;:7;;;;;;;;;;:23;;;;29796:14;;:21;;;-1:-1:-1;;;29796:21:0;;;;:14;;;;;:19;;:21;;;;;29752:7;;29796:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29786:4;29791:1;29786:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29786:31:0;;;:7;;;;;;;;;:31;29830:14;;:190;;-1:-1:-1;;;29830:190:0;;:14;;;:65;;:190;;29910:6;;29830:14;;29947:4;;29974;;29994:15;;29830:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30036:399;30132:9;30118:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;30184:14:0;;30152:61;;30169:4;;-1:-1:-1;;;;;30184:14:0;30201:11;30152:8;:61::i;:::-;30224:14;;:203;;-1:-1:-1;;;30224:203:0;;30295:4;30224:203;;;20559:34:1;;;20609:18;;;20602:34;;;30224:14:0;20652:18:1;;;20645:34;;;20695:18;;;20688:34;20738:19;;;20731:44;30401:15:0;20791:19:1;;;20784:35;-1:-1:-1;;;;;30224:14:0;;;;:30;;30262:9;;20493:19:1;;30224:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30036:399;;:::o;27723:291::-;27827:14;;27789:22;;27845:3;;27815:26;;27827:14;;27815:9;:26;:::i;:::-;27814:34;;;;:::i;:::-;27896:13;;27789:59;;-1:-1:-1;27859:21:0;;27913:3;;27884:25;;27896:13;;;;;27884:9;:25;:::i;:::-;27883:33;;;;:::i;:::-;27859:57;;27949:14;27929:16;;:34;;;;;;;:::i;:::-;;;;;;;;27993:13;27974:15;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;27723:291:0:o;27554:161::-;-1:-1:-1;;;;;27645:15:0;;27625:17;27645:15;;;:9;:15;;;;;;:24;;27663:6;;27645:24;:::i;:::-;-1:-1:-1;;;;;27680:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;27554:161:0:o;27388:158::-;-1:-1:-1;;;;;27476:15:0;;27456:17;27476:15;;;:9;:15;;;;;;:24;;27494:6;;27476:24;:::i;27186:194::-;27310:7;27367:5;27353:10;27338:25;;27347:3;27338:12;;:6;:12;;;;:::i;:::-;:25;;;;:::i;:::-;27337:35;;;;:::i;:::-;27330:42;27186:194;-1:-1:-1;;;;27186:194:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:388::-;357:6;365;418:2;406:9;397:7;393:23;389:32;386:52;;;434:1;431;424:12;386:52;473:9;460:23;492:31;517:5;492:31;:::i;:::-;542:5;-1:-1:-1;599:2:1;584:18;;571:32;612:33;571:32;612:33;:::i;:::-;664:7;654:17;;;289:388;;;;;:::o;864:118::-;950:5;943:13;936:21;929:5;926:32;916:60;;972:1;969;962:12;987:128;1052:20;;1081:28;1052:20;1081:28;:::i;1120:241::-;1176:6;1229:2;1217:9;1208:7;1204:23;1200:32;1197:52;;;1245:1;1242;1235:12;1197:52;1284:9;1271:23;1303:28;1325:5;1303:28;:::i;1366:548::-;1478:4;1507:2;1536;1525:9;1518:21;1568:6;1562:13;1611:6;1606:2;1595:9;1591:18;1584:34;1636:1;1646:140;1660:6;1657:1;1654:13;1646:140;;;1755:14;;;1751:23;;1745:30;1721:17;;;1740:2;1717:26;1710:66;1675:10;;1646:140;;;1650:3;1835:1;1830:2;1821:6;1810:9;1806:22;1802:31;1795:42;1905:2;1898;1894:7;1889:2;1881:6;1877:15;1873:29;1862:9;1858:45;1854:54;1846:62;;;;1366:548;;;;:::o;2108:315::-;2176:6;2184;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;2413:2;2398:18;;;;2385:32;;-1:-1:-1;;;2108:315:1:o;2813:247::-;2872:6;2925:2;2913:9;2904:7;2900:23;2896:32;2893:52;;;2941:1;2938;2931:12;2893:52;2980:9;2967:23;2999:31;3024:5;2999:31;:::i;3065:456::-;3142:6;3150;3158;3211:2;3199:9;3190:7;3186:23;3182:32;3179:52;;;3227:1;3224;3217:12;3179:52;3266:9;3253:23;3285:31;3310:5;3285:31;:::i;:::-;3335:5;-1:-1:-1;3392:2:1;3377:18;;3364:32;3405:33;3364:32;3405:33;:::i;:::-;3065:456;;3457:7;;-1:-1:-1;;;3511:2:1;3496:18;;;;3483:32;;3065:456::o;4274:156::-;4340:20;;4400:4;4389:16;;4379:27;;4369:55;;4420:1;4417;4410:12;4435:535;4527:6;4535;4543;4551;4559;4567;4620:3;4608:9;4599:7;4595:23;4591:33;4588:53;;;4637:1;4634;4627:12;4588:53;4660:27;4677:9;4660:27;:::i;:::-;4650:37;;4706:36;4738:2;4727:9;4723:18;4706:36;:::i;:::-;4696:46;;4761:36;4793:2;4782:9;4778:18;4761:36;:::i;:::-;4751:46;;4816:36;4848:2;4837:9;4833:18;4816:36;:::i;:::-;4806:46;;4871:37;4903:3;4892:9;4888:19;4871:37;:::i;:::-;4861:47;;4927:37;4959:3;4948:9;4944:19;4927:37;:::i;:::-;4917:47;;4435:535;;;;;;;;:::o;4975:180::-;5034:6;5087:2;5075:9;5066:7;5062:23;5058:32;5055:52;;;5103:1;5100;5093:12;5055:52;-1:-1:-1;5126:23:1;;4975:180;-1:-1:-1;4975:180:1:o;5160:182::-;5217:6;5270:2;5258:9;5249:7;5245:23;5241:32;5238:52;;;5286:1;5283;5276:12;5238:52;5309:27;5326:9;5309:27;:::i;5347:272::-;5405:6;5458:2;5446:9;5437:7;5433:23;5429:32;5426:52;;;5474:1;5471;5464:12;5426:52;5513:9;5500:23;5563:6;5556:5;5552:18;5545:5;5542:29;5532:57;;5585:1;5582;5575:12;5877:127;5938:10;5933:3;5929:20;5926:1;5919:31;5969:4;5966:1;5959:15;5993:4;5990:1;5983:15;6009:1191;6099:6;6107;6160:2;6148:9;6139:7;6135:23;6131:32;6128:52;;;6176:1;6173;6166:12;6128:52;6216:9;6203:23;6245:18;6286:2;6278:6;6275:14;6272:34;;;6302:1;6299;6292:12;6272:34;6340:6;6329:9;6325:22;6315:32;;6385:7;6378:4;6374:2;6370:13;6366:27;6356:55;;6407:1;6404;6397:12;6356:55;6443:2;6430:16;6465:4;6488:2;6484;6481:10;6478:36;;;6494:18;;:::i;:::-;6540:2;6537:1;6533:10;6572:2;6566:9;6635:2;6631:7;6626:2;6622;6618:11;6614:25;6606:6;6602:38;6690:6;6678:10;6675:22;6670:2;6658:10;6655:18;6652:46;6649:72;;;6701:18;;:::i;:::-;6737:2;6730:22;6787:18;;;6821:15;;;;-1:-1:-1;6863:11:1;;;6859:20;;;6891:19;;;6888:39;;;6923:1;6920;6913:12;6888:39;6947:11;;;;6967:148;6983:6;6978:3;6975:15;6967:148;;;7049:23;7068:3;7049:23;:::i;:::-;7037:36;;7000:12;;;;7093;;;;6967:148;;;7134:6;-1:-1:-1;7159:35:1;;-1:-1:-1;7175:18:1;;;7159:35;:::i;:::-;7149:45;;;;;;6009:1191;;;;;:::o;7437:248::-;7505:6;7513;7566:2;7554:9;7545:7;7541:23;7537:32;7534:52;;;7582:1;7579;7572:12;7534:52;-1:-1:-1;;7605:23:1;;;7675:2;7660:18;;;7647:32;;-1:-1:-1;7437:248:1:o;7690:382::-;7755:6;7763;7816:2;7804:9;7795:7;7791:23;7787:32;7784:52;;;7832:1;7829;7822:12;7784:52;7871:9;7858:23;7890:31;7915:5;7890:31;:::i;:::-;7940:5;-1:-1:-1;7997:2:1;7982:18;;7969:32;8010:30;7969:32;8010:30;:::i;8077:342::-;8279:2;8261:21;;;8318:2;8298:18;;;8291:30;-1:-1:-1;;;8352:2:1;8337:18;;8330:48;8410:2;8395:18;;8077:342::o;8424:127::-;8485:10;8480:3;8476:20;8473:1;8466:31;8516:4;8513:1;8506:15;8540:4;8537:1;8530:15;8556:422;8645:1;8688:5;8645:1;8702:270;8723:7;8713:8;8710:21;8702:270;;;8782:4;8778:1;8774:6;8770:17;8764:4;8761:27;8758:53;;;8791:18;;:::i;:::-;8841:7;8831:8;8827:22;8824:55;;;8861:16;;;;8824:55;8940:22;;;;8900:15;;;;8702:270;;;8706:3;8556:422;;;;;:::o;8983:806::-;9032:5;9062:8;9052:80;;-1:-1:-1;9103:1:1;9117:5;;9052:80;9151:4;9141:76;;-1:-1:-1;9188:1:1;9202:5;;9141:76;9233:4;9251:1;9246:59;;;;9319:1;9314:130;;;;9226:218;;9246:59;9276:1;9267:10;;9290:5;;;9314:130;9351:3;9341:8;9338:17;9335:43;;;9358:18;;:::i;:::-;-1:-1:-1;;9414:1:1;9400:16;;9429:5;;9226:218;;9528:2;9518:8;9515:16;9509:3;9503:4;9500:13;9496:36;9490:2;9480:8;9477:16;9472:2;9466:4;9463:12;9459:35;9456:77;9453:159;;;-1:-1:-1;9565:19:1;;;9597:5;;9453:159;9644:34;9669:8;9663:4;9644:34;:::i;:::-;9714:6;9710:1;9706:6;9702:19;9693:7;9690:32;9687:58;;;9725:18;;:::i;:::-;9763:20;;8983:806;-1:-1:-1;;;8983:806:1:o;9794:140::-;9852:5;9881:47;9922:4;9912:8;9908:19;9902:4;9881:47;:::i;9939:168::-;10012:9;;;10043;;10060:15;;;10054:22;;10040:37;10030:71;;10081:18;;:::i;10461:128::-;10528:9;;;10549:11;;;10546:37;;;10563:18;;:::i;10594:148::-;10682:4;10661:12;;;10675;;;10657:31;;10700:13;;10697:39;;;10716:18;;:::i;11154:125::-;11219:9;;;11240:10;;;11237:36;;;11253:18;;:::i;11284:184::-;11354:6;11407:2;11395:9;11386:7;11382:23;11378:32;11375:52;;;11423:1;11420;11413:12;11375:52;-1:-1:-1;11446:16:1;;11284:184;-1:-1:-1;11284:184:1:o;12105:245::-;12172:6;12225:2;12213:9;12204:7;12200:23;12196:32;12193:52;;;12241:1;12238;12231:12;12193:52;12273:9;12267:16;12292:28;12314:5;12292:28;:::i;12355:217::-;12395:1;12421;12411:132;;12465:10;12460:3;12456:20;12453:1;12446:31;12500:4;12497:1;12490:15;12528:4;12525:1;12518:15;12411:132;-1:-1:-1;12557:9:1;;12355:217::o;12577:127::-;12638:10;12633:3;12629:20;12626:1;12619:31;12669:4;12666:1;12659:15;12693:4;12690:1;12683:15;12709:135;12748:3;12769:17;;;12766:43;;12789:18;;:::i;:::-;-1:-1:-1;12836:1:1;12825:13;;12709:135::o;17113:127::-;17174:10;17169:3;17165:20;17162:1;17155:31;17205:4;17202:1;17195:15;17229:4;17226:1;17219:15;18289:340;18491:2;18473:21;;;18530:2;18510:18;;;18503:30;-1:-1:-1;;;18564:2:1;18549:18;;18542:46;18620:2;18605:18;;18289:340::o;18977:251::-;19047:6;19100:2;19088:9;19079:7;19075:23;19071:32;19068:52;;;19116:1;19113;19106:12;19068:52;19148:9;19142:16;19167:31;19192:5;19167:31;:::i;19233:980::-;19495:4;19543:3;19532:9;19528:19;19574:6;19563:9;19556:25;19600:2;19638:6;19633:2;19622:9;19618:18;19611:34;19681:3;19676:2;19665:9;19661:18;19654:31;19705:6;19740;19734:13;19771:6;19763;19756:22;19809:3;19798:9;19794:19;19787:26;;19848:2;19840:6;19836:15;19822:29;;19869:1;19879:195;19893:6;19890:1;19887:13;19879:195;;;19958:13;;-1:-1:-1;;;;;19954:39:1;19942:52;;20049:15;;;;20014:12;;;;19990:1;19908:9;19879:195;;;-1:-1:-1;;;;;;;20130:32:1;;;;20125:2;20110:18;;20103:60;-1:-1:-1;;;20194:3:1;20179:19;20172:35;20091:3;19233:980;-1:-1:-1;;;19233:980:1:o;20830:306::-;20918:6;20926;20934;20987:2;20975:9;20966:7;20962:23;20958:32;20955:52;;;21003:1;21000;20993:12;20955:52;21032:9;21026:16;21016:26;;21082:2;21071:9;21067:18;21061:25;21051:35;;21126:2;21115:9;21111:18;21105:25;21095:35;;20830:306;;;;;:::o

Swarm Source

ipfs://1cd20663cfb3a87b3ea64aa018251d950f9d15d031a4aec188588309f78ad87d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.