ETH Price: $3,166.49 (+2.20%)

Token

Do Right and Invest Properly (DRIP)
 

Overview

Max Total Supply

99,000,000,000 DRIP

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
317,975,070.868145714 DRIP

Value
$0.00
0xc32d109e89f62741be904254ed777ee0a83e191a
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DRIP

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-21
*/

/**
 *Submitted for verification at BscScan.com on 2021-08-21
*/

pragma solidity ^0.8.4;
pragma experimental ABIEncoderV2;

// SPDX-License-Identifier:MIT

interface IBEP20 {

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address payable private _owner;
    address payable private _previousOwner;
    uint256 private _lockTime;

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

    constructor (address ownerAddress) {
        _owner = payable(ownerAddress);
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

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

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = payable(address(0));
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until defined days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
        _previousOwner = payable(address(0));
    }
}

interface IPancakeFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IPancakeRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

library Utils {
    
    using SafeMath for uint256;

    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pancakeRouter.WETH();

        // make the swap
        pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            address(this),
            block.timestamp
        );
    }

    function swapETHForTokens(
        address routerAddress,
        address recipient,
        uint256 ethAmount
    ) internal {
        IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = pancakeRouter.WETH();
        path[1] = address(this);

        // make the swap
        pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of BNB
            path,
            address(recipient),
            block.timestamp + 360
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress);

        // add the liquidity
        pancakeRouter.addLiquidityETH{value : ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp + 360
        );
    }
}


    // Modified by team BloctechSolutions.com 


contract DRIP is Context, IBEP20, Ownable{
    using SafeMath for uint256;
    using Address for address;

    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 => bool) private _isExcludedFromMaxTx;

    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 99000 * 10**6 * 1e9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Do Right and Invest Properly";
    string private _symbol = "DRIP";
    uint8 private _decimals = 9;

    IPancakeRouter02 public pancakeRouter;
    address public immutable pancakePair;
    address payable public buyBackWallet;
    address payable public marketWallet;
    
    uint256 public _taxFee = 0; // 1% will be distributed among holder as DRIP divideneds
    uint256 private _previousTaxFee = _taxFee;

    uint256 public _liquidityFee = 10; // 10% will be added to the liquidity pool
    uint256 private _previousLiquidityFee = _liquidityFee;
    
    uint256 public _buyBackFee = 35;  // 3.5% will go to the buyBack address 
    uint256 private _previousCharityFee = _buyBackFee;
    
    uint256 public _marketFee = 35;  // 3.5% will go to the market address 
    uint256 private _previousMarketFee = _marketFee;

    uint256 public _maxTxAmount = 3000000 * 10**6 * 10**9;
    uint256 public minTokenNumberToSell = 200000 * 10**6 * 10**9;

    bool public swapAndLiquifyEnabled = false; // should be true to turn on to liquidate the pool
    bool public reflectionFeesdiabled = false;
    bool inSwapAndLiquify = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event ClaimBNBSuccessfully(
        address recipient,
        uint256 ethReceived,
        uint256 nextAvailableClaimDate
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor (
        address payable ownerAddress,
        address payable _buyBackAddress,
        address payable _marketWallet
    ) Ownable(ownerAddress) {
        _rOwned[owner()] = _rTotal;
        buyBackWallet = _buyBackAddress;
        marketWallet = _marketWallet;

        IPancakeRouter02 _pancakeRouter = IPancakeRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pancake pair for this new token
        pancakePair = IPancakeFactory(_pancakeRouter.factory())
        .createPair(address(this), _pancakeRouter.WETH());

        // set the rest of the contract variables
        pancakeRouter = _pancakeRouter;

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        // exclude from max tx
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[address(this)] = true;

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

    
    //to receive BNB from pancakeRouter when swapping
    receive() external payable {}

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

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

    function decimals() public view 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 tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

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

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

    // to manually distribute tokens to holders
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        uint256 rAmount = tAmount.mul(_getRate());
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    // getter functions

    function getContractBalance() public view returns(uint256) {
        return address(this).balance;
    }

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

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

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            uint256 rAmount = tAmount.mul(_getRate());
            return rAmount;
        } else {
            uint256 rAmount = tAmount.mul(_getRate());
            uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(_getRate()));
            return rTransferAmount;
        }
    }

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

    // setter functions for Owner

    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 includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _rOwned[account] = _tOwned[account].mul(_getRate());
                _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 setMaxTxAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
    
    function setMinTokenNumberToSell(uint256 _amount) public onlyOwner {
        minTokenNumberToSell = _amount;
    }

    function setExcludeFromMaxTx(address _address, bool value) public onlyOwner {
        _isExcludedFromMaxTx[_address] = value;
    }

    function setFeePercents(uint256 taxFee, uint256 liquidityFee, uint256 buyBackFee, uint256 marketFee) external onlyOwner {
        _taxFee = taxFee;
        _liquidityFee = liquidityFee;
        _buyBackFee = buyBackFee;
        _marketFee = marketFee;
    }

    function setSwapAndLiquifyEnabled(bool _state) public onlyOwner {
        swapAndLiquifyEnabled = _state;
        emit SwapAndLiquifyEnabledUpdated(_state);
    }
    
    function setReflectionFees(bool _state) external onlyOwner {
        reflectionFeesdiabled = _state;
    }
    
    function setBuyBackAddress(address payable _buyBackAddress) external onlyOwner {
        buyBackWallet = _buyBackAddress;
    }
    
    function setMarketAddress(address payable _marketAddress) external onlyOwner {
        marketWallet = _marketAddress;
    }
    
    function setPancakeRouter(IPancakeRouter02 _pancakeRouter) external onlyOwner {
        pancakeRouter = _pancakeRouter;
    }

    // internal functions for contract
    
    function totalFeePerTx(uint256 tAmount) internal view returns(uint256) {
        uint256 percentage = tAmount.mul(_taxFee.add(_liquidityFee).add(_buyBackFee).add(_marketFee)).div(1e3);
        return percentage;
    }

    function _reflectFee(uint256 tAmount) private {
        uint256 tFee = tAmount.mul(_taxFee).div(1e3);
        uint256 rFee = tFee.mul(_getRate());
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

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

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

    function _takeAllFee(uint256 tAmount, uint256 currentRate) internal {
        uint256 tFee = tAmount.mul(_liquidityFee.add(_buyBackFee).add(_marketFee)).div(1e3);
        uint256 rFee = tFee.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rFee);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tFee);
        emit Transfer(_msgSender(), address(this), tFee);
    }

    function removeAllFee() private {

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        _previousCharityFee = _buyBackFee;
        _previousMarketFee = _marketFee;

        _taxFee = 0;
        _liquidityFee = 0;
        _buyBackFee = 0;
        _marketFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
        _buyBackFee = _previousCharityFee;
        _marketFee = _previousMarketFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

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

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

        if(!_isExcludedFromMaxTx[from] && 
            !_isExcludedFromMaxTx[to]   // by default false
        ){
            require(amount <= _maxTxAmount,"BEP20: Amount exceed max limit");
        }

        // swap and liquify
        swapAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || reflectionFeesdiabled) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate = _getRate();
        uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount));
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate));
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tAmount, currentRate);
        _reflectFee(tAmount);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function swapAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is pancake pair.
        uint256 contractTokenBalance = balanceOf(address(this));

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

        bool shouldSell = contractTokenBalance >= minTokenNumberToSell;

        if (
            !inSwapAndLiquify &&
            shouldSell &&
            from != pancakePair &&
            swapAndLiquifyEnabled &&
            !(from == address(this) && to == address(pancakePair)) // swap 1 time
        ) {
            // only sell for minTokenNumberToSell, decouple from _maxTxAmount
            // split the contract balance into 4 pieces
            
            contractTokenBalance = minTokenNumberToSell;
            // approve contract
            _approve(address(this), address(pancakeRouter), contractTokenBalance);

            uint256 totalPercent = _liquidityFee.add(_buyBackFee).add(_marketFee);
            uint256 lpPercent = _liquidityFee.mul(1e4).div(totalPercent).div(2);
            uint256 bbPercent = _buyBackFee.mul(1e4).div(totalPercent);
            uint256 mwPercent = _marketFee.mul(1e4).div(totalPercent);
            
            uint256 otherPiece = contractTokenBalance.mul(lpPercent).div(1e4);
            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(otherPiece);
            
            // now is to lock into staking pool
            Utils.swapTokensForEth(address(pancakeRouter), tokenAmountToBeSwapped);

            // how much BNB did we just swap into?

            // capture the contract's current BNB balance.
            // this is so that we can capture exactly the amount of BNB that the
            // swap creates, and not make the liquidity event include any BNB that
            // has been manually sent to the contract
            uint256 deltaBalance = getContractBalance();
            
            totalPercent = lpPercent.add(bbPercent).add(mwPercent);

            uint256 bnbToBeAddedToLiquidity = deltaBalance.mul(lpPercent).div(totalPercent);

            // add liquidity to pancake
            Utils.addLiquidity(address(pancakeRouter), owner(), otherPiece, bnbToBeAddedToLiquidity);
            // buybcak fee transfer
            buyBackWallet.transfer(deltaBalance.mul(bbPercent).div(totalPercent));
            // market fee transfer
            marketWallet.transfer(getContractBalance());
            
            emit SwapAndLiquify(tokenAmountToBeSwapped, deltaBalance, otherPiece);
        }
    }
     
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"ownerAddress","type":"address"},{"internalType":"address payable","name":"_buyBackAddress","type":"address"},{"internalType":"address payable","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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimBNBSuccessfully","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"_buyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","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":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalance","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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenNumberToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeRouter","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_buyBackAddress","type":"address"}],"name":"setBuyBackAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyBackFee","type":"uint256"},{"internalType":"uint256","name":"marketFee","type":"uint256"}],"name":"setFeePercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketAddress","type":"address"}],"name":"setMarketAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenNumberToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPancakeRouter02","name":"_pancakeRouter","type":"address"}],"name":"setPancakeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setReflectionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405268055de6a779bbac0000600a819055620000219060001962000638565b6200002f90600019620005d7565b600b5560408051808201909152601c8082527f446f20526967687420616e6420496e766573742050726f7065726c790000000060209092019182526200007891600d91620004b8565b50604080518082019091526004808252630445249560e41b6020909201918252620000a691600e91620004b8565b50600f805460ff1916600917905560006012819055601355600a6014819055601555602360168190556017819055601881905560195568a2a15d09519be00000601a55680ad78ebc5ac6200000601b55601c805462ffffff191690553480156200010f57600080fd5b506040516200341338038062003413833981016040819052620001329162000584565b600080546001600160a01b0319166001600160a01b03851690811782556040518592907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b5460036000620001956000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355601080546001600160a01b0319908116878616179091556011805490911693851693909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200022657600080fd5b505afa1580156200023b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026191906200055e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002aa57600080fd5b505afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e591906200055e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032e57600080fd5b505af115801562000343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036991906200055e565b60601b6001600160601b031916608052600f8054610100600160a81b0319166101006001600160a01b03841602179055600160066000620003b26000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260069092528120805490921660019081179092556008906200040b6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260089092529020805490911660011790556200045e6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620004a691815260200190565b60405180910390a35050505062000672565b828054620004c690620005fb565b90600052602060002090601f016020900481019282620004ea576000855562000535565b82601f106200050557805160ff191683800117855562000535565b8280016001018555821562000535579182015b828111156200053557825182559160200191906001019062000518565b506200054392915062000547565b5090565b5b8082111562000543576000815560010162000548565b60006020828403121562000570578081fd5b81516200057d8162000659565b9392505050565b60008060006060848603121562000599578182fd5b8351620005a68162000659565b6020850151909350620005b98162000659565b6040850151909250620005cc8162000659565b809150509250925092565b600082821015620005f657634e487b7160e01b81526011600452602481fd5b500390565b600181811c908216806200061057607f821691505b602082108114156200063257634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200065457634e487b7160e01b81526012600452602481fd5b500690565b6001600160a01b03811681146200066f57600080fd5b50565b60805160601c612d746200069f6000396000818161075301528181611c700152611ccf0152612d746000f3fe6080604052600436106102b15760003560e01c806370a0823111610175578063b6c52324116100dc578063e4440a8611610095578063f2fde38b1161006f578063f2fde38b14610880578063f8316c90146108a0578063fae92612146108c0578063fc6f4cbb146108e057600080fd5b8063e4440a8614610820578063ea2f0b3714610840578063ec28438a1461086057600080fd5b8063b6c523241461072c578063b8c9d25c14610741578063c21ebd0714610775578063c49b9a801461079a578063dd467064146107ba578063dd62ed3e146107da57600080fd5b80638da5cb5b1161012e5780638da5cb5b1461068457806395d89b41146106a2578063a457c2d7146106b7578063a69df4b5146106d7578063a9059cbb146106ec578063ad740f8c1461070c57600080fd5b806370a08231146105d4578063715018a6146105f45780637a091849146106095780637d1db4a51461061f57806384d6ff2f1461063557806388f820201461064b57600080fd5b80633b124fe71161021957806352390c02116101d257806352390c02146105125780635342acb4146105325780635b89029c1461056b57806365d60e561461058b5780636bc87c3a146105ab5780636f9fb98a146105c157600080fd5b80633b124fe7146104625780633bd5d17314610478578063437823ec146104985780634549b039146104b85780634a74bb02146104d85780634bcc2616146104f257600080fd5b80631cd348c01161026b5780631cd348c01461038857806323b872dd146103c05780632d838119146103e0578063313ce567146104005780633685d41914610422578063395093511461044257600080fd5b8062695551146102bd57806306fdde03146102df578063095ea7b31461030a57806312706f041461033a57806313114a9d1461035e57806318160ddd1461037357600080fd5b366102b857005b600080fd5b3480156102c957600080fd5b506102dd6102d8366004612ab6565b6108ff565b005b3480156102eb57600080fd5b506102f4610946565b6040516103019190612ae7565b60405180910390f35b34801561031657600080fd5b5061032a610325366004612a0a565b6109d8565b6040519015158152602001610301565b34801561034657600080fd5b5061035060165481565b604051908152602001610301565b34801561036a57600080fd5b50600c54610350565b34801561037f57600080fd5b50600a54610350565b34801561039457600080fd5b506010546103a8906001600160a01b031681565b6040516001600160a01b039091168152602001610301565b3480156103cc57600080fd5b5061032a6103db366004612996565b6109ef565b3480156103ec57600080fd5b506103506103fb366004612a4f565b610a58565b34801561040c57600080fd5b50600f5460405160ff9091168152602001610301565b34801561042e57600080fd5b506102dd61043d366004612926565b610adc565b34801561044e57600080fd5b5061032a61045d366004612a0a565b610d12565b34801561046e57600080fd5b5061035060125481565b34801561048457600080fd5b506102dd610493366004612a4f565b610d48565b3480156104a457600080fd5b506102dd6104b3366004612926565b610e35565b3480156104c457600080fd5b506103506104d3366004612a67565b610e83565b3480156104e457600080fd5b50601c5461032a9060ff1681565b3480156104fe57600080fd5b506102dd61050d366004612a4f565b610f38565b34801561051e57600080fd5b506102dd61052d366004612926565b610f67565b34801561053e57600080fd5b5061032a61054d366004612926565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561057757600080fd5b506102dd6105863660046129d6565b6110ba565b34801561059757600080fd5b506102dd6105a6366004612a35565b61110f565b3480156105b757600080fd5b5061035060145481565b3480156105cd57600080fd5b5047610350565b3480156105e057600080fd5b506103506105ef366004612926565b611153565b34801561060057600080fd5b506102dd6111b2565b34801561061557600080fd5b50610350601b5481565b34801561062b57600080fd5b50610350601a5481565b34801561064157600080fd5b5061035060185481565b34801561065757600080fd5b5061032a610666366004612926565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561069057600080fd5b506000546001600160a01b03166103a8565b3480156106ae57600080fd5b506102f4611214565b3480156106c357600080fd5b5061032a6106d2366004612a0a565b611223565b3480156106e357600080fd5b506102dd611272565b3480156106f857600080fd5b5061032a610707366004612a0a565b611389565b34801561071857600080fd5b506102dd610727366004612926565b611396565b34801561073857600080fd5b50600254610350565b34801561074d57600080fd5b506103a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561078157600080fd5b50600f546103a89061010090046001600160a01b031681565b3480156107a657600080fd5b506102dd6107b5366004612a35565b6113e2565b3480156107c657600080fd5b506102dd6107d5366004612a4f565b611453565b3480156107e657600080fd5b506103506107f536600461295e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561082c57600080fd5b506011546103a8906001600160a01b031681565b34801561084c57600080fd5b506102dd61085b366004612926565b6114d8565b34801561086c57600080fd5b506102dd61087b366004612a4f565b611523565b34801561088c57600080fd5b506102dd61089b366004612926565b611552565b3480156108ac57600080fd5b506102dd6108bb366004612926565b61162a565b3480156108cc57600080fd5b506102dd6108db366004612926565b61167c565b3480156108ec57600080fd5b50601c5461032a90610100900460ff1681565b6000546001600160a01b031633146109325760405162461bcd60e51b815260040161092990612b3a565b60405180910390fd5b601293909355601491909155601655601855565b6060600d805461095590612c4d565b80601f016020809104026020016040519081016040528092919081815260200182805461098190612c4d565b80156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b5050505050905090565b60006109e53384846116c8565b5060015b92915050565b60006109fc8484846117ec565b610a4e8433610a4985604051806060016040528060288152602001612cd2602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611a2d565b6116c8565b5060019392505050565b6000600b54821115610abf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610929565b6000610ac9611a67565b9050610ad58382611a8a565b9392505050565b6000546001600160a01b03163314610b065760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03811660009081526007602052604090205460ff16610b6e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610929565b60005b600954811015610d0e57816001600160a01b031660098281548110610ba657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610cfc5760098054610bd190600190612c36565b81548110610bef57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b039092169183908110610c2957634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610c81610c62611a67565b6001600160a01b03841660009081526004602052604090205490611acc565b6001600160a01b038316600090815260036020908152604080832093909355600481528282208290556007905220805460ff191690556009805480610cd657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d0681612c88565b915050610b71565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916109e5918590610a499086611b4b565b3360008181526007602052604090205460ff1615610dbd5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610929565b6000610dd1610dca611a67565b8490611acc565b6001600160a01b038316600090815260036020526040902054909150610df79082611baa565b6001600160a01b038316600090815260036020526040902055600b54610e1d9082611baa565b600b55600c54610e2d9084611b4b565b600c55505050565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600a54831115610ed75760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610929565b81610ef9576000610ef0610ee9611a67565b8590611acc565b91506109e99050565b6000610f06610ee9611a67565b90506000610f2e610f27610f18611a67565b610f2188611bec565b90611acc565b8390611baa565b92506109e9915050565b6000546001600160a01b03163314610f625760405162461bcd60e51b815260040161092990612b3a565b601b55565b6000546001600160a01b03163314610f915760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03811660009081526007602052604090205460ff1615610ffa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610929565b6001600160a01b03811660009081526003602052604090205415611054576001600160a01b03811660009081526003602052604090205461103a90610a58565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146110e45760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111395760405162461bcd60e51b815260040161092990612b3a565b601c80549115156101000261ff0019909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff161561119057506001600160a01b031660009081526004602052604090205490565b6001600160a01b0382166000908152600360205260409020546109e990610a58565b6000546001600160a01b031633146111dc5760405162461bcd60e51b815260040161092990612b3a565b600080546040516001600160a01b0390911690600080516020612cfa833981519152908390a3600080546001600160a01b0319169055565b6060600e805461095590612c4d565b60006109e53384610a4985604051806060016040528060258152602001612d1a602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611a2d565b6001546001600160a01b031633146112d85760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610929565b60025442116113375760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610929565b600154600080546040516001600160a01b039384169390911691600080516020612cfa83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006109e53384846117ec565b6000546001600160a01b031633146113c05760405162461bcd60e51b815260040161092990612b3a565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461140c5760405162461bcd60e51b815260040161092990612b3a565b601c805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b0316331461147d5760405162461bcd60e51b815260040161092990612b3a565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556114ac8142612bdf565b600255600080546040516001600160a01b0390911690600080516020612cfa833981519152908390a350565b6000546001600160a01b031633146115025760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b0316331461154d5760405162461bcd60e51b815260040161092990612b3a565b601a55565b6000546001600160a01b0316331461157c5760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b0381166115e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610929565b600080546040516001600160a01b0380851693921691600080516020612cfa83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116545760405162461bcd60e51b815260040161092990612b3a565b600f80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146116a65760405162461bcd60e51b815260040161092990612b3a565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661172a5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610929565b6001600160a01b03821661178b5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610929565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118505760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610929565b6001600160a01b0382166118b25760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610929565b6000811161191b5760405162461bcd60e51b815260206004820152603060248201527f42455032303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610929565b6001600160a01b03831660009081526008602052604090205460ff1615801561195d57506001600160a01b03821660009081526008602052604090205460ff16155b156119b457601a548111156119b45760405162461bcd60e51b815260206004820152601e60248201527f42455032303a20416d6f756e7420657863656564206d6178206c696d697400006044820152606401610929565b6119be8383611c2e565b6001600160a01b03831660009081526006602052604090205460019060ff1680611a0057506001600160a01b03831660009081526006602052604090205460ff165b80611a125750601c54610100900460ff165b15611a1b575060005b611a2784848484611f11565b50505050565b60008184841115611a515760405162461bcd60e51b81526004016109299190612ae7565b506000611a5e8486612c36565b95945050505050565b6000806000611a746120bb565b9092509050611a838282611a8a565b9250505090565b6000610ad583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612275565b600082611adb575060006109e9565b6000611ae78385612c17565b905082611af48583612bf7565b14610ad55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610929565b600080611b588385612bdf565b905083811015610ad55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610929565b6000610ad583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a2d565b600080610ad56103e8611c28611c21601854611c1b601654611c1b601454601254611b4b90919063ffffffff16565b90611b4b565b8690611acc565b90611a8a565b6000611c3930611153565b9050601a548110611c495750601a545b601b54601c54908210159062010000900460ff16158015611c675750805b8015611ca557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015611cb35750601c5460ff165b8015611d0557506001600160a01b03841630148015611d0357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b155b15611a2757601b549150611d2f30600f60019054906101000a90046001600160a01b0316846116c8565b6000611d4e601854611c1b601654601454611b4b90919063ffffffff16565b90506000611d726002611c2884611c28612710601454611acc90919063ffffffff16565b90506000611d9183611c28612710601654611acc90919063ffffffff16565b90506000611db084611c28612710601854611acc90919063ffffffff16565b90506000611dc4612710611c288987611acc565b90506000611dd28883611baa565b600f54909150611df09061010090046001600160a01b0316826122a3565b47611dff84611c1b8888611b4b565b96506000611e1188611c28848a611acc565b600f54909150611e43906001600160a01b0361010090910416611e3c6000546001600160a01b031690565b8684612418565b6010546001600160a01b03166108fc611e608a611c28868b611acc565b6040518115909202916000818181858888f19350505050158015611e88573d6000803e3d6000fd5b506011546001600160a01b03166108fc476040518115909202916000818181858888f19350505050158015611ec1573d6000803e3d6000fd5b5060408051848152602081018490529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050505050505050565b80611f4557611f45601280546013556014805460155560168054601755601880546019556000938490559183905582905555565b6001600160a01b03841660009081526007602052604090205460ff168015611f8657506001600160a01b03831660009081526007602052604090205460ff16155b15611f9b57611f968484846124dc565b612099565b6001600160a01b03841660009081526007602052604090205460ff16158015611fdc57506001600160a01b03831660009081526007602052604090205460ff165b15611fec57611f96848484612625565b6001600160a01b03841660009081526007602052604090205460ff1615801561202e57506001600160a01b03831660009081526007602052604090205460ff16155b1561203e57611f968484846126ec565b6001600160a01b03841660009081526007602052604090205460ff16801561207e57506001600160a01b03831660009081526007602052604090205460ff165b1561208e57611f9684848461274e565b6120998484846126ec565b80611a2757611a27601354601255601554601455601754601655601954601855565b600b54600a546000918291825b600954811015612245578260036000600984815481106120f857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612171575081600460006009848154811061214a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561218757600b54600a54945094505050509091565b6121db60036000600984815481106121af57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611baa565b9250612231600460006009848154811061220557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611baa565b91508061223d81612c88565b9150506120c8565b50600a54600b5461225591611a8a565b82101561226c57600b54600a549350935050509091565b90939092509050565b600081836122965760405162461bcd60e51b81526004016109299190612ae7565b506000611a5e8486612bf7565b6040805160028082526060820183528492600092919060208301908036833701905050905030816000815181106122ea57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561234357600080fd5b505afa158015612357573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237b9190612942565b8160018151811061239c57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac947906123e0908690600090869030904290600401612b6f565b600060405180830381600087803b1580156123fa57600080fd5b505af115801561240e573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a61243b42610168612bdf565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124a357600080fd5b505af11580156124b7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061240e9190612a89565b60006124e6611a67565b905060006124fd6124f684611bec565b8490611baa565b9050600061250b8484611acc565b9050600061251f610f2785610f2188611bec565b6001600160a01b0388166000908152600460205260409020549091506125459086611baa565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546125749083611baa565b6001600160a01b0380891660009081526003602052604080822093909355908816815220546125a39082611b4b565b6001600160a01b0387166000908152600360205260409020556125c685856127df565b6125cf856128be565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161261491815260200190565b60405180910390a350505050505050565b600061262f611a67565b9050600061263f6124f684611bec565b9050600061264d8484611acc565b90506000612661610f2785610f2188611bec565b6001600160a01b0388166000908152600360205260409020549091506126879083611baa565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546126bd9084611b4b565b6001600160a01b0387166000908152600460209081526040808320939093556003905220546125a39082611b4b565b60006126f6611a67565b905060006127066124f684611bec565b905060006127148484611acc565b90506000612728610f2785610f2188611bec565b6001600160a01b0388166000908152600360205260409020549091506125749083611baa565b6000612758611a67565b905060006127686124f684611bec565b905060006127768484611acc565b9050600061278a610f2785610f2188611bec565b6001600160a01b0388166000908152600460205260409020549091506127b09086611baa565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546126879083611baa565b60006128076103e8611c28611c21601854611c1b601654601454611b4b90919063ffffffff16565b905060006128158284611acc565b306000908152600360205260409020549091506128329082611b4b565b3060009081526003602090815260408083209390935560079052205460ff161561288157306000908152600460205260409020546128709083611b4b565b306000908152600460205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006128db6103e8611c2860125485611acc90919063ffffffff16565b905060006128f16128ea611a67565b8390611acc565b600b549091506129019082611baa565b600b55600c54610e2d9083611b4b565b8035801515811461292157600080fd5b919050565b600060208284031215612937578081fd5b8135610ad581612cb9565b600060208284031215612953578081fd5b8151610ad581612cb9565b60008060408385031215612970578081fd5b823561297b81612cb9565b9150602083013561298b81612cb9565b809150509250929050565b6000806000606084860312156129aa578081fd5b83356129b581612cb9565b925060208401356129c581612cb9565b929592945050506040919091013590565b600080604083850312156129e8578182fd5b82356129f381612cb9565b9150612a0160208401612911565b90509250929050565b60008060408385031215612a1c578182fd5b8235612a2781612cb9565b946020939093013593505050565b600060208284031215612a46578081fd5b610ad582612911565b600060208284031215612a60578081fd5b5035919050565b60008060408385031215612a79578182fd5b82359150612a0160208401612911565b600080600060608486031215612a9d578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612acb578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b81811015612b1357858101830151858201604001528201612af7565b81811115612b245783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612bbe5784516001600160a01b031683529383019391830191600101612b99565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612bf257612bf2612ca3565b500190565b600082612c1257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612c3157612c31612ca3565b500290565b600082821015612c4857612c48612ca3565b500390565b600181811c90821680612c6157607f821691505b60208210811415612c8257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c9c57612c9c612ca3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612cce57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e042455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e72b98690cfc1e288a84fa746d49e470128460cebaa866cd908c389345a7c41e64736f6c63430008040033000000000000000000000000cbc4663ba34999eab9fb0cf1f0a49049c88f75fe000000000000000000000000777cf4b480088312677c843bf40dc19ea6c67b130000000000000000000000000c08de3785ac1bdcfff921e706f6729984e0c4cc

Deployed Bytecode

0x6080604052600436106102b15760003560e01c806370a0823111610175578063b6c52324116100dc578063e4440a8611610095578063f2fde38b1161006f578063f2fde38b14610880578063f8316c90146108a0578063fae92612146108c0578063fc6f4cbb146108e057600080fd5b8063e4440a8614610820578063ea2f0b3714610840578063ec28438a1461086057600080fd5b8063b6c523241461072c578063b8c9d25c14610741578063c21ebd0714610775578063c49b9a801461079a578063dd467064146107ba578063dd62ed3e146107da57600080fd5b80638da5cb5b1161012e5780638da5cb5b1461068457806395d89b41146106a2578063a457c2d7146106b7578063a69df4b5146106d7578063a9059cbb146106ec578063ad740f8c1461070c57600080fd5b806370a08231146105d4578063715018a6146105f45780637a091849146106095780637d1db4a51461061f57806384d6ff2f1461063557806388f820201461064b57600080fd5b80633b124fe71161021957806352390c02116101d257806352390c02146105125780635342acb4146105325780635b89029c1461056b57806365d60e561461058b5780636bc87c3a146105ab5780636f9fb98a146105c157600080fd5b80633b124fe7146104625780633bd5d17314610478578063437823ec146104985780634549b039146104b85780634a74bb02146104d85780634bcc2616146104f257600080fd5b80631cd348c01161026b5780631cd348c01461038857806323b872dd146103c05780632d838119146103e0578063313ce567146104005780633685d41914610422578063395093511461044257600080fd5b8062695551146102bd57806306fdde03146102df578063095ea7b31461030a57806312706f041461033a57806313114a9d1461035e57806318160ddd1461037357600080fd5b366102b857005b600080fd5b3480156102c957600080fd5b506102dd6102d8366004612ab6565b6108ff565b005b3480156102eb57600080fd5b506102f4610946565b6040516103019190612ae7565b60405180910390f35b34801561031657600080fd5b5061032a610325366004612a0a565b6109d8565b6040519015158152602001610301565b34801561034657600080fd5b5061035060165481565b604051908152602001610301565b34801561036a57600080fd5b50600c54610350565b34801561037f57600080fd5b50600a54610350565b34801561039457600080fd5b506010546103a8906001600160a01b031681565b6040516001600160a01b039091168152602001610301565b3480156103cc57600080fd5b5061032a6103db366004612996565b6109ef565b3480156103ec57600080fd5b506103506103fb366004612a4f565b610a58565b34801561040c57600080fd5b50600f5460405160ff9091168152602001610301565b34801561042e57600080fd5b506102dd61043d366004612926565b610adc565b34801561044e57600080fd5b5061032a61045d366004612a0a565b610d12565b34801561046e57600080fd5b5061035060125481565b34801561048457600080fd5b506102dd610493366004612a4f565b610d48565b3480156104a457600080fd5b506102dd6104b3366004612926565b610e35565b3480156104c457600080fd5b506103506104d3366004612a67565b610e83565b3480156104e457600080fd5b50601c5461032a9060ff1681565b3480156104fe57600080fd5b506102dd61050d366004612a4f565b610f38565b34801561051e57600080fd5b506102dd61052d366004612926565b610f67565b34801561053e57600080fd5b5061032a61054d366004612926565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561057757600080fd5b506102dd6105863660046129d6565b6110ba565b34801561059757600080fd5b506102dd6105a6366004612a35565b61110f565b3480156105b757600080fd5b5061035060145481565b3480156105cd57600080fd5b5047610350565b3480156105e057600080fd5b506103506105ef366004612926565b611153565b34801561060057600080fd5b506102dd6111b2565b34801561061557600080fd5b50610350601b5481565b34801561062b57600080fd5b50610350601a5481565b34801561064157600080fd5b5061035060185481565b34801561065757600080fd5b5061032a610666366004612926565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561069057600080fd5b506000546001600160a01b03166103a8565b3480156106ae57600080fd5b506102f4611214565b3480156106c357600080fd5b5061032a6106d2366004612a0a565b611223565b3480156106e357600080fd5b506102dd611272565b3480156106f857600080fd5b5061032a610707366004612a0a565b611389565b34801561071857600080fd5b506102dd610727366004612926565b611396565b34801561073857600080fd5b50600254610350565b34801561074d57600080fd5b506103a87f00000000000000000000000046d72bea406334365820b204a0a847140f6a1da281565b34801561078157600080fd5b50600f546103a89061010090046001600160a01b031681565b3480156107a657600080fd5b506102dd6107b5366004612a35565b6113e2565b3480156107c657600080fd5b506102dd6107d5366004612a4f565b611453565b3480156107e657600080fd5b506103506107f536600461295e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561082c57600080fd5b506011546103a8906001600160a01b031681565b34801561084c57600080fd5b506102dd61085b366004612926565b6114d8565b34801561086c57600080fd5b506102dd61087b366004612a4f565b611523565b34801561088c57600080fd5b506102dd61089b366004612926565b611552565b3480156108ac57600080fd5b506102dd6108bb366004612926565b61162a565b3480156108cc57600080fd5b506102dd6108db366004612926565b61167c565b3480156108ec57600080fd5b50601c5461032a90610100900460ff1681565b6000546001600160a01b031633146109325760405162461bcd60e51b815260040161092990612b3a565b60405180910390fd5b601293909355601491909155601655601855565b6060600d805461095590612c4d565b80601f016020809104026020016040519081016040528092919081815260200182805461098190612c4d565b80156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b5050505050905090565b60006109e53384846116c8565b5060015b92915050565b60006109fc8484846117ec565b610a4e8433610a4985604051806060016040528060288152602001612cd2602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611a2d565b6116c8565b5060019392505050565b6000600b54821115610abf5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610929565b6000610ac9611a67565b9050610ad58382611a8a565b9392505050565b6000546001600160a01b03163314610b065760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03811660009081526007602052604090205460ff16610b6e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610929565b60005b600954811015610d0e57816001600160a01b031660098281548110610ba657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610cfc5760098054610bd190600190612c36565b81548110610bef57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b039092169183908110610c2957634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610c81610c62611a67565b6001600160a01b03841660009081526004602052604090205490611acc565b6001600160a01b038316600090815260036020908152604080832093909355600481528282208290556007905220805460ff191690556009805480610cd657634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d0681612c88565b915050610b71565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916109e5918590610a499086611b4b565b3360008181526007602052604090205460ff1615610dbd5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610929565b6000610dd1610dca611a67565b8490611acc565b6001600160a01b038316600090815260036020526040902054909150610df79082611baa565b6001600160a01b038316600090815260036020526040902055600b54610e1d9082611baa565b600b55600c54610e2d9084611b4b565b600c55505050565b6000546001600160a01b03163314610e5f5760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600a54831115610ed75760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610929565b81610ef9576000610ef0610ee9611a67565b8590611acc565b91506109e99050565b6000610f06610ee9611a67565b90506000610f2e610f27610f18611a67565b610f2188611bec565b90611acc565b8390611baa565b92506109e9915050565b6000546001600160a01b03163314610f625760405162461bcd60e51b815260040161092990612b3a565b601b55565b6000546001600160a01b03163314610f915760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03811660009081526007602052604090205460ff1615610ffa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610929565b6001600160a01b03811660009081526003602052604090205415611054576001600160a01b03811660009081526003602052604090205461103a90610a58565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146110e45760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111395760405162461bcd60e51b815260040161092990612b3a565b601c80549115156101000261ff0019909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff161561119057506001600160a01b031660009081526004602052604090205490565b6001600160a01b0382166000908152600360205260409020546109e990610a58565b6000546001600160a01b031633146111dc5760405162461bcd60e51b815260040161092990612b3a565b600080546040516001600160a01b0390911690600080516020612cfa833981519152908390a3600080546001600160a01b0319169055565b6060600e805461095590612c4d565b60006109e53384610a4985604051806060016040528060258152602001612d1a602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190611a2d565b6001546001600160a01b031633146112d85760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610929565b60025442116113375760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610929565b600154600080546040516001600160a01b039384169390911691600080516020612cfa83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006109e53384846117ec565b6000546001600160a01b031633146113c05760405162461bcd60e51b815260040161092990612b3a565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461140c5760405162461bcd60e51b815260040161092990612b3a565b601c805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b0316331461147d5760405162461bcd60e51b815260040161092990612b3a565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556114ac8142612bdf565b600255600080546040516001600160a01b0390911690600080516020612cfa833981519152908390a350565b6000546001600160a01b031633146115025760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b0316331461154d5760405162461bcd60e51b815260040161092990612b3a565b601a55565b6000546001600160a01b0316331461157c5760405162461bcd60e51b815260040161092990612b3a565b6001600160a01b0381166115e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610929565b600080546040516001600160a01b0380851693921691600080516020612cfa83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116545760405162461bcd60e51b815260040161092990612b3a565b600f80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146116a65760405162461bcd60e51b815260040161092990612b3a565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661172a5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610929565b6001600160a01b03821661178b5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610929565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118505760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610929565b6001600160a01b0382166118b25760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610929565b6000811161191b5760405162461bcd60e51b815260206004820152603060248201527f42455032303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610929565b6001600160a01b03831660009081526008602052604090205460ff1615801561195d57506001600160a01b03821660009081526008602052604090205460ff16155b156119b457601a548111156119b45760405162461bcd60e51b815260206004820152601e60248201527f42455032303a20416d6f756e7420657863656564206d6178206c696d697400006044820152606401610929565b6119be8383611c2e565b6001600160a01b03831660009081526006602052604090205460019060ff1680611a0057506001600160a01b03831660009081526006602052604090205460ff165b80611a125750601c54610100900460ff165b15611a1b575060005b611a2784848484611f11565b50505050565b60008184841115611a515760405162461bcd60e51b81526004016109299190612ae7565b506000611a5e8486612c36565b95945050505050565b6000806000611a746120bb565b9092509050611a838282611a8a565b9250505090565b6000610ad583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612275565b600082611adb575060006109e9565b6000611ae78385612c17565b905082611af48583612bf7565b14610ad55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610929565b600080611b588385612bdf565b905083811015610ad55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610929565b6000610ad583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a2d565b600080610ad56103e8611c28611c21601854611c1b601654611c1b601454601254611b4b90919063ffffffff16565b90611b4b565b8690611acc565b90611a8a565b6000611c3930611153565b9050601a548110611c495750601a545b601b54601c54908210159062010000900460ff16158015611c675750805b8015611ca557507f00000000000000000000000046d72bea406334365820b204a0a847140f6a1da26001600160a01b0316846001600160a01b031614155b8015611cb35750601c5460ff165b8015611d0557506001600160a01b03841630148015611d0357507f00000000000000000000000046d72bea406334365820b204a0a847140f6a1da26001600160a01b0316836001600160a01b0316145b155b15611a2757601b549150611d2f30600f60019054906101000a90046001600160a01b0316846116c8565b6000611d4e601854611c1b601654601454611b4b90919063ffffffff16565b90506000611d726002611c2884611c28612710601454611acc90919063ffffffff16565b90506000611d9183611c28612710601654611acc90919063ffffffff16565b90506000611db084611c28612710601854611acc90919063ffffffff16565b90506000611dc4612710611c288987611acc565b90506000611dd28883611baa565b600f54909150611df09061010090046001600160a01b0316826122a3565b47611dff84611c1b8888611b4b565b96506000611e1188611c28848a611acc565b600f54909150611e43906001600160a01b0361010090910416611e3c6000546001600160a01b031690565b8684612418565b6010546001600160a01b03166108fc611e608a611c28868b611acc565b6040518115909202916000818181858888f19350505050158015611e88573d6000803e3d6000fd5b506011546001600160a01b03166108fc476040518115909202916000818181858888f19350505050158015611ec1573d6000803e3d6000fd5b5060408051848152602081018490529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050505050505050565b80611f4557611f45601280546013556014805460155560168054601755601880546019556000938490559183905582905555565b6001600160a01b03841660009081526007602052604090205460ff168015611f8657506001600160a01b03831660009081526007602052604090205460ff16155b15611f9b57611f968484846124dc565b612099565b6001600160a01b03841660009081526007602052604090205460ff16158015611fdc57506001600160a01b03831660009081526007602052604090205460ff165b15611fec57611f96848484612625565b6001600160a01b03841660009081526007602052604090205460ff1615801561202e57506001600160a01b03831660009081526007602052604090205460ff16155b1561203e57611f968484846126ec565b6001600160a01b03841660009081526007602052604090205460ff16801561207e57506001600160a01b03831660009081526007602052604090205460ff165b1561208e57611f9684848461274e565b6120998484846126ec565b80611a2757611a27601354601255601554601455601754601655601954601855565b600b54600a546000918291825b600954811015612245578260036000600984815481106120f857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612171575081600460006009848154811061214a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561218757600b54600a54945094505050509091565b6121db60036000600984815481106121af57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611baa565b9250612231600460006009848154811061220557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611baa565b91508061223d81612c88565b9150506120c8565b50600a54600b5461225591611a8a565b82101561226c57600b54600a549350935050509091565b90939092509050565b600081836122965760405162461bcd60e51b81526004016109299190612ae7565b506000611a5e8486612bf7565b6040805160028082526060820183528492600092919060208301908036833701905050905030816000815181106122ea57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561234357600080fd5b505afa158015612357573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237b9190612942565b8160018151811061239c57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac947906123e0908690600090869030904290600401612b6f565b600060405180830381600087803b1580156123fa57600080fd5b505af115801561240e573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a61243b42610168612bdf565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124a357600080fd5b505af11580156124b7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061240e9190612a89565b60006124e6611a67565b905060006124fd6124f684611bec565b8490611baa565b9050600061250b8484611acc565b9050600061251f610f2785610f2188611bec565b6001600160a01b0388166000908152600460205260409020549091506125459086611baa565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546125749083611baa565b6001600160a01b0380891660009081526003602052604080822093909355908816815220546125a39082611b4b565b6001600160a01b0387166000908152600360205260409020556125c685856127df565b6125cf856128be565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161261491815260200190565b60405180910390a350505050505050565b600061262f611a67565b9050600061263f6124f684611bec565b9050600061264d8484611acc565b90506000612661610f2785610f2188611bec565b6001600160a01b0388166000908152600360205260409020549091506126879083611baa565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546126bd9084611b4b565b6001600160a01b0387166000908152600460209081526040808320939093556003905220546125a39082611b4b565b60006126f6611a67565b905060006127066124f684611bec565b905060006127148484611acc565b90506000612728610f2785610f2188611bec565b6001600160a01b0388166000908152600360205260409020549091506125749083611baa565b6000612758611a67565b905060006127686124f684611bec565b905060006127768484611acc565b9050600061278a610f2785610f2188611bec565b6001600160a01b0388166000908152600460205260409020549091506127b09086611baa565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546126879083611baa565b60006128076103e8611c28611c21601854611c1b601654601454611b4b90919063ffffffff16565b905060006128158284611acc565b306000908152600360205260409020549091506128329082611b4b565b3060009081526003602090815260408083209390935560079052205460ff161561288157306000908152600460205260409020546128709083611b4b565b306000908152600460205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006128db6103e8611c2860125485611acc90919063ffffffff16565b905060006128f16128ea611a67565b8390611acc565b600b549091506129019082611baa565b600b55600c54610e2d9083611b4b565b8035801515811461292157600080fd5b919050565b600060208284031215612937578081fd5b8135610ad581612cb9565b600060208284031215612953578081fd5b8151610ad581612cb9565b60008060408385031215612970578081fd5b823561297b81612cb9565b9150602083013561298b81612cb9565b809150509250929050565b6000806000606084860312156129aa578081fd5b83356129b581612cb9565b925060208401356129c581612cb9565b929592945050506040919091013590565b600080604083850312156129e8578182fd5b82356129f381612cb9565b9150612a0160208401612911565b90509250929050565b60008060408385031215612a1c578182fd5b8235612a2781612cb9565b946020939093013593505050565b600060208284031215612a46578081fd5b610ad582612911565b600060208284031215612a60578081fd5b5035919050565b60008060408385031215612a79578182fd5b82359150612a0160208401612911565b600080600060608486031215612a9d578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612acb578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b81811015612b1357858101830151858201604001528201612af7565b81811115612b245783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612bbe5784516001600160a01b031683529383019391830191600101612b99565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612bf257612bf2612ca3565b500190565b600082612c1257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612c3157612c31612ca3565b500290565b600082821015612c4857612c48612ca3565b500390565b600181811c90821680612c6157607f821691505b60208210811415612c8257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c9c57612c9c612ca3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612cce57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e042455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e72b98690cfc1e288a84fa746d49e470128460cebaa866cd908c389345a7c41e64736f6c63430008040033

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

000000000000000000000000cbc4663ba34999eab9fb0cf1f0a49049c88f75fe000000000000000000000000777cf4b480088312677c843bf40dc19ea6c67b130000000000000000000000000c08de3785ac1bdcfff921e706f6729984e0c4cc

-----Decoded View---------------
Arg [0] : ownerAddress (address): 0xCbc4663ba34999EAb9FB0Cf1f0a49049c88f75fE
Arg [1] : _buyBackAddress (address): 0x777cf4B480088312677C843bF40dc19Ea6c67B13
Arg [2] : _marketWallet (address): 0x0c08de3785ac1bdCfFF921e706F6729984e0C4CC

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000cbc4663ba34999eab9fb0cf1f0a49049c88f75fe
Arg [1] : 000000000000000000000000777cf4b480088312677c843bf40dc19ea6c67b13
Arg [2] : 0000000000000000000000000c08de3785ac1bdcfff921e706f6729984e0c4cc


Deployed Bytecode Sourcemap

13008:19803:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21628:262;;;;;;;;;;-1:-1:-1;21628:262:0;;;;;:::i;:::-;;:::i;:::-;;16455:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17367:161;;;;;;;;;;-1:-1:-1;17367:161:0;;;;;:::i;:::-;;:::i;:::-;;;5380:14:1;;5373:22;5355:41;;5343:2;5328:18;17367:161:0;5310:92:1;14300:31:0;;;;;;;;;;;;;;;;;;;12663:25:1;;;12651:2;12636:18;14300:31:0;12618:76:1;19192:87:0;;;;;;;;;;-1:-1:-1;19261:10:0;;19192:87;;16732:95;;;;;;;;;;-1:-1:-1;16812:7:0;;16732:95;;13919:36;;;;;;;;;;-1:-1:-1;13919:36:0;;;;-1:-1:-1;;;;;13919:36:0;;;;;;-1:-1:-1;;;;;4335:32:1;;;4317:51;;4305:2;4290:18;13919:36:0;4272:102:1;17536:313:0;;;;;;;;;;-1:-1:-1;17536:313:0;;;;;:::i;:::-;;:::i;19810:253::-;;;;;;;;;;-1:-1:-1;19810:253:0;;;;;:::i;:::-;;:::i;16641:83::-;;;;;;;;;;-1:-1:-1;16707:9:0;;16641:83;;16707:9;;;;14153:36:1;;14141:2;14126:18;16641:83:0;14108:87:1;20448:547:0;;;;;;;;;;-1:-1:-1;20448:547:0;;;;;:::i;:::-;;:::i;17857:218::-;;;;;;;;;;-1:-1:-1;17857:218:0;;;;;:::i;:::-;;:::i;14010:26::-;;;;;;;;;;;;;;;;18409:374;;;;;;;;;;-1:-1:-1;18409:374:0;;;;;:::i;:::-;;:::i;21003:111::-;;;;;;;;;;-1:-1:-1;21003:111:0;;;;;:::i;:::-;;:::i;19287:515::-;;;;;;;;;;-1:-1:-1;19287:515:0;;;;;:::i;:::-;;:::i;14703:41::-;;;;;;;;;;-1:-1:-1;14703:41:0;;;;;;;;21363:116;;;;;;;;;;-1:-1:-1;21363:116:0;;;;;:::i;:::-;;:::i;20108:332::-;;;;;;;;;;-1:-1:-1;20108:332:0;;;;;:::i;:::-;;:::i;19060:124::-;;;;;;;;;;-1:-1:-1;19060:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;19149:27:0;19125:4;19149:27;;;:18;:27;;;;;;;;;19060:124;21487:133;;;;;;;;;;-1:-1:-1;21487:133:0;;;;;:::i;:::-;;:::i;22075:108::-;;;;;;;;;;-1:-1:-1;22075:108:0;;;;;:::i;:::-;;:::i;14151:33::-;;;;;;;;;;;;;;;;18818:106;;;;;;;;;;-1:-1:-1;18895:21:0;18818:106;;16835:198;;;;;;;;;;-1:-1:-1;16835:198:0;;;;;:::i;:::-;;:::i;1860:157::-;;;;;;;;;;;;;:::i;14634:60::-;;;;;;;;;;;;;;;;14574:53;;;;;;;;;;;;;;;;14441:30;;;;;;;;;;;;;;;;18932:120;;;;;;;;;;-1:-1:-1;18932:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19024:20:0;19000:4;19024:20;;;:11;:20;;;;;;;;;18932:120;1646:79;;;;;;;;;;-1:-1:-1;1684:7:0;1711:6;-1:-1:-1;;;;;1711:6:0;1646:79;;16546:87;;;;;;;;;;;;;:::i;18083:269::-;;;;;;;;;;-1:-1:-1;18083:269:0;;;;;:::i;:::-;;:::i;2757:358::-;;;;;;;;;;;;;:::i;17041:167::-;;;;;;;;;;-1:-1:-1;17041:167:0;;;;;:::i;:::-;;:::i;22195:129::-;;;;;;;;;;-1:-1:-1;22195:129:0;;;;;:::i;:::-;;:::i;2285:89::-;;;;;;;;;;-1:-1:-1;2357:9:0;;2285:89;;13876:36;;;;;;;;;;;;;;;13832:37;;;;;;;;;;-1:-1:-1;13832:37:0;;;;;;;-1:-1:-1;;;;;13832:37:0;;;21898:165;;;;;;;;;;-1:-1:-1;21898:165:0;;;;;:::i;:::-;;:::i;2450:235::-;;;;;;;;;;-1:-1:-1;2450:235:0;;;;;:::i;:::-;;:::i;17216:143::-;;;;;;;;;;-1:-1:-1;17216:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17324:18:0;;;17297:7;17324:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17216:143;13962:35;;;;;;;;;;-1:-1:-1;13962:35:0;;;;-1:-1:-1;;;;;13962:35:0;;;21122:110;;;;;;;;;;-1:-1:-1;21122:110:0;;;;;:::i;:::-;;:::i;21244:107::-;;;;;;;;;;-1:-1:-1;21244:107:0;;;;;:::i;:::-;;:::i;2025:252::-;;;;;;;;;;-1:-1:-1;2025:252:0;;;;;:::i;:::-;;:::i;22473:127::-;;;;;;;;;;-1:-1:-1;22473:127:0;;;;;:::i;:::-;;:::i;22336:125::-;;;;;;;;;;-1:-1:-1;22336:125:0;;;;;:::i;:::-;;:::i;14802:41::-;;;;;;;;;;-1:-1:-1;14802:41:0;;;;;;;;;;;21628:262;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;;;;;;;;;21759:7:::1;:16:::0;;;;21786:13:::1;:28:::0;;;;21825:11:::1;:24:::0;21860:10:::1;:22:::0;21628:262::o;16455:83::-;16492:13;16525:5;16518:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16455:83;:::o;17367:161::-;17442:4;17459:39;988:10;17482:7;17491:6;17459:8;:39::i;:::-;-1:-1:-1;17516:4:0;17367:161;;;;;:::o;17536:313::-;17634:4;17651:36;17661:6;17669:9;17680:6;17651:9;:36::i;:::-;17698:121;17707:6;988:10;17729:89;17767:6;17729:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17729:19:0;;;;;;:11;:19;;;;;;;;988:10;17729:33;;;;;;;;;;:37;:89::i;:::-;17698:8;:121::i;:::-;-1:-1:-1;17837:4:0;17536:313;;;;;:::o;19810:253::-;19877:7;19916;;19905;:18;;19897:73;;;;-1:-1:-1;;;19897:73:0;;7666:2:1;19897:73:0;;;7648:21:1;7705:2;7685:18;;;7678:30;7744:34;7724:18;;;7717:62;-1:-1:-1;;;7795:18:1;;;7788:40;7845:19;;19897:73:0;7638:232:1;19897:73:0;19981:19;20003:10;:8;:10::i;:::-;19981:32;-1:-1:-1;20031:24:0;:7;19981:32;20031:11;:24::i;:::-;20024:31;19810:253;-1:-1:-1;;;19810:253:0:o;20448:547::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20528:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20520:60;;;::::0;-1:-1:-1;;;20520:60:0;;8840:2:1;20520:60:0::1;::::0;::::1;8822:21:1::0;8879:2;8859:18;;;8852:30;8918:29;8898:18;;;8891:57;8965:18;;20520:60:0::1;8812:177:1::0;20520:60:0::1;20596:9;20591:397;20615:9;:16:::0;20611:20;::::1;20591:397;;;20673:7;-1:-1:-1::0;;;;;20657:23:0::1;:9;20667:1;20657:12;;;;;;-1:-1:-1::0;;;20657:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20657:12:0::1;:23;20653:324;;;20716:9;20726:16:::0;;:20:::1;::::0;20745:1:::1;::::0;20726:20:::1;:::i;:::-;20716:31;;;;;;-1:-1:-1::0;;;20716:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;20701:9:::1;:12:::0;;-1:-1:-1;;;;;20716:31:0;;::::1;::::0;20711:1;;20701:12;::::1;;;-1:-1:-1::0;;;20701:12:0::1;;;;;;;;;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;20701:46:0::1;;;;;-1:-1:-1::0;;;;;20701:46:0::1;;;;;;20785:32;20806:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;20785:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;:20:::1;:32::i;:::-;-1:-1:-1::0;;;;;20766:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:51;;;;20836:7:::1;:16:::0;;;;;:20;;;20875:11:::1;:20:::0;;;:28;;-1:-1:-1;;20875:28:0::1;::::0;;20922:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;20922:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20922:15:0;;;;;-1:-1:-1;;;;;;20922:15:0::1;::::0;;;;;20591:397:::1;20448:547:::0;:::o;20653:324::-:1;20633:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20591:397;;;;20448:547:::0;:::o;17857:218::-;988:10;17945:4;17994:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17994:34:0;;;;;;;;;;17945:4;;17962:83;;17985:7;;17994:50;;18033:10;17994:38;:50::i;18409:374::-;988:10;18461:14;18510:19;;;:11;:19;;;;;;;;18509:20;18501:77;;;;-1:-1:-1;;;18501:77:0;;11499:2:1;18501:77:0;;;11481:21:1;11538:2;11518:18;;;11511:30;11577:34;11557:18;;;11550:62;-1:-1:-1;;;11628:18:1;;;11621:42;11680:19;;18501:77:0;11471:234:1;18501:77:0;18589:15;18607:23;18619:10;:8;:10::i;:::-;18607:7;;:11;:23::i;:::-;-1:-1:-1;;;;;18659:15:0;;;;;;:7;:15;;;;;;18589:41;;-1:-1:-1;18659:28:0;;18589:41;18659:19;:28::i;:::-;-1:-1:-1;;;;;18641:15:0;;;;;;:7;:15;;;;;:46;18708:7;;:20;;18720:7;18708:11;:20::i;:::-;18698:7;:30;18752:10;;:23;;18767:7;18752:14;:23::i;:::-;18739:10;:36;-1:-1:-1;;;18409:374:0:o;21003:111::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21072:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;21072:34:0::1;21102:4;21072:34;::::0;;21003:111::o;19287:515::-;19378:7;19417;;19406;:18;;19398:62;;;;-1:-1:-1;;;19398:62:0;;9196:2:1;19398:62:0;;;9178:21:1;9235:2;9215:18;;;9208:30;9274:33;9254:18;;;9247:61;9325:18;;19398:62:0;9168:181:1;19398:62:0;19476:17;19471:324;;19510:15;19528:23;19540:10;:8;:10::i;:::-;19528:7;;:11;:23::i;:::-;19510:41;-1:-1:-1;19566:14:0;;-1:-1:-1;19566:14:0;19471:324;19613:15;19631:23;19643:10;:8;:10::i;19631:23::-;19613:41;;19669:23;19695:51;19707:38;19734:10;:8;:10::i;:::-;19707:22;19721:7;19707:13;:22::i;:::-;:26;;:38::i;:::-;19695:7;;:11;:51::i;:::-;19669:77;-1:-1:-1;19761:22:0;;-1:-1:-1;;19761:22:0;21363:116;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;21441:20:::1;:30:::0;21363:116::o;20108:332::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20189:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20188:21;20180:61;;;::::0;-1:-1:-1;;;20180:61:0;;8840:2:1;20180:61:0::1;::::0;::::1;8822:21:1::0;8879:2;8859:18;;;8852:30;8918:29;8898:18;;;8891:57;8965:18;;20180:61:0::1;8812:177:1::0;20180:61:0::1;-1:-1:-1::0;;;;;20256:16:0;::::1;20275:1;20256:16:::0;;;:7:::1;:16;::::0;;;;;:20;20252:109:::1;;-1:-1:-1::0;;;;;20332:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;20312:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;20293:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;20252:109:::1;-1:-1:-1::0;;;;;20371:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;20371:27:0::1;20394:4;20371:27:::0;;::::1;::::0;;;20409:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;20409:23:0::1;::::0;;::::1;::::0;;20108:332::o;21487:133::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21574:30:0;;;::::1;;::::0;;;:20:::1;:30;::::0;;;;:38;;-1:-1:-1;;21574:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21487:133::o;22075:108::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;22145:21:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;22145:30:0;;::::1;::::0;;;::::1;::::0;;22075:108::o;16835:198::-;-1:-1:-1;;;;;16925:20:0;;16901:7;16925:20;;;:11;:20;;;;;;;;16921:49;;;-1:-1:-1;;;;;;16954:16:0;;;;;:7;:16;;;;;;;16835:198::o;16921:49::-;-1:-1:-1;;;;;17008:16:0;;;;;;:7;:16;;;;;;16988:37;;:19;:37::i;1860:157::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;1967:1:::1;1951:6:::0;;1930:40:::1;::::0;-1:-1:-1;;;;;1951:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1930:40:0;1967:1;;1930:40:::1;2006:1;1981:28:::0;;-1:-1:-1;;;;;;1981:28:0::1;::::0;;1860:157::o;16546:87::-;16585:13;16618:7;16611:14;;;;;:::i;18083:269::-;18176:4;18193:129;988:10;18216:7;18225:96;18264:15;18225:96;;;;;;;;;;;;;;;;;988:10;18225:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18225:34:0;;;;;;;;;;;;:38;:96::i;2757:358::-;2809:14;;-1:-1:-1;;;;;2809:14:0;2827:10;2809:28;2801:76;;;;-1:-1:-1;;;2801:76:0;;12315:2:1;2801:76:0;;;12297:21:1;12354:2;12334:18;;;12327:30;12393:34;12373:18;;;12366:62;-1:-1:-1;;;12444:18:1;;;12437:33;12487:19;;2801:76:0;12287:225:1;2801:76:0;2914:9;;2896:15;:27;2888:78;;;;-1:-1:-1;;;2888:78:0;;6449:2:1;2888:78:0;;;6431:21:1;6488:2;6468:18;;;6461:30;6527:34;6507:18;;;6500:62;-1:-1:-1;;;6578:18:1;;;6571:35;6623:19;;2888:78:0;6421:227:1;2888:78:0;3011:14;;;3003:6;;2982:44;;-1:-1:-1;;;;;3011:14:0;;;;3003:6;;;;-1:-1:-1;;;;;;;;;;;2982:44:0;;3046:14;;;;3037:23;;-1:-1:-1;;;;;;3037:23:0;;;-1:-1:-1;;;;;3046:14:0;;3037:23;;;;3071:36;;;2757:358::o;17041:167::-;17119:4;17136:42;988:10;17160:9;17171:6;17136:9;:42::i;22195:129::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;22285:13:::1;:31:::0;;-1:-1:-1;;;;;;22285:31:0::1;-1:-1:-1::0;;;;;22285:31:0;;;::::1;::::0;;;::::1;::::0;;22195:129::o;21898:165::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;21973:21:::1;:30:::0;;-1:-1:-1;;21973:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22019:36:::1;::::0;5355:41:1;;;22019:36:0::1;::::0;5343:2:1;5328:18;22019:36:0::1;;;;;;;21898:165:::0;:::o;2450:235::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;2531:6:::1;::::0;;;2514:23;;-1:-1:-1;;;;;;2514:23:0;;::::1;-1:-1:-1::0;;;;;2531:6:0;::::1;2514:23;::::0;;;2548:28:::1;::::0;;2599:22:::1;2617:4:::0;2599:15:::1;:22;:::i;:::-;2587:9;:34:::0;2674:1:::1;2658:6:::0;;2637:40:::1;::::0;-1:-1:-1;;;;;2658:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;2637:40:0;2674:1;;2637:40:::1;2450:235:::0;:::o;21122:110::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21189:27:0::1;21219:5;21189:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;21189:35:0::1;::::0;;21122:110::o;21244:107::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;21317:12:::1;:26:::0;21244:107::o;2025:252::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2122:22:0;::::1;2114:73;;;::::0;-1:-1:-1;;;2114:73:0;;8077:2:1;2114:73:0::1;::::0;::::1;8059:21:1::0;8116:2;8096:18;;;8089:30;8155:34;8135:18;;;8128:62;-1:-1:-1;;;8206:18:1;;;8199:36;8252:19;;2114:73:0::1;8049:228:1::0;2114:73:0::1;2224:6;::::0;;2203:38:::1;::::0;-1:-1:-1;;;;;2203:38:0;;::::1;::::0;2224:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;2203:38:0;::::1;2252:6;:17:::0;;-1:-1:-1;;;;;;2252:17:0::1;-1:-1:-1::0;;;;;2252:17:0;;;::::1;::::0;;;::::1;::::0;;2025:252::o;22473:127::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;22562:13:::1;:30:::0;;-1:-1:-1;;;;;22562:30:0;;::::1;;;-1:-1:-1::0;;;;;;22562:30:0;;::::1;::::0;;;::::1;::::0;;22473:127::o;22336:125::-;1773:6;;-1:-1:-1;;;;;1773:6:0;988:10;1773:22;1765:67;;;;-1:-1:-1;;;1765:67:0;;;;;;;:::i;:::-;22424:12:::1;:29:::0;;-1:-1:-1;;;;;;22424:29:0::1;-1:-1:-1::0;;;;;22424:29:0;;;::::1;::::0;;;::::1;::::0;;22336:125::o;24870:337::-;-1:-1:-1;;;;;24963:19:0;;24955:68;;;;-1:-1:-1;;;24955:68:0;;7261:2:1;24955:68:0;;;7243:21:1;7300:2;7280:18;;;7273:30;7339:34;7319:18;;;7312:62;-1:-1:-1;;;7390:18:1;;;7383:34;7434:19;;24955:68:0;7233:226:1;24955:68:0;-1:-1:-1;;;;;25042:21:0;;25034:68;;;;-1:-1:-1;;;25034:68:0;;11912:2:1;25034:68:0;;;11894:21:1;11951:2;11931:18;;;11924:30;11990:34;11970:18;;;11963:62;-1:-1:-1;;;12041:18:1;;;12034:32;12083:19;;25034:68:0;11884:224:1;25034:68:0;-1:-1:-1;;;;;25115:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;25167:32;;12663:25:1;;;25167:32:0;;12636:18:1;25167:32:0;;;;;;;24870:337;;;:::o;25215:1054::-;-1:-1:-1;;;;;25337:18:0;;25329:68;;;;-1:-1:-1;;;25329:68:0;;6855:2:1;25329:68:0;;;6837:21:1;6894:2;6874:18;;;6867:30;6933:34;6913:18;;;6906:62;-1:-1:-1;;;6984:18:1;;;6977:35;7029:19;;25329:68:0;6827:227:1;25329:68:0;-1:-1:-1;;;;;25416:16:0;;25408:64;;;;-1:-1:-1;;;25408:64:0;;10736:2:1;25408:64:0;;;10718:21:1;10775:2;10755:18;;;10748:30;10814:34;10794:18;;;10787:62;-1:-1:-1;;;10865:18:1;;;10858:33;10908:19;;25408:64:0;10708:225:1;25408:64:0;25500:1;25491:6;:10;25483:71;;;;-1:-1:-1;;;25483:71:0;;10319:2:1;25483:71:0;;;10301:21:1;10358:2;10338:18;;;10331:30;10397:34;10377:18;;;10370:62;-1:-1:-1;;;10448:18:1;;;10441:46;10504:19;;25483:71:0;10291:238:1;25483:71:0;-1:-1:-1;;;;;25571:26:0;;;;;;:20;:26;;;;;;;;25570:27;:70;;;;-1:-1:-1;;;;;;25616:24:0;;;;;;:20;:24;;;;;;;;25615:25;25570:70;25567:197;;;25706:12;;25696:6;:22;;25688:64;;;;-1:-1:-1;;;25688:64:0;;11140:2:1;25688:64:0;;;11122:21:1;11179:2;11159:18;;;11152:30;11218:32;11198:18;;;11191:60;11268:18;;25688:64:0;11112:180:1;25688:64:0;25805:24;25820:4;25826:2;25805:14;:24::i;:::-;-1:-1:-1;;;;;26023:24:0;;25903:12;26023:24;;;:18;:24;;;;;;25918:4;;26023:24;;;:50;;-1:-1:-1;;;;;;26051:22:0;;;;;;:18;:22;;;;;;;;26023:50;:75;;;-1:-1:-1;26077:21:0;;;;;;;26023:75;26019:123;;;-1:-1:-1;26125:5:0;26019:123;26220:41;26235:4;26241:2;26245:6;26253:7;26220:14;:41::i;:::-;25215:1054;;;;:::o;33174:192::-;33260:7;33296:12;33288:6;;;;33280:29;;;;-1:-1:-1;;;33280:29:0;;;;;;;;:::i;:::-;-1:-1:-1;33320:9:0;33332:5;33336:1;33332;:5;:::i;:::-;33320:17;33174:192;-1:-1:-1;;;;;33174:192:0:o;23127:164::-;23169:7;23190:15;23207;23226:19;:17;:19::i;:::-;23189:56;;-1:-1:-1;23189:56:0;-1:-1:-1;23263:20:0;23189:56;;23263:11;:20::i;:::-;23256:27;;;;23127:164;:::o;33853:132::-;33911:7;33938:39;33942:1;33945;33938:39;;;;;;;;;;;;;;;;;:3;:39::i;33374:471::-;33432:7;33677:6;33673:47;;-1:-1:-1;33707:1:0;33700:8;;33673:47;33732:9;33744:5;33748:1;33744;:5;:::i;:::-;33732:17;-1:-1:-1;33777:1:0;33768:5;33772:1;33732:17;33768:5;:::i;:::-;:10;33760:56;;;;-1:-1:-1;;;33760:56:0;;9556:2:1;33760:56:0;;;9538:21:1;9595:2;9575:18;;;9568:30;9634:34;9614:18;;;9607:62;-1:-1:-1;;;9685:18:1;;;9678:31;9726:19;;33760:56:0;9528:223:1;32841:181:0;32899:7;;32931:5;32935:1;32931;:5;:::i;:::-;32919:17;;32960:1;32955;:6;;32947:46;;;;-1:-1:-1;;;32947:46:0;;8484:2:1;32947:46:0;;;8466:21:1;8523:2;8503:18;;;8496:30;8562:29;8542:18;;;8535:57;8609:18;;32947:46:0;8456:177:1;33030:136:0;33088:7;33115:43;33119:1;33122;33115:43;;;;;;;;;;;;;;;;;:3;:43::i;22654:220::-;22716:7;22736:18;22757:81;22834:3;22757:72;22769:59;22817:10;;22769:43;22800:11;;22769:26;22781:13;;22769:7;;:11;;:26;;;;:::i;:::-;:30;;:43::i;:59::-;22757:7;;:11;:72::i;:::-;:76;;:81::i;29941:2860::-;30292:28;30323:24;30341:4;30323:9;:24::i;:::-;30292:55;;30388:12;;30364:20;:36;30360:104;;-1:-1:-1;30440:12:0;;30360:104;30518:20;;30570:16;;30494:44;;;;;30570:16;;;;;30569:17;:44;;;;;30603:10;30569:44;:80;;;;;30638:11;-1:-1:-1;;;;;30630:19:0;:4;-1:-1:-1;;;;;30630:19:0;;;30569:80;:118;;;;-1:-1:-1;30666:21:0;;;;30569:118;:189;;;;-1:-1:-1;;;;;;30706:21:0;;30722:4;30706:21;:51;;;;;30745:11;-1:-1:-1;;;;;30731:26:0;:2;-1:-1:-1;;;;;30731:26:0;;30706:51;30704:54;30569:189;30551:2243;;;30973:20;;30950:43;;31041:69;31058:4;31073:13;;;;;;;;;-1:-1:-1;;;;;31073:13:0;31089:20;31041:8;:69::i;:::-;31127:20;31150:46;31185:10;;31150:30;31168:11;;31150:13;;:17;;:30;;;;:::i;:46::-;31127:69;;31211:17;31231:47;31276:1;31231:40;31258:12;31231:22;31249:3;31231:13;;:17;;:22;;;;:::i;:47::-;31211:67;;31293:17;31313:38;31338:12;31313:20;31329:3;31313:11;;:15;;:20;;;;:::i;:38::-;31293:58;;31366:17;31386:37;31410:12;31386:19;31401:3;31386:10;;:14;;:19;;;;:::i;:37::-;31366:57;-1:-1:-1;31452:18:0;31473:44;31513:3;31473:35;:20;31498:9;31473:24;:35::i;:44::-;31452:65;-1:-1:-1;31532:30:0;31565:36;:20;31452:65;31565:24;:36::i;:::-;31710:13;;31532:69;;-1:-1:-1;31679:70:0;;31710:13;;;-1:-1:-1;;;;;31710:13:0;31532:69;31679:22;:70::i;:::-;18895:21;32188:39;32217:9;32188:24;:9;32202;32188:13;:24::i;:39::-;32173:54;-1:-1:-1;32244:31:0;32278:45;32173:54;32278:27;:12;32295:9;32278:16;:27::i;:45::-;32408:13;;32244:79;;-1:-1:-1;32381:88:0;;-1:-1:-1;;;;;32408:13:0;;;;;32424:7;1684;1711:6;-1:-1:-1;;;;;1711:6:0;;1646:79;32424:7;32433:10;32445:23;32381:18;:88::i;:::-;32521:13;;-1:-1:-1;;;;;32521:13:0;:69;32544:45;32576:12;32544:27;:12;32561:9;32544:16;:27::i;:45::-;32521:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32641:12:0;;-1:-1:-1;;;;;32641:12:0;:43;18895:21;32641:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32718:64:0;;;13889:25:1;;;13945:2;13930:18;;13923:34;;;13973:18;;;13966:34;;;32718:64:0;;13877:2:1;13862:18;32718:64:0;;;;;;;30551:2243;;;;;;;;29941:2860;;;;:::o;26350:821::-;26463:7;26458:41;;26485:14;24391:7;;;24373:15;:25;24433:13;;;24409:21;:37;24479:11;;;24457:19;:33;24522:10;;;24501:18;:31;-1:-1:-1;24545:11:0;;;;24567:17;;;;24595:15;;;24621:14;24328:315;26485:14;-1:-1:-1;;;;;26516:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;26540:22:0;;;;;;:11;:22;;;;;;;;26539:23;26516:46;26512:597;;;26579:48;26601:6;26609:9;26620:6;26579:21;:48::i;:::-;26512:597;;;-1:-1:-1;;;;;26650:19:0;;;;;;:11;:19;;;;;;;;26649:20;:46;;;;-1:-1:-1;;;;;;26673:22:0;;;;;;:11;:22;;;;;;;;26649:46;26645:464;;;26712:46;26732:6;26740:9;26751:6;26712:19;:46::i;26645:464::-;-1:-1:-1;;;;;26781:19:0;;;;;;:11;:19;;;;;;;;26780:20;:47;;;;-1:-1:-1;;;;;;26805:22:0;;;;;;:11;:22;;;;;;;;26804:23;26780:47;26776:333;;;26844:44;26862:6;26870:9;26881:6;26844:17;:44::i;26776:333::-;-1:-1:-1;;;;;26910:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;26933:22:0;;;;;;:11;:22;;;;;;;;26910:45;26906:203;;;26972:48;26994:6;27002:9;27013:6;26972:21;:48::i;26906:203::-;27053:44;27071:6;27079:9;27090:6;27053:17;:44::i;:::-;27126:7;27121:42;;27148:15;24705;;24695:7;:25;24747:21;;24731:13;:37;24793:19;;24779:11;:33;24836:18;;24823:10;:31;24651:211;23299:556;23397:7;;23433;;23350;;;;;23451:289;23475:9;:16;23471:20;;23451:289;;;23541:7;23517;:21;23525:9;23535:1;23525:12;;;;;;-1:-1:-1;;;23525:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23525:12:0;23517:21;;;;;;;;;;;;;:31;;:66;;;23576:7;23552;:21;23560:9;23570:1;23560:12;;;;;;-1:-1:-1;;;23560:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23560:12:0;23552:21;;;;;;;;;;;;;:31;23517:66;23513:97;;;23593:7;;23602;;23585:25;;;;;;;23299:556;;:::o;23513:97::-;23635:34;23647:7;:21;23655:9;23665:1;23655:12;;;;;;-1:-1:-1;;;23655:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23655:12:0;23647:21;;;;;;;;;;;;;23635:7;;:11;:34::i;:::-;23625:44;;23694:34;23706:7;:21;23714:9;23724:1;23714:12;;;;;;-1:-1:-1;;;23714:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23714:12:0;23706:21;;;;;;;;;;;;;23694:7;;:11;:34::i;:::-;23684:44;-1:-1:-1;23493:3:0;;;;:::i;:::-;;;;23451:289;;;-1:-1:-1;23776:7:0;;23764;;:20;;:11;:20::i;:::-;23754:7;:30;23750:61;;;23794:7;;23803;;23786:25;;;;;;23299:556;;:::o;23750:61::-;23830:7;;23839;;-1:-1:-1;23299:556:0;-1:-1:-1;23299:556:0:o;33993:278::-;34079:7;34114:12;34107:5;34099:28;;;;-1:-1:-1;;;34099:28:0;;;;;;;;:::i;:::-;-1:-1:-1;34138:9:0;34150:5;34154:1;34150;:5;:::i;11097:636::-;11373:16;;;11387:1;11373:16;;;;;;;;11262:13;;11212:30;;11373:16;11387:1;11373:16;;;;;;;;;;-1:-1:-1;11373:16:0;11349:40;;11418:4;11400;11405:1;11400:7;;;;;;-1:-1:-1;;;11400:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;11400:23:0;;;-1:-1:-1;;;;;11400:23:0;;;;;11444:13;-1:-1:-1;;;;;11444:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11434:4;11439:1;11434:7;;;;;;-1:-1:-1;;;11434:7:0;;;;;;;;;-1:-1:-1;;;;;11434:30:0;;;:7;;;;;;;;;:30;11503:222;;-1:-1:-1;;;11503:222:0;;:64;;;;;;:222;;11582:11;;11608:1;;11652:4;;11679;;11699:15;;11503:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11097:636;;;;:::o;12414:533::-;12627:13;-1:-1:-1;;;;;12684:29:0;;;12722:9;12755:4;12775:11;12577:30;;12887:5;12907:21;:15;12925:3;12907:21;:::i;:::-;12684:255;;;;;;-1:-1:-1;;;;;;12684:255:0;;;-1:-1:-1;;;;;4962:15:1;;;12684:255:0;;;4944:34:1;4994:18;;;4987:34;;;;5037:18;;;5030:34;;;;5080:18;;;5073:34;;;;5144:15;;;5123:19;;;5116:44;5176:19;;;5169:35;;;;4878:19;;12684:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28498:676::-;28600:19;28622:10;:8;:10::i;:::-;28600:32;;28643:23;28669:35;28681:22;28695:7;28681:13;:22::i;:::-;28669:7;;:11;:35::i;:::-;28643:61;-1:-1:-1;28715:15:0;28733:24;:7;28745:11;28733;:24::i;:::-;28715:42;;28768:23;28794:52;28806:39;28833:11;28806:22;28820:7;28806:13;:22::i;28794:52::-;-1:-1:-1;;;;;28875:15:0;;;;;;:7;:15;;;;;;28768:78;;-1:-1:-1;28875:28:0;;28895:7;28875:19;:28::i;:::-;-1:-1:-1;;;;;28857:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28932:7;:15;;;;:28;;28952:7;28932:19;:28::i;:::-;-1:-1:-1;;;;;28914:15:0;;;;;;;:7;:15;;;;;;:46;;;;28992:18;;;;;;;:39;;29015:15;28992:22;:39::i;:::-;-1:-1:-1;;;;;28971:18:0;;;;;;:7;:18;;;;;:60;29042:33;29054:7;29063:11;29042;:33::i;:::-;29086:20;29098:7;29086:11;:20::i;:::-;29139:9;-1:-1:-1;;;;;29122:44:0;29131:6;-1:-1:-1;;;;;29122:44:0;;29150:15;29122:44;;;;12663:25:1;;12651:2;12636:18;;12618:76;29122:44:0;;;;;;;;28498:676;;;;;;;:::o;27802:688::-;27902:19;27924:10;:8;:10::i;:::-;27902:32;;27945:23;27971:35;27983:22;27997:7;27983:13;:22::i;27971:35::-;27945:61;-1:-1:-1;28017:15:0;28035:24;:7;28047:11;28035;:24::i;:::-;28017:42;;28070:23;28096:52;28108:39;28135:11;28108:22;28122:7;28108:13;:22::i;28096:52::-;-1:-1:-1;;;;;28177:15:0;;;;;;:7;:15;;;;;;28070:78;;-1:-1:-1;28177:28:0;;28197:7;28177:19;:28::i;:::-;-1:-1:-1;;;;;28159:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;28237:18;;;;;:7;:18;;;;;:39;;28260:15;28237:22;:39::i;:::-;-1:-1:-1;;;;;28216:18:0;;;;;;:7;:18;;;;;;;;:60;;;;28308:7;:18;;;;:39;;28331:15;28308:22;:39::i;27179:615::-;27277:19;27299:10;:8;:10::i;:::-;27277:32;;27320:23;27346:35;27358:22;27372:7;27358:13;:22::i;27346:35::-;27320:61;-1:-1:-1;27392:15:0;27410:24;:7;27422:11;27410;:24::i;:::-;27392:42;;27445:23;27471:52;27483:39;27510:11;27483:22;27497:7;27483:13;:22::i;27471:52::-;-1:-1:-1;;;;;27552:15:0;;;;;;:7;:15;;;;;;27445:78;;-1:-1:-1;27552:28:0;;27572:7;27552:19;:28::i;29186:747::-;29288:19;29310:10;:8;:10::i;:::-;29288:32;;29331:23;29357:35;29369:22;29383:7;29369:13;:22::i;29357:35::-;29331:61;-1:-1:-1;29403:15:0;29421:24;:7;29433:11;29421;:24::i;:::-;29403:42;;29456:23;29482:52;29494:39;29521:11;29494:22;29508:7;29494:13;:22::i;29482:52::-;-1:-1:-1;;;;;29563:15:0;;;;;;:7;:15;;;;;;29456:78;;-1:-1:-1;29563:28:0;;29583:7;29563:19;:28::i;:::-;-1:-1:-1;;;;;29545:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29620:7;:15;;;;:28;;29640:7;29620:19;:28::i;23863:457::-;23942:12;23957:68;24021:3;23957:59;23969:46;24004:10;;23969:30;23987:11;;23969:13;;:17;;:30;;;;:::i;23957:68::-;23942:83;-1:-1:-1;24036:12:0;24051:21;23942:83;24060:11;24051:8;:21::i;:::-;24124:4;24108:22;;;;:7;:22;;;;;;24036:36;;-1:-1:-1;24108:32:0;;24036:36;24108:26;:32::i;:::-;24099:4;24083:22;;;;:7;:22;;;;;;;;:57;;;;24155:11;:26;;;;;;24151:102;;;24237:4;24221:22;;;;:7;:22;;;;;;:32;;24248:4;24221:26;:32::i;:::-;24212:4;24196:22;;;;:7;:22;;;;;:57;24151:102;24269:43;;12663:25:1;;;24300:4:0;;988:10;;24269:43;;12651:2:1;12636:18;24269:43:0;;;;;;;23863:457;;;;:::o;22882:237::-;22939:12;22954:29;22979:3;22954:20;22966:7;;22954;:11;;:20;;;;:::i;:29::-;22939:44;;22994:12;23009:20;23018:10;:8;:10::i;:::-;23009:4;;:8;:20::i;:::-;23050:7;;22994:35;;-1:-1:-1;23050:17:0;;22994:35;23050:11;:17::i;:::-;23040:7;:27;23091:10;;:20;;23106:4;23091:14;:20::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;977:398::-;1045:6;1053;1106:2;1094:9;1085:7;1081:23;1077:32;1074:2;;;1127:6;1119;1112:22;1074:2;1171:9;1158:23;1190:31;1215:5;1190:31;:::i;:::-;1240:5;-1:-1:-1;1297:2:1;1282:18;;1269:32;1310:33;1269:32;1310:33;:::i;:::-;1362:7;1352:17;;;1064:311;;;;;:::o;1380:466::-;1457:6;1465;1473;1526:2;1514:9;1505:7;1501:23;1497:32;1494:2;;;1547:6;1539;1532:22;1494:2;1591:9;1578:23;1610:31;1635:5;1610:31;:::i;:::-;1660:5;-1:-1:-1;1717:2:1;1702:18;;1689:32;1730:33;1689:32;1730:33;:::i;:::-;1484:362;;1782:7;;-1:-1:-1;;;1836:2:1;1821:18;;;;1808:32;;1484:362::o;1851:325::-;1916:6;1924;1977:2;1965:9;1956:7;1952:23;1948:32;1945:2;;;1998:6;1990;1983:22;1945:2;2042:9;2029:23;2061:31;2086:5;2061:31;:::i;:::-;2111:5;-1:-1:-1;2135:35:1;2166:2;2151:18;;2135:35;:::i;:::-;2125:45;;1935:241;;;;;:::o;2181:325::-;2249:6;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:2;;;2331:6;2323;2316:22;2278:2;2375:9;2362:23;2394:31;2419:5;2394:31;:::i;:::-;2444:5;2496:2;2481:18;;;;2468:32;;-1:-1:-1;;;2268:238:1:o;2511:190::-;2567:6;2620:2;2608:9;2599:7;2595:23;2591:32;2588:2;;;2641:6;2633;2626:22;2588:2;2669:26;2685:9;2669:26;:::i;2992:190::-;3051:6;3104:2;3092:9;3083:7;3079:23;3075:32;3072:2;;;3125:6;3117;3110:22;3072:2;-1:-1:-1;3153:23:1;;3062:120;-1:-1:-1;3062:120:1:o;3187:258::-;3252:6;3260;3313:2;3301:9;3292:7;3288:23;3284:32;3281:2;;;3334:6;3326;3319:22;3281:2;3375:9;3362:23;3352:33;;3404:35;3435:2;3424:9;3420:18;3404:35;:::i;3450:316::-;3538:6;3546;3554;3607:2;3595:9;3586:7;3582:23;3578:32;3575:2;;;3628:6;3620;3613:22;3575:2;3662:9;3656:16;3646:26;;3712:2;3701:9;3697:18;3691:25;3681:35;;3756:2;3745:9;3741:18;3735:25;3725:35;;3565:201;;;;;:::o;3771:395::-;3857:6;3865;3873;3881;3934:3;3922:9;3913:7;3909:23;3905:33;3902:2;;;3956:6;3948;3941:22;3902:2;-1:-1:-1;;3984:23:1;;;4054:2;4039:18;;4026:32;;-1:-1:-1;4105:2:1;4090:18;;4077:32;;4156:2;4141:18;4128:32;;-1:-1:-1;3892:274:1;-1:-1:-1;3892:274:1:o;5639:603::-;5751:4;5780:2;5809;5798:9;5791:21;5841:6;5835:13;5884:6;5879:2;5868:9;5864:18;5857:34;5909:4;5922:140;5936:6;5933:1;5930:13;5922:140;;;6031:14;;;6027:23;;6021:30;5997:17;;;6016:2;5993:26;5986:66;5951:10;;5922:140;;;6080:6;6077:1;6074:13;6071:2;;;6150:4;6145:2;6136:6;6125:9;6121:22;6117:31;6110:45;6071:2;-1:-1:-1;6226:2:1;6205:15;-1:-1:-1;;6201:29:1;6186:45;;;;6233:2;6182:54;;5760:482;-1:-1:-1;;;5760:482:1:o;9756:356::-;9958:2;9940:21;;;9977:18;;;9970:30;10036:34;10031:2;10016:18;;10009:62;10103:2;10088:18;;9930:182::o;12699:983::-;12961:4;13009:3;12998:9;12994:19;13040:6;13029:9;13022:25;13066:2;13104:6;13099:2;13088:9;13084:18;13077:34;13147:3;13142:2;13131:9;13127:18;13120:31;13171:6;13206;13200:13;13237:6;13229;13222:22;13275:3;13264:9;13260:19;13253:26;;13314:2;13306:6;13302:15;13288:29;;13335:4;13348:195;13362:6;13359:1;13356:13;13348:195;;;13427:13;;-1:-1:-1;;;;;13423:39:1;13411:52;;13518:15;;;;13483:12;;;;13459:1;13377:9;13348:195;;;-1:-1:-1;;;;;;;13599:32:1;;;;13594:2;13579:18;;13572:60;-1:-1:-1;;;13663:3:1;13648:19;13641:35;13560:3;12970:712;-1:-1:-1;;;12970:712:1:o;14200:128::-;14240:3;14271:1;14267:6;14264:1;14261:13;14258:2;;;14277:18;;:::i;:::-;-1:-1:-1;14313:9:1;;14248:80::o;14333:217::-;14373:1;14399;14389:2;;-1:-1:-1;;;14424:31:1;;14478:4;14475:1;14468:15;14506:4;14431:1;14496:15;14389:2;-1:-1:-1;14535:9:1;;14379:171::o;14555:168::-;14595:7;14661:1;14657;14653:6;14649:14;14646:1;14643:21;14638:1;14631:9;14624:17;14620:45;14617:2;;;14668:18;;:::i;:::-;-1:-1:-1;14708:9:1;;14607:116::o;14728:125::-;14768:4;14796:1;14793;14790:8;14787:2;;;14801:18;;:::i;:::-;-1:-1:-1;14838:9:1;;14777:76::o;14858:380::-;14937:1;14933:12;;;;14980;;;15001:2;;15055:4;15047:6;15043:17;15033:27;;15001:2;15108;15100:6;15097:14;15077:18;15074:38;15071:2;;;15154:10;15149:3;15145:20;15142:1;15135:31;15189:4;15186:1;15179:15;15217:4;15214:1;15207:15;15071:2;;14913:325;;;:::o;15243:135::-;15282:3;-1:-1:-1;;15303:17:1;;15300:2;;;15323:18;;:::i;:::-;-1:-1:-1;15370:1:1;15359:13;;15290:88::o;15383:127::-;15444:10;15439:3;15435:20;15432:1;15425:31;15475:4;15472:1;15465:15;15499:4;15496:1;15489:15;15515:131;-1:-1:-1;;;;;15590:31:1;;15580:42;;15570:2;;15636:1;15633;15626:12;15570:2;15560:86;:::o

Swarm Source

ipfs://e72b98690cfc1e288a84fa746d49e470128460cebaa866cd908c389345a7c41e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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